<?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>238693</bug_id>
          
          <creation_ts>2022-04-01 19:53:11 -0700</creation_ts>
          <short_desc>Mark String(const char*) constructor as explicit</short_desc>
          <delta_ts>2022-04-05 11:55:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</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>
          <dependson>238162</dependson>
    
    <dependson>238235</dependson>
    
    <dependson>238264</dependson>
    
    <dependson>238336</dependson>
    
    <dependson>238408</dependson>
    
    <dependson>238525</dependson>
    
    <dependson>238530</dependson>
    
    <dependson>238700</dependson>
          <blocked>238701</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1857502</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 19:53:11 -0700</bug_when>
    <thetext>Mark String(const char*) constructor as explicit to encourage developers to use ASCIILiteral and the &quot;&quot;_s suffix more. This constructor should also not be called if the input may contain UTF-8 since it treats input as latin1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857503</commentid>
    <comment_count>1</comment_count>
      <attachid>456430</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 19:54:17 -0700</bug_when>
    <thetext>Created attachment 456430
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857509</commentid>
    <comment_count>2</comment_count>
      <attachid>456431</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 20:10:26 -0700</bug_when>
    <thetext>Created attachment 456431
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857511</commentid>
    <comment_count>3</comment_count>
      <attachid>456433</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 20:19:00 -0700</bug_when>
    <thetext>Created attachment 456433
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857514</commentid>
    <comment_count>4</comment_count>
      <attachid>456434</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 20:32:39 -0700</bug_when>
    <thetext>Created attachment 456434
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857518</commentid>
    <comment_count>5</comment_count>
      <attachid>456437</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 20:40:13 -0700</bug_when>
    <thetext>Created attachment 456437
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857528</commentid>
    <comment_count>6</comment_count>
      <attachid>456441</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 21:00:52 -0700</bug_when>
    <thetext>Created attachment 456441
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857534</commentid>
    <comment_count>7</comment_count>
      <attachid>456443</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 21:42:07 -0700</bug_when>
    <thetext>Created attachment 456443
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857536</commentid>
    <comment_count>8</comment_count>
      <attachid>456445</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 21:50:23 -0700</bug_when>
    <thetext>Created attachment 456445
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857538</commentid>
    <comment_count>9</comment_count>
      <attachid>456446</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 22:26:27 -0700</bug_when>
    <thetext>Created attachment 456446
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857540</commentid>
    <comment_count>10</comment_count>
      <attachid>456448</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 22:43:22 -0700</bug_when>
    <thetext>Created attachment 456448
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857542</commentid>
    <comment_count>11</comment_count>
      <attachid>456449</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 22:53:08 -0700</bug_when>
    <thetext>Created attachment 456449
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857545</commentid>
    <comment_count>12</comment_count>
      <attachid>456451</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 23:23:07 -0700</bug_when>
    <thetext>Created attachment 456451
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857546</commentid>
    <comment_count>13</comment_count>
      <attachid>456452</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-01 23:27:08 -0700</bug_when>
    <thetext>Created attachment 456452
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857588</commentid>
    <comment_count>14</comment_count>
      <attachid>456452</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-02 09:44:29 -0700</bug_when>
    <thetext>Comment on attachment 456452
WIP Patch

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

Super-great; just love this.

Given how many changes there still are here, I still think we might want another round or two of &quot;prep&quot; patch?

The only tricky parts of this patch are places where we add String { } and maybe Latin-1 is not what we want, and it’s still subtle. Would be better if it was named String::fromLatin1, and the places where we add String::fromUTF8 without checking, because Latin-1 conversion can’t fail, but UTF-8 conversion can.

&gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:246
&gt; +    auto fsFile = fileSystemRepresentation(path);

Can fileSystemRepresentation return null when the string is non-null? Just wondering since the code we were deleting did have a check for null. I wonder if we should add checks for null at all the fileSystemRepresentation call sites.

&gt; Source/WTF/wtf/text/WTFString.h:84
&gt;      WTF_EXPORT_PRIVATE String(const LChar* characters);

As another bit of cleanup, not nearly as important as the ASCIILiteral work, I wonder if we really need this one any more; how common is a null-terminated LChar array?

&gt; Source/WTF/wtf/text/WTFString.h:87
&gt; +    // as the String(ASCIILiteral) is more efficient. Also note that this constructor treats input as latin1.

I would write Latin-1 rather than latin1, here and in the other comment above.

&gt; Source/WTF/wtf/text/WTFString.h:89
&gt; +    WTF_EXPORT_PRIVATE explicit String(const char* characters);

I think we should go further and rename this to String::fromLatin1 now that there are so many fewer call sites.

&gt; Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:1100
&gt; +        auto exc = Exception { OperationError, error ? String::fromUTF8(error-&gt;message) : &quot;Unknown Error&quot;_s };

In cases like this I always wonder about the &quot;illegal UTF-8&quot; case where String::fromUTF8 will return null. Obviously not a large concern, but a small simmering worry in the back of my mind.

&gt; Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm:47
&gt; +    ASCIILiteral name = ASCIILiteral::null();

Why doesn’t ASCIILiteral default to null without explicit initialization?

&gt; Source/WebCore/editing/ios/EditorIOS.mm:93
&gt; +    ASCIILiteral newValue = ASCIILiteral::null();

Ditto.

&gt; Source/WebCore/page/DebugPageOverlays.cpp:261
&gt; +        ASCIILiteral key { ASCIILiteral::null() };
&gt; +        ASCIILiteral name { ASCIILiteral::null() };

Same question.

&gt; Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm:59
&gt; +    if ([local compare:wire] ==  NSOrderedSame)

isEqualToString: should be used here instead of compare: since it’s more efficient.

Might also need to add a null check of wire, since I don’t think compare: or isEqualToString: work with nil.

&gt; Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm:68
&gt; +        char localType = [local characterAtIndex:i];
&gt; +        char wireType = [wire characterAtIndex:i];

This chops the characters down to &quot;char&quot;, which is only OK if we are guaranteed the strings contain no non-ASCII characters. Not new, but irritating. I know the people who wrote this originally think the use of strchr is clever, but I would write this:

    auto map = [](unichar character) -&gt; unichar {
        switch (character) {
        case &apos;B&apos;:
            // `bool` and `signed char` are interchangeable.
            return &apos;c&apos;;
        default:
            return character;
        }
    };
    if (map(localType) != map(wireType))
        return false;

Very easy to add any other equivalencies in the same fashion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857590</commentid>
    <comment_count>15</comment_count>
      <attachid>456461</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 10:05:38 -0700</bug_when>
    <thetext>Created attachment 456461
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857594</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 10:26:05 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #14)
&gt; Comment on attachment 456452 [details]
&gt; WIP Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456452&amp;action=review
&gt; 
&gt; Super-great; just love this.
&gt; 
&gt; Given how many changes there still are here, I still think we might want
&gt; another round or two of &quot;prep&quot; patch?

I was waiting to see how big the patch will get. Sadly, the remaining failures are for other ports so I am relying on EWS to find failures for me.
I am hoping to make the constructor explicit as soon as possible though. The longer I wait, the more likely people will introduce new code without ASCIILiteral.

&gt; 
&gt; The only tricky parts of this patch are places where we add String { } and
&gt; maybe Latin-1 is not what we want, and it’s still subtle. Would be better if
&gt; it was named String::fromLatin1, and the places where we add
&gt; String::fromUTF8 without checking, because Latin-1 conversion can’t fail,
&gt; but UTF-8 conversion can.
&gt; 
&gt; &gt; Source/WTF/wtf/posix/FileSystemPOSIX.cpp:246
&gt; &gt; +    auto fsFile = fileSystemRepresentation(path);
&gt; 
&gt; Can fileSystemRepresentation return null when the string is non-null? Just
&gt; wondering since the code we were deleting did have a check for null. I
&gt; wonder if we should add checks for null at all the fileSystemRepresentation
&gt; call sites.

Looking at the Cocoa implementation of fileSystemRepresentation(), I believe it is indeed possible for it to return a null CString() when provided a non-null String as input.

&gt; 
&gt; &gt; Source/WTF/wtf/text/WTFString.h:84
&gt; &gt;      WTF_EXPORT_PRIVATE String(const LChar* characters);
&gt; 
&gt; As another bit of cleanup, not nearly as important as the ASCIILiteral work,
&gt; I wonder if we really need this one any more; how common is a
&gt; null-terminated LChar array?

Agreed, I can look into that in a follow-up. Similarly, AtomString has an implicit constructor from `const char*` too that should probably be explicit.

&gt; 
&gt; &gt; Source/WTF/wtf/text/WTFString.h:87
&gt; &gt; +    // as the String(ASCIILiteral) is more efficient. Also note that this constructor treats input as latin1.
&gt; 
&gt; I would write Latin-1 rather than latin1, here and in the other comment
&gt; above.

Will fix.

&gt; 
&gt; &gt; Source/WTF/wtf/text/WTFString.h:89
&gt; &gt; +    WTF_EXPORT_PRIVATE explicit String(const char* characters);
&gt; 
&gt; I think we should go further and rename this to String::fromLatin1 now that
&gt; there are so many fewer call sites.

I was wondering about the same thing. I like it but I&apos;d probably want to do this separately as this is going to be a fairly large (though mechanical) change.

&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/gstreamer/GStreamerMediaEndpoint.cpp:1100
&gt; &gt; +        auto exc = Exception { OperationError, error ? String::fromUTF8(error-&gt;message) : &quot;Unknown Error&quot;_s };
&gt; 
&gt; In cases like this I always wonder about the &quot;illegal UTF-8&quot; case where
&gt; String::fromUTF8 will return null. Obviously not a large concern, but a
&gt; small simmering worry in the back of my mind.
&gt; 
&gt; &gt; Source/WebCore/accessibility/ios/AXObjectCacheIOS.mm:47
&gt; &gt; +    ASCIILiteral name = ASCIILiteral::null();
&gt; 
&gt; Why doesn’t ASCIILiteral default to null without explicit initialization?

Good question, I think we totally should have a default constructor. It would make ASCIILiteral a bit easier to use.

&gt; 
&gt; &gt; Source/WebCore/editing/ios/EditorIOS.mm:93
&gt; &gt; +    ASCIILiteral newValue = ASCIILiteral::null();
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/page/DebugPageOverlays.cpp:261
&gt; &gt; +        ASCIILiteral key { ASCIILiteral::null() };
&gt; &gt; +        ASCIILiteral name { ASCIILiteral::null() };
&gt; 
&gt; Same question.
&gt; 
&gt; &gt; Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm:59
&gt; &gt; +    if ([local compare:wire] ==  NSOrderedSame)
&gt; 
&gt; isEqualToString: should be used here instead of compare: since it’s more
&gt; efficient.

Good to know, will update.

&gt; 
&gt; Might also need to add a null check of wire, since I don’t think compare: or
&gt; isEqualToString: work with nil.

Ok.

&gt; 
&gt; &gt; Source/WebKit/Shared/API/Cocoa/WKRemoteObjectCoder.mm:68
&gt; &gt; +        char localType = [local characterAtIndex:i];
&gt; &gt; +        char wireType = [wire characterAtIndex:i];
&gt; 
&gt; This chops the characters down to &quot;char&quot;, which is only OK if we are
&gt; guaranteed the strings contain no non-ASCII characters. Not new, but
&gt; irritating. I know the people who wrote this originally think the use of
&gt; strchr is clever, but I would write this:
&gt; 
&gt;     auto map = [](unichar character) -&gt; unichar {
&gt;         switch (character) {
&gt;         case &apos;B&apos;:
&gt;             // `bool` and `signed char` are interchangeable.
&gt;             return &apos;c&apos;;
&gt;         default:
&gt;             return character;
&gt;         }
&gt;     };
&gt;     if (map(localType) != map(wireType))
&gt;         return false;
&gt; 
&gt; Very easy to add any other equivalencies in the same fashion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857595</commentid>
    <comment_count>17</comment_count>
      <attachid>456462</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 10:52:12 -0700</bug_when>
    <thetext>Created attachment 456462
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857604</commentid>
    <comment_count>18</comment_count>
      <attachid>456466</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 12:43:43 -0700</bug_when>
    <thetext>Created attachment 456466
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857605</commentid>
    <comment_count>19</comment_count>
      <attachid>456467</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 12:44:52 -0700</bug_when>
    <thetext>Created attachment 456467
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857614</commentid>
    <comment_count>20</comment_count>
      <attachid>456470</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 13:36:08 -0700</bug_when>
    <thetext>Created attachment 456470
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857619</commentid>
    <comment_count>21</comment_count>
      <attachid>456471</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 14:07:00 -0700</bug_when>
    <thetext>Created attachment 456471
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857621</commentid>
    <comment_count>22</comment_count>
      <attachid>456473</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 14:35:50 -0700</bug_when>
    <thetext>Created attachment 456473
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857624</commentid>
    <comment_count>23</comment_count>
      <attachid>456475</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 14:49:32 -0700</bug_when>
    <thetext>Created attachment 456475
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857627</commentid>
    <comment_count>24</comment_count>
      <attachid>456476</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 15:04:39 -0700</bug_when>
    <thetext>Created attachment 456476
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857631</commentid>
    <comment_count>25</comment_count>
      <attachid>456478</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 15:31:53 -0700</bug_when>
    <thetext>Created attachment 456478
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857632</commentid>
    <comment_count>26</comment_count>
      <attachid>456479</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 15:42:53 -0700</bug_when>
    <thetext>Created attachment 456479
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857636</commentid>
    <comment_count>27</comment_count>
      <attachid>456481</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 15:59:48 -0700</bug_when>
    <thetext>Created attachment 456481
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857638</commentid>
    <comment_count>28</comment_count>
      <attachid>456483</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 16:25:55 -0700</bug_when>
    <thetext>Created attachment 456483
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857639</commentid>
    <comment_count>29</comment_count>
      <attachid>456484</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 16:47:13 -0700</bug_when>
    <thetext>Created attachment 456484
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857640</commentid>
    <comment_count>30</comment_count>
      <attachid>456485</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 17:18:10 -0700</bug_when>
    <thetext>Created attachment 456485
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857641</commentid>
    <comment_count>31</comment_count>
      <attachid>456486</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 17:42:28 -0700</bug_when>
    <thetext>Created attachment 456486
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857642</commentid>
    <comment_count>32</comment_count>
      <attachid>456487</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 18:12:59 -0700</bug_when>
    <thetext>Created attachment 456487
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857643</commentid>
    <comment_count>33</comment_count>
      <attachid>456488</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 18:23:27 -0700</bug_when>
    <thetext>Created attachment 456488
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857644</commentid>
    <comment_count>34</comment_count>
      <attachid>456489</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 19:00:40 -0700</bug_when>
    <thetext>Created attachment 456489
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857647</commentid>
    <comment_count>35</comment_count>
      <attachid>456490</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 19:10:35 -0700</bug_when>
    <thetext>Created attachment 456490
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857648</commentid>
    <comment_count>36</comment_count>
      <attachid>456491</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 19:44:40 -0700</bug_when>
    <thetext>Created attachment 456491
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857653</commentid>
    <comment_count>37</comment_count>
      <attachid>456493</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 20:25:09 -0700</bug_when>
    <thetext>Created attachment 456493
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857654</commentid>
    <comment_count>38</comment_count>
      <attachid>456494</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 20:47:16 -0700</bug_when>
    <thetext>Created attachment 456494
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857657</commentid>
    <comment_count>39</comment_count>
      <attachid>456495</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 21:01:22 -0700</bug_when>
    <thetext>Created attachment 456495
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857658</commentid>
    <comment_count>40</comment_count>
      <attachid>456496</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 22:04:28 -0700</bug_when>
    <thetext>Created attachment 456496
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857660</commentid>
    <comment_count>41</comment_count>
      <attachid>456497</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 22:29:20 -0700</bug_when>
    <thetext>Created attachment 456497
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857662</commentid>
    <comment_count>42</comment_count>
      <attachid>456498</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-02 22:58:40 -0700</bug_when>
    <thetext>Created attachment 456498
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857682</commentid>
    <comment_count>43</comment_count>
      <attachid>456506</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 10:34:45 -0700</bug_when>
    <thetext>Created attachment 456506
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857687</commentid>
    <comment_count>44</comment_count>
      <attachid>456509</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 12:27:37 -0700</bug_when>
    <thetext>Created attachment 456509
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857692</commentid>
    <comment_count>45</comment_count>
      <attachid>456512</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 13:30:38 -0700</bug_when>
    <thetext>Created attachment 456512
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857697</commentid>
    <comment_count>46</comment_count>
      <attachid>456514</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 14:09:58 -0700</bug_when>
    <thetext>Created attachment 456514
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857700</commentid>
    <comment_count>47</comment_count>
      <attachid>456516</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 14:34:52 -0700</bug_when>
    <thetext>Created attachment 456516
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857701</commentid>
    <comment_count>48</comment_count>
      <attachid>456517</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 14:43:30 -0700</bug_when>
    <thetext>Created attachment 456517
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857704</commentid>
    <comment_count>49</comment_count>
      <attachid>456519</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 14:55:26 -0700</bug_when>
    <thetext>Created attachment 456519
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857709</commentid>
    <comment_count>50</comment_count>
      <attachid>456522</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 16:04:44 -0700</bug_when>
    <thetext>Created attachment 456522
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857710</commentid>
    <comment_count>51</comment_count>
      <attachid>456523</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 17:13:24 -0700</bug_when>
    <thetext>Created attachment 456523
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857712</commentid>
    <comment_count>52</comment_count>
      <attachid>456524</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 17:55:06 -0700</bug_when>
    <thetext>Created attachment 456524
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857716</commentid>
    <comment_count>53</comment_count>
      <attachid>456526</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 19:03:17 -0700</bug_when>
    <thetext>Created attachment 456526
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857719</commentid>
    <comment_count>54</comment_count>
      <attachid>456527</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 20:15:17 -0700</bug_when>
    <thetext>Created attachment 456527
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857720</commentid>
    <comment_count>55</comment_count>
      <attachid>456528</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-03 21:25:43 -0700</bug_when>
    <thetext>Created attachment 456528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857948</commentid>
    <comment_count>56</comment_count>
      <attachid>456592</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-04 11:08:52 -0700</bug_when>
    <thetext>Created attachment 456592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857996</commentid>
    <comment_count>57</comment_count>
      <attachid>456606</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-04 12:32:13 -0700</bug_when>
    <thetext>Created attachment 456606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858094</commentid>
    <comment_count>58</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-04 14:52:14 -0700</bug_when>
    <thetext>Patch is ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858151</commentid>
    <comment_count>59</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2022-04-04 16:55:11 -0700</bug_when>
    <thetext>Neat!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858425</commentid>
    <comment_count>60</comment_count>
      <attachid>456606</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-05 10:06:59 -0700</bug_when>
    <thetext>Comment on attachment 456606
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858427</commentid>
    <comment_count>61</comment_count>
      <attachid>456714</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 10:09:08 -0700</bug_when>
    <thetext>Created attachment 456714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858488</commentid>
    <comment_count>62</comment_count>
      <attachid>456714</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 11:54:42 -0700</bug_when>
    <thetext>Comment on attachment 456714
Patch

Clearing flags on attachment: 456714

Committed r292408 (249271@trunk): &lt;https://commits.webkit.org/249271@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858489</commentid>
    <comment_count>63</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-05 11:54:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858491</commentid>
    <comment_count>64</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-05 11:55:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/91307597&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456430</attachid>
            <date>2022-04-01 19:54:17 -0700</date>
            <delta_ts>2022-04-01 20:10:26 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>56688</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAg
IC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJt
aW5hdGVkIHNvdXJjZS4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMpOworCisgICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBl
bmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZm
aXggd2hlbiBwb3NzaWJsZSwKKyAgICAvLyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMg
bW9yZSBlZmZpY2llbnQuIEFsc28gbm90ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlu
cHV0IGFzIGxhdGluMS4KKyAgICAvLyBEZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJp
bmc6OmZyb21VVEY4KCkgaW5zdGVhZC4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQg
U3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3Ry
aW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmlu
Z0ltcGwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5
NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBA
IC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRh
cHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1
QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBw
cm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9Owog
fQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BV
QWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5
YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNw
cApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNh
c2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFs
aWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7
IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5Ogog
ICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0
ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNh
dGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVl
RGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUyNzMyY2Fm
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RD
YWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRh
Y2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVy
LmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3Jt
TmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhPYmplY3RD
YWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlv
bikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBjYXNlIEFY
QWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdlT3Zlcmxh
eUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiOwor
ICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENl
bGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVj
dGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZlUmVnaW9u
Q2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAi
QVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgot
ICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0g
IkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhD
aGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAgICAgICBu
YW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6
Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9
ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhT
b3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFu
Z2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5OCwxNiBA
QCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmpl
Y3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25zIG11c3Qg
dWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24uCiAg
ICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91
bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmljYXRpb24g
bWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhhdCBkb2Vz
IGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25Q
bGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc0Vt
cHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0gbm90aWZp
Y2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0
Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBUbyBzaW11
bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBj
YWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9u
LgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAKIHZvaWQg
QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFY
Q29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9PTClhY2Nl
c3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9u
CiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQYWdlKHNj
cm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmluZyBub3Rp
ZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFY
T2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAgICAgIFtz
ZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1dG8gbm90
aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShB
WE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0ZU5TU3Ry
aW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5n
ZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNzaWJpbGl0
eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJmXSIsIHNj
cm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0
ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0
ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0
aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0
cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmplY3QgaGFu
ZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1wdCBzY3Jv
bGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBA
IFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAg
ICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2Vy
UHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9m
cmFtZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmlu
ZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENPTlRST0xM
RVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5n
IHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZm
ODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9T
Lm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hh
bmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1
ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNo
ICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIx
ICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdy
aXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8vIG5vLW9w
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0
VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAgICAgbmV3
VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRp
bmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQi
OworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3
VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAg
bmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0x
MjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFz
ZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVu
dC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1v
dmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0
eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBp
bXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIg
Ym9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAu
MCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAvLyBSZW1v
dmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQu
IAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0Li5kNDg0
MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBA
IC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3Zl
cmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxvYXRSZWN0
IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZvclNldHRp
bmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFs
KTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gYWN0aXZl
UmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBrZXk7Ci0g
ICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBBU0NJSUxp
dGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFs
IG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZhbHVlIHsgZmFs
c2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3Mg
ewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6
OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQogCi1ib29s
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYg
bmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0
aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYs
NyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkm
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVhclJlY3Qo
ZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkgeworICAg
IGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0
U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9y
OjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAK
ICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAh
dmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24gfHwgIXZhbHVl
Rm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9
IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBn
cmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxv
Y2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIElu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wg
aGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsK
ICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3Jh
ZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVn
aW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIp
KSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50
LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEo
MC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFz
TGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1
KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRp
bmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAg
ICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hp
dGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7
CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3RleHByIGZsb2F0
IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JT
ZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAg
aWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigq
cmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hv
dWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVG
b3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9z
KSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNl
QmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6
ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBk
ZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZv
clNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCku
c2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICAg
ICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEo
cmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJs
YWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJv
cEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0
aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsK
LSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFk
aWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAgICAgICAg
ICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAg
ICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRo
IDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JT
ZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXpl
KCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgIGZsb2F0
IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0
aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNM
aWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAgICAgICAg
Y29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBA
QCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYg
b3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1
cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAgIGlm
ICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IG5v
bmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAg
IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9T
ZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5h
dGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKTsK
QEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VF
dmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VM
b2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7
CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1
ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygi
aG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3
NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29j
b2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdz
QmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5n
c0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwotICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURf
SEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwg
VVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5
KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRG
YW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5
KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJI
ZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQ
aW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFN0YW5kYXJk
Rm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRf
S0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUg
U0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZhbWls
eSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9udEZhbWlseSgi
VGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJI
ZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgxMi4uNWE5
NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQsNyArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUgeyBEZWZh
dWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRX
aXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBT
dHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2VudFR5cGUg
PSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9zTmFt
ZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVz
ZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25G
b3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQog
ewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRy
YWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9V
c2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDEx
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xh
c3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0g
VUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9z
TmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsK
ICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkK
LSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICBy
ZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3Ry
aW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpp
bmRleCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQpAQCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+Vmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxl
ciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAo
cGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3Rp
dmUpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0No
YW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlT
dHJpbmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhlNzIxMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEzLi4w
Y2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4Niw3
ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBw
YWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0
aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9hZGVy
Q2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdMb2Fk
ZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAgIExl
Z2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCAzYjZmZjhhZjIwNmEu
LjU3ZGJhMDNlMWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVu
Y29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJl
KGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogICAgIC8vICJJZiBhbnkg
b2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZh
bGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkp
IHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0g
ICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFp
bHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFs
aWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3
ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0
IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgIC8vICJJZiBhbnkgb2YgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRl
Q29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAg
ICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAg
IG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4i
KTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlv
biBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgwMSw3ICs4MDEs
NyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRl
eHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAg
IC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7Cisg
ICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFp
bHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMw
MGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERp
Y3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uOWE3NjEwNmNhMGZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAt
NTQsMTggKzU0LDE4IEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNv
ZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYg
d2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwg
PT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGNvbXBhcmU6d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0aCgpICE9IHdpcmUu
bGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIg
bG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUgPSB3aXJlW2ldOwor
ICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdl
ciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNoYXIgbG9jYWxUeXBlID0gW2xv
Y2FsIGNoYXJhY3RlckF0SW5kZXg6aV07CisgICAgICAgIGNoYXIgd2lyZVR5cGUgPSBbd2lyZSBj
aGFyYWN0ZXJBdEluZGV4OmldOwogCiAgICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUp
IHsKICAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFu
Z2VhYmxlLgpAQCAtOTcwLDkgKzk3MCw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUlu
dm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNp
Z25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9w
ZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVy
ZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUu
VVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlv
biBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJL
aXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwg
bG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVy
ZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFX
ZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2Fs
TWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVu
YXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhv
ZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVj
dG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlm
IChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5
Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdl
YktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0
dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9j
a1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBi
bG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAg
Ly8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhv
ZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2ws
IHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJp
bmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rvciwg
TlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAo
IW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBb
TlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2Rp
bmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2Nr
QXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsy
NDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVj
dEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJl
LnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9j
a1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGlu
dm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0
dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZv
LT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNT
dHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRl
cmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAo
ZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVk
QmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFp
bGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9j
YWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tT
aWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0
byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2ln
bmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0
ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlC
bG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUo
c2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxG
b3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBb
aW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZv
Y2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNw
ZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmlu
Z10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShO
U0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFk
b3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmll
d0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNWU2Njc4ZmU3M2U1Li41ZjVlMmQ0NTJj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQg
U3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1Q
cmV2aWV3QWN0aW9uKCkKIHsKLSAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJl
ZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVk
Iik7CisgICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2
aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCJfcyk7CiB9CiAKIHZv
aWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uV2l0
aFRhcmdldEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVudElELCBOU1N0cmluZyogZG9jdW1lbnRJ
RCwgdWludDY0X3QgcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwCmluZGV4IDVjYWU4MTlmZDI0NC4uZmQ3MTRhMzA1OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3Rl
bnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpKTsKICNlbmRpZgog
I2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBw
bGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKTsKKyAgICAgICAgc2V0UENNTWFjaFNl
cnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiX3MpOwog
I2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCA3Mjk0OTQxY2FhMmIuLmZiZTAyZWM4ZTNlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTEsNyArMzg1MSw3IEBA
IHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBp
biBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4
Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
Iklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4u
Il9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2
YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5k
IGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQu
LjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6
Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAi
eiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAg
ICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInki
LCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTki
X3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpU
b2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3Ms
Ci0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywg
IktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImki
LAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9z
LCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3
MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xl
VW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAg
ICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5
VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZv
cm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFp
bCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1
cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOwor
ICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwg
IjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVy
eU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAg
ICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlh
UXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFs
dWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1
bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVy
eVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9z
LCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXco
KS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxs
aW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7
CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3
IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2Fk
ZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNp
bXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0
KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7
CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJz
UGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGlj
dG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3Mp
OwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxl
ZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxl
ZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQ
cml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
U1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcg
KzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3Jp
cHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25z
ZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQg
OiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRp
YXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAK
LSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVND
SUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxw
dHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gn
LCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsn
PHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTog
J3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5l
dyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0Pidd
LCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNl
VHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcp
KSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJf
czsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAt
MzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdz
V2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgn
L2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2Zl
dGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBw
SW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3Bv
bnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAg
ewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisg
ICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9y
dCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29m
dFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAg
ICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3Ms
IHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpz
IH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1
OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJ
bml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
U1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2Vw
dGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2
ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5j
IGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRp
YWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0
ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0
cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5
UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFs
dWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJf
cywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBz
Y3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZp
ZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdv
cmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpp
bmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBA
IC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9u
RXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQog
Ci1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBl
cm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09V
UkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4
dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9
IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBA
IC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1z
dGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5Pgog
PGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVy
b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4x
OjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9i
b2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9
IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFt
ZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9D
RE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBl
cm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9z
LCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVU
ZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxs
cHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5k
ZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
QEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7
CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
VGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0
SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2
b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2Vy
Q29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIi
U1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUw
LDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUg
QEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rp
b24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsK
IAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4
OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBt
YWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFs
c2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBs
ZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdv
cmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2Vydmlj
ZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4u
aHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNE
b25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5y
ZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAg
eyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVE
YXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05Njcs
NyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdv
cmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25l
ID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2Vz
cyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFp
bi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkz
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDgg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkK
ICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0s
IHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIi
IH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAg
ICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQv
aHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2lu
Il9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAg
ICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24u
aHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1Pcmln
aW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9o
dG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4i
X3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7
CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAz
M2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNv
dmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAi
LyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENv
bnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcg
KzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0
Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXpl
TWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250
ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3
Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRl
bnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBh
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUg
c2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0Ns
YXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50
TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUg
c2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRl
bGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhb
W0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyAr
MzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9k
ZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBp
UGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAi
VGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9k
ZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAg
ICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJN
b3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5
LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZv
ckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0
IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVl
LCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRl
bnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0p
OwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGlj
eURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dl
YlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2Vu
dCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
</data>
<flag name="commit-queue"
          id="484711"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456431</attachid>
            <date>2022-04-01 20:10:26 -0700</date>
            <delta_ts>2022-04-01 20:35:40 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>63030</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1MGIyZGZm
YmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
X1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQUkVTU19BU0EK
IAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBs
YXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVI
YW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmcKIAogYm9v
bCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYg
ZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBGaWxlQi5pc051
bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAgICBhdXRvIGZp
bGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8gZmlsZUJEZXYg
PSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURldiA9IGdldEZp
bGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChm
aWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAgIHJlc3VsdCA9
IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjExODNhYTdlYjJm
Li5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9s
dW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmso
Y29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiAgICAg
cmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVmUHRyPEdGaWxl
SW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhm
aWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRy
KSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBlbmQ6CiB9CiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZp
bGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgZmlsZVN0
YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDJlMTMx
MjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTgyLDcg
KzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGlu
MSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAvLyBhcyB0aGUg
U3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90ZSB0aGF0IHRo
aXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBEZXZlbG9wZXJz
IG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwog
CiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmlu
Z0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5p
eC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaXgv
TG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygp
CiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBidXQgdGhpcyBp
cyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2VzIHdpbGwgb25s
eSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIGxvZ0Vu
djsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVmNmVlMS4uOTc5
MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0zNDUsOSAr
MzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxl
KQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBm
c0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
TGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAppbmRl
eCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiAg
ICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAgIFN0cmluZyBs
YW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOwor
ICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05B
TUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVf
U0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlOYW1lLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVh
Li5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRl
cikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRh
cHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9w
ZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQog
CiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRh
cHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdh
MmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApA
QCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRh
dGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsg
VmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAg
ICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTky
NmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBu
b3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0
YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUyNzMyY2FmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNo
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hX
cmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdl
dCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhPYmplY3RDYWNo
ZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikK
IHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0
aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZv
Y3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAg
ICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxz
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hh
bmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhM
aXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJf
czsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVj
a2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1l
ID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0
RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3Qq
IG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0
aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAg
Ly8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQg
aXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0
aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxp
bmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5
KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1l
KG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90
aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0
ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxs
CiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgot
ICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpp
bmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9PTClhY2Nlc3Np
YmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiAg
ICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQYWdlKHNjcm9s
bERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmluZyBub3RpZmlj
YXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2Jq
ZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAgICAgIFtzZWxm
IHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1dG8gbm90aWZp
Y2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9i
amVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0ZU5TU3RyaW5n
KCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQo
KV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNzaWJpbGl0eVNj
cm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJmXSIsIHNjcm9s
bFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWRO
b3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0
U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmlu
ZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmplY3QgaGFuZGxl
ZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1wdCBzY3JvbGxp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIFZh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
aWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJp
dmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENPTlRST0xMRVJf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmlu
ZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRi
OS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdl
ZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9
IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0
ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsx
MDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFs
dWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdE
aXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOwor
ICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpM
ZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFs
dWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3
VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdy
aXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5m
b2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVV
bmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxl
LT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBs
ZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9k
eSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCki
KTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUg
cHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAog
ICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0Li5kNDg0MWRm
M2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0y
NTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3Zlcmxh
eSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxvYXRSZWN0IHJl
Y3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZvclNldHRpbmco
Y29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsKTsK
ICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gYWN0aXZlUmVn
aW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBrZXk7Ci0gICAg
ICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBBU0NJSUxpdGVy
YWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG5h
bWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2Ug
fTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpA
QCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJl
Y3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIElu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlM
aXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5n
cykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGly
dHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlm
ICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpn
cmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAg
ICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFs
dWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9y
U2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsm
XSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFk
aWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0
aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFz
TGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAg
ICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGll
bnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9u
ICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7
CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYg
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41
KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGln
aHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6
IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmco
ImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmco
ImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAg
ICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUp
LmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRl
ZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygi
Y2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYg
KHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVn
aW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxk
Q2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JT
ZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQg
PSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAm
JiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIp
ID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZh
dWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNl
dHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6
ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAg
YXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFk
aXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAg
IGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNr
KS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFs
cGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAog
ICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygi
Y29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVu
dCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBo
YXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAg
ICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDog
Y2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0
aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJh
ZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5i
b3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdo
dEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBi
b29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3Zl
cmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNv
clRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICgh
dmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVD
dXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVs
c2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQg
PSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVz
ID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAg
LTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVu
dChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2Nh
dGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAg
ICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZv
clNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92
ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRj
ZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFz
ZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jh
c2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFO
KTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVND
UklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJB
cHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1p
bHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJU
aW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2
ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5n
RmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9u
dEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FU
QUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0Qg
R290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGlt
ZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2
ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgxMi4uNWE5NDg5
MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUgeyBEZWZhdWx0
LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRo
QXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2VudFR5cGUgPSBV
c2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9zTmFtZUZv
clVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJB
Z2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JV
c2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewot
ICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcg
YW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xhc3Np
YygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0gVUlB
cHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9zTmFt
ZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsKICAg
ICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkKLSAg
ICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICByZXR1
cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3RyaW5n
VmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpA
QCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxh
eWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUp
Ci0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQppbmRleCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVx
dWVzdENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91
cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAg
ICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmlj
ZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRv
IGZpbGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0
aC5pc051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6
Z2V0RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYm
IGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9w
ZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JL
ZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhl
NzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29y
ZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
YTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGlu
Z0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAg
TW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3Ry
aW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVs
bHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRl
eCAzYjZmZjhhZjIwNmEuLjU3ZGJhMDNlMWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5
QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwog
ICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmll
ZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0
aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJv
ciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3Io
IlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlk
YXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVy
ZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgIC8v
ICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAg
ICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBj
b3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQg
c3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4
dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAgIC8vICJJZiBh
bnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAo
IXZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNp
emUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3Au
IgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9u
IGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3Io
IlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
aAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0
NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9v
bCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNT
dHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uOWE3NjEwNmNhMGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQpAQCAtNTQsMTggKzU0LDE4IEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9u
YXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxl
KGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsK
LSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGNvbXBhcmU6d2lyZV0gPT0g
IE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxl
bmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxl
bmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9j
YWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7
Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5
cGUgPSB3aXJlW2ldOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAg
IGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNoYXIg
bG9jYWxUeXBlID0gW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV07CisgICAgICAgIGNoYXIgd2ly
ZVR5cGUgPSBbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldOwogCiAgICAgICAgIGlmIChsb2NhbFR5
cGUgIT0gd2lyZVR5cGUpIHsKICAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFy
YCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgpAQCAtOTcwLDkgKzk3MCw4IEBAIHN0YXRpYyBOU0ludm9j
YXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQog
ICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBu
byB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9
IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1
cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7
Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1l
dGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2Nh
bE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJp
bmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVT
aWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBh
bmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9k
IFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3Rv
cikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBh
YTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcg
KzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJl
Z2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBT
dHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2ln
bmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2Nr
SW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNv
bnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5j
b2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEy
IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2ws
IFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29k
aW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRo
b2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpt
ZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwog
ICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3Np
Z25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwog
fQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJL
aXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1
cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8t
PmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJp
bmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFj
ZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAq
d2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpD
VHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmlu
ZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2Nr
U2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsK
IAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAg
ICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2lu
dm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291
bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
V2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUs
IGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VN
ZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVz
Iiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1
cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZh
aWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJs
b2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgs
NyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9i
amVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAg
ICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxD
aGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBf
X05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51
dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwg
Y2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5Qmxv
Y2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWdu
YXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBs
eUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1
dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTpp
bnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNWU2Njc4ZmU3
M2U1Li41ZjVlMmQ0NTJjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjk3LDcg
KzI5Nyw3IEBAIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmZhaWwoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6
OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCkKIHsKLSAgICBwYWdlKCkuc3lzdGVtUHJldmll
d0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9v
a19idXR0b25fdGFwcGVkIik7CisgICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCJfcyk7CiB9CiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1Q
cmV2aWV3QWN0aW9uV2l0aFRhcmdldEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVudElELCBOU1N0
cmluZyogZG9jdW1lbnRJRCwgdWludDY0X3QgcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDVjYWU4MTlmZDI0NC4uZmQ3MTRhMzA1OTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBA
IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eSgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgc2V0UENNTWFjaFNlcnZp
Y2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKTsKKyAgICAg
ICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25k
LnNlcnZpY2UiX3MpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3Mjk0OTQxY2FhMmIuLmZiZTAyZWM4ZTNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4
NTEsNyArMzg1MSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJh
bWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5z
aG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1
dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21h
aW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwog
ICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihM
b2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBA
IHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Iiwg
InoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6
Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9z
LCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVk
bzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAi
VSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisg
ICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAg
ICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAor
ICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0g
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0
OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAg
ICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUi
LCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAg
ICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcg
V2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVz
aW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1Mi
KQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsg
fSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGlj
YXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAo
Qk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsu
ZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVh
dGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJu
IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRl
clZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZh
bHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0
b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5
U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1Yjcu
LjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxp
bmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3
LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVj
dG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGlu
dCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpA
QCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6
KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlk
ZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJp
bmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rp
bmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcg
QEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHls
ZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERy
YXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250
RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBs
ZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2Ny
aXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4
YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBA
IFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFt
ZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5h
dmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJl
ZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyAr
IGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51
bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3Mg
SXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAg
c3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRp
YXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlM
aXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0
ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNh
c2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3Bv
bnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2Ny
aXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYu
YWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgo
bmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25z
ZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAg
ZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgn
L2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20g
c2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8i
X3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRl
bnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAg
ICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNl
cnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBN
dWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAg
IHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sg
IkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwK
KyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMo
W1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRV
cGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdl
dCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qg
c2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9u
c2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3Jp
cHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwi
c3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7
IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAg
eyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAg
ICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAg
ICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAg
c3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQp
CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0g
ICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cu
anMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpz
IH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAg
ICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7
CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1d
OwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1Bs
dWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgK
IDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsK
ICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVs
dFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVz
RGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNz
YWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAg
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcg
KzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50
LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgn
bm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7
CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAg
VEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVz
QXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAg
eyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAg
IHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAg
ICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVj
dCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVu
dGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VP
cmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9y
aWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwg
RmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMu
Z2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVT
T1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0Uo
CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVu
Y3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJD
RSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNz
aW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9z
LCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lv
bgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9D
RE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygK
IDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUn
IGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0
dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEn
PjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNo
YXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48
L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZp
Y2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQor
ICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9m
cmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4
dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNs
ZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpj
bGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdl
YkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5U
ZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIi
KTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJv
d3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3
ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENv
bnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29u
c3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cp
CkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0Ui
OworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVy
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAt
ODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAg
ZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZl
bnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykK
IHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5k
RG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5
dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21h
aW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7
ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0
Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAg
ICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtl
ciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAi
TWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBh
biBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9t
IHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQg
ZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExv
Y2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5o
dG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5
dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVz
IH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAog
ICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3Jp
Z2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJl
Z2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdp
c3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9u
IHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRo
TG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2Fi
OGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAt
ODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNv
b3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAg
IEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9
IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIs
ICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3Jp
Z2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28i
X3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQt
VHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJf
cywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3
YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVy
IHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAg
ICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7
ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9
LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFy
IiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1U
eXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9z
LCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNh
dGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9
IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxz
IiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVj
NmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50
TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9k
ZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9u
RGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRl
bnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBh
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6
ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
aWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmll
d0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0
TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWly
PFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVs
ZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxS
ZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0
aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQ
SSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRv
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRo
b3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVn
YXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21t
ZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRl
cmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8p
OwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZl
Y3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25I
YW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29u
dGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwg
bmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFw
cGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAg
Ly8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRo
ZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBk
ZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAg
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2Jp
bGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNp
bXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAq
dXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNU
X1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
</data>
<flag name="commit-queue"
          id="484714"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456433</attachid>
            <date>2022-04-01 20:19:00 -0700</date>
            <delta_ts>2022-04-01 20:55:09 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>67497</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1MGIyZGZm
YmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
X1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQUkVTU19BU0EK
IAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBs
YXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVI
YW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmcKIAogYm9v
bCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYg
ZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBGaWxlQi5pc051
bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAgICBhdXRvIGZp
bGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8gZmlsZUJEZXYg
PSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURldiA9IGdldEZp
bGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChm
aWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAgIHJlc3VsdCA9
IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjExODNhYTdlYjJm
Li5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9s
dW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmso
Y29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiAgICAg
cmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVmUHRyPEdGaWxl
SW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhm
aWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRy
KSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBlbmQ6CiB9CiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZp
bGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgZmlsZVN0
YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDJlMTMx
MjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTgyLDcg
KzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGlu
MSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAvLyBhcyB0aGUg
U3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90ZSB0aGF0IHRo
aXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBEZXZlbG9wZXJz
IG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwog
CiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmlu
Z0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5p
eC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaXgv
TG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygp
CiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBidXQgdGhpcyBp
cyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2VzIHdpbGwgb25s
eSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIGxvZ0Vu
djsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVmNmVlMS4uOTc5
MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0zNDUsOSAr
MzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxl
KQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBm
c0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
TGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAppbmRl
eCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiAg
ICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAgIFN0cmluZyBs
YW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOwor
ICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05B
TUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVf
U0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlOYW1lLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVh
Li5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRl
cikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRh
cHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9w
ZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQog
CiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRh
cHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdh
MmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApA
QCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRh
dGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsg
VmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAg
ICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTky
NmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBu
b3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0
YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUyNzMyY2FmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNo
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hX
cmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdl
dCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhPYmplY3RDYWNo
ZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikK
IHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0
aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZv
Y3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAg
ICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxz
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hh
bmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhM
aXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJf
czsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVj
a2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1l
ID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0
RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3Qq
IG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0
aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAg
Ly8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQg
aXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0
aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxp
bmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5
KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1l
KG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90
aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0
ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxs
CiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgot
ICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpp
bmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9PTClhY2Nlc3Np
YmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiAg
ICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQYWdlKHNjcm9s
bERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmluZyBub3RpZmlj
YXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2Jq
ZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAgICAgIFtzZWxm
IHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1dG8gbm90aWZp
Y2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9i
amVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0ZU5TU3RyaW5n
KCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQo
KV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNzaWJpbGl0eVNj
cm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJmXSIsIHNjcm9s
bFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWRO
b3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0
U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmlu
ZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmplY3QgaGFuZGxl
ZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1wdCBzY3JvbGxp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIFZh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
aWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJp
dmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENPTlRST0xMRVJf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmlu
ZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRi
OS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdl
ZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9
IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0
ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsx
MDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFs
dWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdE
aXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOwor
ICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpM
ZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFs
dWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3
VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdy
aXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5m
b2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVV
bmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxl
LT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBs
ZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9k
eSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCki
KTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUg
cHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAog
ICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0Li5kNDg0MWRm
M2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0y
NTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3Zlcmxh
eSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxvYXRSZWN0IHJl
Y3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZvclNldHRpbmco
Y29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsKTsK
ICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gYWN0aXZlUmVn
aW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBrZXk7Ci0gICAg
ICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBBU0NJSUxpdGVy
YWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG5h
bWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2Ug
fTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpA
QCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJl
Y3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIElu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFt
ZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlM
aXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5n
cykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGly
dHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlm
ICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ry
b2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpn
cmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAg
ICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFs
dWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9y
U2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsm
XSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFk
aWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0
aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFz
TGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAg
ICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGll
bnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11
bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9u
ICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7
CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYg
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41
KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGln
aHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6
IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmco
ImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmco
ImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAg
ICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUp
LmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRl
ZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygi
Y2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYg
KHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVn
aW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxk
Q2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JT
ZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQg
PSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAm
JiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAg
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIp
ID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZh
dWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNl
dHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6
ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAg
YXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFk
aXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVBy
ZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAg
IGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNr
KS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFs
cGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAog
ICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAg
ICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygi
Y29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVu
dCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBo
YXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAg
ICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDog
Y2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0
aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJh
ZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5i
b3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdo
dEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29u
dGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBi
b29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3Zl
cmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNv
clRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICgh
dmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVD
dXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVs
c2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQg
PSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVz
ID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAg
LTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVu
dChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2Nh
dGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAg
ICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZv
clNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50
OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92
ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRj
ZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFz
ZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jh
c2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFO
KTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVND
UklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJB
cHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1p
bHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJU
aW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2
ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5n
RmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9u
dEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FU
QUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0Qg
R290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGlt
ZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2
ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgxMi4uNWE5NDg5
MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUgeyBEZWZhdWx0
LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRo
QXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2VudFR5cGUgPSBV
c2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9zTmFtZUZv
clVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJB
Z2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JV
c2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewot
ICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcg
YW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xhc3Np
YygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0gVUlB
cHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9zTmFt
ZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsKICAg
ICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkKLSAg
ICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICByZXR1
cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3RyaW5n
VmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpA
QCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxh
eWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUp
Ci0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQppbmRleCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVx
dWVzdENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91
cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAg
ICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmlj
ZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRv
IGZpbGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0
aC5pc051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6
Z2V0RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYm
IGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9w
ZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JL
ZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhl
NzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29y
ZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
YTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGlu
Z0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAg
TW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3Ry
aW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVs
bHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5iMjdi
YjhmYTFmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjUwNiwxMyArMjUwNiwxMyBAQCBzdGF0
aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbHRBdXRvbWF0aW9uQ29va2llKGNvbnN0IFNlc3Npb246
OkNvb2tpZSYgY29va2llKQogICAgIGF1dG8gY29va2llT2JqZWN0ID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygibmFtZSJfcywgY29va2llLm5h
bWUpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJ2YWx1ZSJfcywgY29va2llLnZhbHVl
KTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFs
dWVfb3IoIi8iKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tp
ZS5wYXRoLnZhbHVlX29yKCIvIl9zKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoImRv
bWFpbiJfcywgY29va2llLmRvbWFpbi52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CiAgICAgY29v
a2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUiX3MsIGNvb2tpZS5zZWN1cmUudmFsdWVfb3Io
ZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oImh0dHBPbmx5Il9zLCBjb29r
aWUuaHR0cE9ubHkudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xl
YW4oInNlc3Npb24iX3MsICFjb29raWUuZXhwaXJ5KTsKICAgICBjb29raWVPYmplY3QtPnNldERv
dWJsZSgiZXhwaXJlcyJfcywgY29va2llLmV4cGlyeS52YWx1ZV9vcigwKSk7Ci0gICAgY29va2ll
T2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3Io
Ik5vbmUiKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29r
aWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiX3MpKTsKICAgICByZXR1cm4gY29va2llT2JqZWN0
OwogfQogCkBAIC0yNjkxLDI1ICsyNjkxLDI1IEBAIFNlc3Npb246OklucHV0U291cmNlU3RhdGUm
IFNlc3Npb246OmlucHV0U291cmNlU3RhdGUoY29uc3QgU3RyaW5nJiBpZCkKICAgICByZXR1cm4g
bV9pbnB1dFN0YXRlVGFibGUuZW5zdXJlKGlkLCBbXSB7IHJldHVybiBJbnB1dFNvdXJjZVN0YXRl
KCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGF1dG9tYXRp
b25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKK3N0YXRpYyBBU0NJ
SUxpdGVyYWwgYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291
cmNlKQogewogICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UudHlwZSkgewogICAgIGNhc2UgSW5wdXRT
b3VyY2U6OlR5cGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAiTnVsbCI7CisgICAgICAgIHJldHVy
biAiTnVsbCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpQb2ludGVyOgogICAgICAg
ICBzd2l0Y2ggKGlucHV0U291cmNlLnBvaW50ZXJUeXBlLnZhbHVlX29yKFBvaW50ZXJUeXBlOjpN
b3VzZSkpIHsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6TW91c2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gIk1vdXNlIjsKKyAgICAgICAgICAgIHJldHVybiAiTW91c2UiX3M7CiAgICAgICAgIGNh
c2UgUG9pbnRlclR5cGU6OlRvdWNoOgotICAgICAgICAgICAgcmV0dXJuICJUb3VjaCI7CisgICAg
ICAgICAgICByZXR1cm4gIlRvdWNoIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpQZW46
Ci0gICAgICAgICAgICByZXR1cm4gIlBlbiI7CisgICAgICAgICAgICByZXR1cm4gIlBlbiJfczsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpL
ZXk6Ci0gICAgICAgIHJldHVybiAiS2V5Ym9hcmQiOworICAgICAgICByZXR1cm4gIktleWJvYXJk
Il9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OldoZWVsOgotICAgICAgICByZXR1cm4g
IldoZWVsIjsKKyAgICAgICAgcmV0dXJuICJXaGVlbCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rl
cjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2Us
IGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5z
YXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29w
eVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24K
ICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2Zp
ZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5h
dGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJy
b3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9y
KCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxp
ZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1
cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAg
ICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24s
IGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFu
ZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFs
aWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAt
NDQsNSArNDQsNSBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJik7Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5n
ICosIE5TU3RyaW5nICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjlhNzYxMDZj
YTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0LDE4ICs1NCwxOCBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6
RGljdGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwg
aWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1l
dGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9j
YWwpCiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBjb21wYXJlOndp
cmVdID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChs
b2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0g
d2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFy
IHdpcmVUeXBlID0gd2lyZVtpXTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0
aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAg
ICBjaGFyIGxvY2FsVHlwZSA9IFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldOworICAgICAgICBj
aGFyIHdpcmVUeXBlID0gW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXTsKIAogICAgICAgICBpZiAo
bG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7CiAgICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWdu
ZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KQEAgLTk3MCw5ICs5NzAsOCBAQCBzdGF0aWMg
TlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVj
b2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlv
biBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWdu
YXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9k
U2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4
U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShy
ZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmlu
ZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90
eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAi
TG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9y
IG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8g
c2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
aW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAg
LTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVP
YmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCi1z
dGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwg
c2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0cmluZyAqcmVwbHlC
bG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdl
ciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJpdGVkIG1ldGhvZDoK
ICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9jb2xfZ2V0TWV0aG9k
VHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0xOTcsMTIg
KzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnBy
b3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNTRVJUKG1ldGhvZFR5
cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNpZ25hdHVyZSAqdGFy
Z2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpD
VHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0TWV0aG9kU2lnbmF0
dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0TWV0aG9kU2lnbmF0
dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0luZGV4XS5fdHlwZVN0
cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29u
c3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2Nr
U2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVw
bHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKLSAgICAg
ICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtp
bnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKKyAgICAgICAgTlNT
dHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVX
aXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5
cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVw
bHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3Rv
ciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUuaXNOdWxsKCkpIHsK
KyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAgICAgICAgICBOU0xv
ZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1
cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUod2lyZUJsb2NrU2ln
bmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAgICAgTlNMb2coQCJf
aW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAl
cyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0
aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlQCAhPSAlQCIs
IHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpA
QCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpS
ZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgIH07CiAK
ICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFJlcGx5Qmxv
Y2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAgICBpZCByZXBseUJs
b2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3aXJlQmxvY2tTaWdu
YXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJl
cGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgeworICAgICAgICBpZCBy
ZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayhbd2lyZUJs
b2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3Ry
eSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CiAgICAgICAg
ICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9j
XSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBm
b3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVl
NjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAg
LTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250
cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3Rl
bVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9x
dWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9u
VHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRv
bl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2Vy
U3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJ
RCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1h
Y2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7
CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVj
OGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJh
bWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChm
cmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0
byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91
bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFp
biB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0df
RVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcx
MywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFu
ZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUr
MDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRm
b3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAg
ICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBs
YXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZ
Il9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZp
ZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAot
ICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAi
YiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2Niwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRh
bGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAg
QCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywK
KyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAg
ICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9z
LAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAg
U3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxk
QXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBo
b25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9u
TmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0
aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYy
YmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3
IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNl
dDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAg
IHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVu
dC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0
ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/
ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVk
aWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3
ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcg
QEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3Ry
aW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGll
bnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBp
bmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1Zp
ZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0
aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMz
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0
T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Q
cml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBV
VEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlk
ZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyAr
MTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5n
ICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamki
KTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWls
eSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0
aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4
YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NU
aHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1Ro
cmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRh
c2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9y
U2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFt
ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29w
eUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9z
KSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1
Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJl
YWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJl
bmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25z
IGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9y
U2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZD
KQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5t
bQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cu
anMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAg
YWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZl
dGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpA
QCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVz
cG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9
IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJl
c3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAg
IGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQu
cmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRo
ZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7
CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVy
dChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9
KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2Ui
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAg
ICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRB
bGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVT
VChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3Jr
ZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0g
ICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7Cisg
ICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJf
czsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIi
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIv
ZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0
byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEy
IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlh
dGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhciog
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhl
dGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0
ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIs
IHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwog
CkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVu
dGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVx
dWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19I
QVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRW
YWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01
ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9z
Y3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNo
YXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFz
ZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGlu
dGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJp
dmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50
LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VS
Q0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7
CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0
KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVs
dFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1
bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1
ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlh
dGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJl
IGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMy
NGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVT
VChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJt
aXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVu
dCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciog
bWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5
dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAt
MzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwv
c2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmlj
ZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVz
IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFp
bkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFt
ZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8v
MTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAu
MC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0
dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NE
T0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RP
Q0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygK
IDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7
CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwg
eyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9
CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxs
cHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAi
L2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRi
MTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBA
IEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3Rp
bmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEki
X3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNv
cmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0g
ICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAK
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2Ny
aXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAog
fQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwv
c2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2Ny
aXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3Jp
cHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
L21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVz
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0
ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkx
Myw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxs
b3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhw
ZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAg
ICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciBy
ZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVs
bG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYs
OCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdv
cmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywg
eyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAi
Q29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5
dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0
ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNz
YWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwg
Q29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwg
eyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRt
bCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0s
CiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAt
ODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9m
UFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwi
LCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9
LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVy
IHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50
LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJz
YW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
Il9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwK
ICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2
ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsy
NDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFs
KQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3ND
cmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQog
ICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYy
MmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJl
dGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2Rl
PiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9
IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUo
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsx
ODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Vmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVu
dE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAy
NCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRl
bnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRN
b2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAy
NCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVm
YXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAg
IGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMp
CiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAot
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dT
aXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0
QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3Rv
cCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRv
clVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3No
IiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJl
ZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAg
ICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1l
IGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAg
ICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9i
aWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxd
OwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFn
ZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1v
YmlsZSJdKTsK
</data>
<flag name="commit-queue"
          id="484721"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456434</attachid>
            <date>2022-04-01 20:32:39 -0700</date>
            <delta_ts>2022-04-01 20:40:13 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>78101</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1MGIyZGZm
YmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0Rv
bGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
X1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQUkVTU19BU0EK
IAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxG
cmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBs
YXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0
ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVt
LmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVudHNUb0ZpbGVI
YW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRhcmcKIAogYm9v
bCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0IFN0cmluZyYg
ZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24o
ZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBGaWxlQi5pc051
bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAgICBhdXRvIGZp
bGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8gZmlsZUJEZXYg
PSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURldiA9IGdldEZp
bGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChm
aWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAgIHJlc3VsdCA9
IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxl
U3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjExODNhYTdlYjJm
Li5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBP
UlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3Qg
U3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9s
dW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6
Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitXVEZf
RVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmso
Y29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGli
LmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvZ2xp
Yi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVhZEZyb21GaWxl
KFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiAgICAg
cmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChj
b25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9IGFkb3B0R1Jl
ZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVmUHRyPEdGaWxl
SW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0ZW1faW5mbyhm
aWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRyLCBudWxscHRy
KSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4
L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9T
SVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBlbmQ6CiB9CiAj
ZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZp
bGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+
IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0YXQgZmlsZVN0
YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAtMSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDJlMTMx
MjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTgyLDcg
KzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3aXRoIGxhdGlu
MSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8gVGhpcyBjb25z
dHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1c2UgQVNDSUlM
aXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAvLyBhcyB0aGUg
U3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90ZSB0aGF0IHRo
aXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBEZXZlbG9wZXJz
IG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4KKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwog
CiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmlu
Z0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5p
eC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaXgv
TG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZlbFN0cmluZygp
CiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBidXQgdGhpcyBp
cyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2VzIHdpbGwgb25s
eSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIGxvZ0Vu
djsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwIGIvU291
cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVmNmVlMS4uOTc5
MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBAIC0zNDUsOSAr
MzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxl
KQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBm
c0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLCBGaWxl
T3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4v
TGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAppbmRl
eCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiAg
ICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAgIFN0cmluZyBs
YW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOwor
ICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05B
TUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVf
U0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlOYW1lLmlzRW1w
dHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFw
aGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVh
Li5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0z
OSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRl
cikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRh
cHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9w
ZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQog
CiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRh
cHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdh
MmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Z3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApA
QCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRh
dGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsg
VmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAg
ICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTky
NmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBu
b3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0
YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUyNzMyY2FmMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNo
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hX
cmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdl
dCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhPYmplY3RDYWNo
ZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikK
IHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0
aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZv
Y3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAg
ICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxz
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hh
bmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhM
aXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJf
czsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVj
a2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1l
ID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0
RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3Qq
IG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0
aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAg
Ly8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQg
aXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0
aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxp
bmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5
KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1l
KG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90
aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0
ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxs
CiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgot
ICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpp
bmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9PTClhY2Nlc3Np
YmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiAg
ICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQYWdlKHNjcm9s
bERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmluZyBub3RpZmlj
YXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2Jq
ZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAgICAgIFtzZWxm
IHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1dG8gbm90aWZp
Y2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9i
amVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0ZU5TU3RyaW5n
KCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQo
KV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNzaWJpbGl0eVNj
cm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJmXSIsIHNjcm9s
bFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWRO
b3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0
U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmlu
ZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmplY3QgaGFuZGxl
ZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1wdCBzY3JvbGxp
bmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIFZh
bHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9N
V3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAg
aWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJp
dmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFt
ZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENPTlRST0xMRVJf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmlu
ZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAg
ICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRi
OS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdl
ZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9
IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0
ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsx
MDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9S
aWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFs
dWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdE
aXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOwor
ICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpM
ZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFs
dWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3
VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMs
NyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdy
aXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5m
b2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVV
bmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxl
LT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBs
ZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9k
eSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCki
KTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUg
cHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAog
ICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRiNmQwZTViNDQ0Ny4uMDE4MjhlZjcy
M2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE5Nyw3
ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAgICAgICAgIHJldHVybiB1cmwu
c3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKSArICIuLi4i
OwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgICAgIHJldHVybiAiW3Vy
bF0iOworICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwogI2VuZGlmCiAgICAgfQogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0Li5k
NDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
CkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQYWdl
T3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxvYXRS
ZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZvclNl
dHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRl
cmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gYWN0
aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBrZXk7
Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBBU0NJ
SUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlMaXRl
cmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZhbHVlIHsg
ZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGlu
Z3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQogCi1i
b29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmco
QVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDogbV9z
ZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0
MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVhclJl
Y3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkgewor
ICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRleHQu
c2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENv
bG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9u
T3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
CiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lvbiB8
fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24gfHwgIXZh
bHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRpZW50RGF0
YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFsRGF0
YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9tb3Vz
ZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lk
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0gKGJv
b2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGEp
IHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUo
Z3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBpZiAo
cmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xp
cCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCJf
cykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAgIGdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwg
aGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgw
LjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNl
dHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNl
dHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAg
ICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6
d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkg
fSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3RleHByIGZs
b2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVG
b3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0
dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAgICAg
ICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lv
bigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAh
c2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3Jh
ZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNo
Il9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hvdWxk
VXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAg
ICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFs
U2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkg
OiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1
ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0
KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAg
ICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERh
dGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAgICAg
ICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNr
ZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9y
V2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBmYWxz
ZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0
dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BH
cmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAgICAg
ICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsKIAog
ICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBw
YXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVG
b3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5z
aXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgIGZs
b2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICog
cGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVz
OwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudCho
YXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAgICAg
ICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1MjIs
OSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3Zlcmxh
eSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+
IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAg
IGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9
IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQor
ICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vyc29y
VG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nvb3Jk
aW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigp
KTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91
c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1fbW91
c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0
ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVudC50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2
YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGlu
ZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmluZGV4
IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNldHRp
bmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBTZXR0
aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwot
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJ
RURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9O
IiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhlZEZv
bnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250RmFt
aWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5
KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5
KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwor
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVTQ1JJ
UFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBw
bGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZh
bWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9udEZhbWls
eSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5
KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgxMi4u
NWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUgeyBE
ZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2VudFR5
cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9z
TmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFtZUZv
clVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNp
b25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29u
c3QgSW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQo
KQogewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4g
ImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0
LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlz
Q2xhc3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0g
IT0gVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5n
IG9zTmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkK
IHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUo
KSkKLSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAg
ICByZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMg
U3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJv
bGxlciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBp
ZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tB
Y3RpdmUpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFj
a0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbQppbmRleCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsK
LSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmls
ZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAg
ICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFm
aWxlUGF0aC5pc051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5
c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2
aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9z
ZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgp
XSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5j
MjBlYzhlNzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQ
YXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhy
b3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQot
ICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7
CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVt
cHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3Rp
bmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXgg
NTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
Q29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNw
cApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRy
PEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFl
cnJvck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2Jq
ZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5n
ZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2Ui
KTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3Nh
Z2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNjNS4uZDcxZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lv
bi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRz
KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2Ny
aXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIp
OworICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNw
b25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dp
bmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21t
YW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246
OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+
Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9
IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAg
ICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5r
bm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsK
KyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJf
cyk7CiAgICAgICAgICAgICBpZiAoIXVybCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtu
b3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBA
QCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAg
aWYgKHggJiYgeSkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4
LnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZh
bHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFs
dWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1
ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZN
b3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAgICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWln
aHQpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFs
dWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdo
dC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3Ms
IHdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWln
aHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVj
dCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dTaXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9o
b3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4
dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29t
bWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0ZpbGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVs
ZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmls
ZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2Fk
U2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYg
KGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlw
ZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0
cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAg
ICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7
CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRs
ZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1
NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1l
bnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJs
ZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlm
IChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1lbnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAg
ICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVt
ZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAg
ICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIKLSAgICAgICAgIn0iOworICAgICAgICAifSJfczsK
IAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxC
cm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Np
b246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgYXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxl
bWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYg
KCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmls
aXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRo
aXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1Nj
cmlwdFtdID0KKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3Jp
cHQgPQogICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAg
ICAgICAgICAgICAgICAgICAgIiAgICBsZXQgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8
IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVu
dCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lv
bjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcm
IHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2Vs
ZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5sZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsi
CiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVt
ZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25h
bWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxlJywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZv
Y3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAgICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAg
ICAgIn0iX3M7CiAKICAgICAgICAgICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRl
RWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEz
IEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3Qg
U2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBj
b29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29r
aWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUu
cGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJf
cywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iX3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0
cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsK
ICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52
YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHki
X3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNvb2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBjb29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAg
ICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52
YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUi
X3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29r
aWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzggKzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3Vy
Y2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3VyY2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAg
IHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5lbnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291
cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciog
YXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYg
aW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2Fz
ZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAg
ICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6
CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRl
clR5cGU6Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAg
ICAgICAgIHJldHVybiAiTW91c2UiOworICAgICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAg
ICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNo
IjsKKyAgICAgICAgICAgIHJldHVybiAiVG91Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5
cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVybiAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAi
UGVuIl9zOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6
OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJuICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAi
S2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAg
IHJldHVybiAiV2hlZWwiOworICAgICAgICByZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0
b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3
cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3Bv
cnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICBy
ZXR1cm4gIlBvaW50ZXIiOworICAgICAgICByZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQ
b2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOwor
ICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1
ZTQ0MDY3ZWYwYTIuLmMzMDEwODU5M2VmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9X
ZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZp
Y2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJn
dlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgcG9ydFN0
cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVz
ZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYg
KCFwcm94eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJv
eHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNv
Y2tzUHJveHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICghc29ja3NQcm94
eSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9i
amVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAg
ICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Zl
cnNpb24iKTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJz
aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcy
LDMwICs4NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3Rv
cjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVz
LnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChjYXBh
YmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsK
KyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFu
ZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQg
bm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVl
X29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxv
YWRTdHJhdGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUi
X3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0
cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1h
bCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2Fk
U3RyYXRlZ3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2Vy
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICghY2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rl
ci5tbQppbmRleCAzYjZmZjhhZjIwNmEuLjU3ZGJhMDNlMWUzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbW1hbmRFbmNv
ZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJj
ZSwgY29ucwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1
bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2Us
IGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRh
dGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNv
bgogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlz
ZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBl
cnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4
dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAg
IC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIK
ICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBA
IC00NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJp
bmcgKiwgTlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uOWE3NjEw
NmNhMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tS
ZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNTQsMTggKzU0LDE4IEBAIHN0YXRpYyBSZWZQdHI8QVBJ
OjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAq
LCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wg
bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICps
b2NhbCkKIHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGNvbXBhcmU6
d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGxvY2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAh
PSB3aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVu
Z3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNo
YXIgd2lyZVR5cGUgPSB3aXJlW2ldOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVu
Z3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIGNoYXIgbG9jYWxUeXBlID0gW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV07CisgICAgICAg
IGNoYXIgd2lyZVR5cGUgPSBbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldOwogCiAgICAgICAgIGlm
IChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKICAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNp
Z25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgpAQCAtOTcwLDkgKzk3MCw4IEBAIHN0YXRp
YyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpk
ZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0
aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNp
Z25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRo
b2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVU
RjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxl
KHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3Ry
aW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0u
X3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhj
ZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6
QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBm
b3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihu
byBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpA
QCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90
ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAK
LXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNF
TCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBs
eUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRl
Z2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9k
OgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRo
b2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5Nywx
MiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAq
cHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9k
VHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0
YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9i
akNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWdu
YXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWdu
YXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBl
U3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihj
b25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxv
Y2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpy
ZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAg
ICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUo
W2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBO
U1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5f
dHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSBy
ZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVj
dG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkg
eworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5T
TG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25h
dHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tT
aWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhA
Il9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6
ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxv
Y2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VN
ZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVA
Iiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6
OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsK
IAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlC
bG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5
QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1Np
Z25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwg
cmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlk
IHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJl
QmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lz
dHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAg
ICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxs
b2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9u
IGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXgg
NWU2Njc4ZmU3M2U1Li41ZjVlMmQ0NTJjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpA
QCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmZhaWwoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCkKIHsKLSAgICBwYWdlKCkuc3lz
dGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2Fy
X3F1aWNrbG9va19idXR0b25fdGFwcGVkIik7CisgICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rp
b25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0
dG9uX3RhcHBlZCJfcyk7CiB9CiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdn
ZXJTeXN0ZW1QcmV2aWV3QWN0aW9uV2l0aFRhcmdldEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVu
dElELCBOU1N0cmluZyogZG9jdW1lbnRJRCwgdWludDY0X3QgcGFnZUlEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDVjYWU4MTlmZDI0NC4uZmQ3MTRhMzA1
OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3
ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgc2V0UENN
TWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2Ui
KTsKKyAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0
cmlidXRpb25kLnNlcnZpY2UiX3MpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3Mjk0OTQxY2FhMmIuLmZiZTAy
ZWM4ZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTM4NTEsNyArMzg1MSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJG
cmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYg
KGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxl
IHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1i
b3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9t
YWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAg
ICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBm
b3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSAr
NzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21t
YW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIs
IDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7Cisg
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAi
VSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0g
ICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktl
eVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIs
Ci0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3Ms
ICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJ
dGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAg
ICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRm
b3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9z
LAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAg
ICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUi
X3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBA
QCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91
bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJp
UGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRp
b25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRX
aXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEy
NjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2
LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVu
dCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0g
ICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3Vt
ZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxs
cHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVl
cnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygp
ID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZSht
ZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAx
MDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUs
NyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhT
dHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNs
aWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3Ry
aW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAK
IGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5n
VmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9j
YXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVh
MzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9z
ZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5n
IFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJy
aWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3
ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJp
bmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNw
bGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9q
aSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFt
aWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2
MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9z
c1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3Nz
VGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFk
VGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0
b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBu
YW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBj
b3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNv
cHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VS
VF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAi
X3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0
cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1Ro
cmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZl
cmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlv
bnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1T
VkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVw
b3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0
Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0
aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAog
PHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAg
ICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsK
KylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywg
RmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07
CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSBy
ZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpz
ID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
ICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAo
cmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAg
ICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
IjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkg
PT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFs
ZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1s
J30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25z
ZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAg
ICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2
ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpz
ID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVz
cG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3Rl
ZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBU
RVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdv
cmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAK
LSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsK
KyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
Il9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZl
ciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVu
dC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsg
Ii9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8
L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8
c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAg
IH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBh
dXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIs
MTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0
aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUu
Z2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50
LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50
aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSki
OworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcg
QmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dC
eXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAg
ICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0
ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7
CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcElu
aXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0g
fSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5T
V0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElk
ZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpy
ZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6
JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdL
X0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVs
dFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAg
LTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8
L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3Qg
Y2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29u
c3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAo
IXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8g
aW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQ
cml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2Fn
ZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2Vy
dmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5n
ZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFp
blNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZh
dWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVm
YXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0
aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8g
YmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4u
MzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBU
RVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBl
cm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2
ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWlu
Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBA
IC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAog
PC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2
aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0
ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dL
V2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBA
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50
YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZy
YW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcu
MC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6
aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RP
Q0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9D
RE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9D
KAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJf
czsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQog
ewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8i
LCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9
IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51
bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7
ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2
ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQg
QEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVz
dGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQ
SSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVz
dFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2Vi
Q29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsK
LSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3Nl
clByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0K
IAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJT
Y3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250
cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBk
CiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlw
dD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAog
PC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAK
IGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9z
Y3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNo
YXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNj
cmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VX
b3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFp
bkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0
ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJz
aXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAt
OTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBF
eHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5Lgot
ICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2Vy
IHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBI
ZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1
Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAot
ICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9z
LCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7
ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0
Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJz
aXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
c291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwi
LCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9w
ZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIv
c291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5o
dG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3Nz
LU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0g
fSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBA
IC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNl
T2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRt
bCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9
IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2
ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Iiwg
InNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0
bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3Mt
T3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9
LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcw
ODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcg
KzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRp
YWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vz
c0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAg
ICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9
CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJv
Y2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXgg
ZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgot
UmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1v
ZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXpl
ID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0
ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcg
KzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxD
b250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250
ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgx
MDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVu
dE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgx
MDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihk
ZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0
aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZl
cnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRo
cykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwog
Ci0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBD
R1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJL
aXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6
QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNr
dG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdh
dG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRv
c2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQ
cmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkK
ICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5h
bWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0g
ICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJN
b2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250
ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5p
bF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2Vy
QWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAi
TW9iaWxlIl0pOwo=
</data>
<flag name="commit-queue"
          id="484716"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456437</attachid>
            <date>2022-04-01 20:40:13 -0700</date>
            <delta_ts>2022-04-01 21:00:52 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>78907</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4
IDUwYjJkZmZiYzFmNy4uYTc0NjZjOTcyNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yODc0LDcgKzI4NzQsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT05fV0lUSF9BVFRSSUJVVEVTKGZ1bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUsIFNVUFBS
RVNTX0FTQQogCiAjZWxzZSAvLyBub3QgRU5BQkxFKEFTU0VNQkxFUikKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgcGxhdGZvcm0iKTsKKyAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9y
IHRoaXMgcGxhdGZvcm0iX3MpOwogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzFlNGRjZmE1Y2Q2Li4zOWYyZTJjYTJhMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCkBAIC0yODYsMTYgKzI4NiwxMyBAQCBib29sIGFwcGVuZEZpbGVDb250ZW50
c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFy
ZwogCiBib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3Qg
U3RyaW5nJiBmaWxlQikKIHsKLSAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUEpOwotICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlQik7Ci0KLSAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZp
bGVCLmlzTnVsbCgpKQorICAgIGlmIChmaWxlQS5pc051bGwoKSB8fCBmaWxlQi5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKIAotICAg
IGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQSk7Ci0gICAgYXV0byBm
aWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVCKTsKKyAgICBhdXRvIGZpbGVBRGV2
ID0gZ2V0RmlsZURldmljZUlkKGZpbGVBKTsKKyAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURl
dmljZUlkKGZpbGVCKTsKIAogICAgIGlmIChmaWxlQURldiAmJiBmaWxlQkRldikKICAgICAgICAg
cmVzdWx0ID0gKGZpbGVBRGV2ID09IGZpbGVCRGV2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCAyMTE4
M2FhN2ViMmYuLmJjYWUxMDZiM2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTI1LDcgKzEyNSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmluZyYp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiB2b2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJv
bGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNM
aW5rUGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmluZGV4IDZlMGU0NzY3MjI2Ni4uMjNjOTk3YjMzMjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMjQ3LDggKzI0Nyw5IEBAIGludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgdm9pZCogZGF0YSwgaW50IGxlbmd0
aCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURl
dmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBhdXRvIGZzRmlsZSA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0g
YWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdSZWZQ
dHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3Rl
bV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIs
IG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi43ZjQyMjFiNjIwMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSw5IEBAIGVu
ZDoKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJf
dD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBhdXRv
IGZzRmlsZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBzdHJ1Y3Qgc3Rh
dCBmaWxlU3RhdDsKICAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0x
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5k
ZXggMmUxMzEyMTcwYjhmLi5mNTE0ODJhOTZlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApA
QCAtODIsNyArODIsMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisKKyAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIGlzIGV4cGxpY2l0IHRvIGVuY291cmFnZSBkZXZlbG9wZXJzIHRvIHVz
ZSBBU0NJSUxpdGVyYWwgYW5kIHRoZSAiIl9zIHN1ZmZpeCB3aGVuIHBvc3NpYmxlLAorICAgIC8v
IGFzIHRoZSBTdHJpbmcoQVNDSUlMaXRlcmFsKSBpcyBtb3JlIGVmZmljaWVudC4gQWxzbyBub3Rl
IHRoYXQgdGhpcyBjb25zdHJ1Y3RvciB0cmVhdHMgaW5wdXQgYXMgbGF0aW4xLgorICAgIC8vIERl
dmVsb3BlcnMgb2Z0ZW4gd2FudCB0byBjYWxsIFN0cmluZzo6ZnJvbVVURjgoKSBpbnN0ZWFkLgor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3Rp
bmcgU3RyaW5nSW1wbC4KICAgICBTdHJpbmcoU3RyaW5nSW1wbCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xv
Z2dpbmdVbml4LmNwcAppbmRleCBiMDEyYzhjMWNmMzkuLjk4YmY1NjZjZTI1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3RyaW5nIGxvZ0xldmVs
U3RyaW5nKCkKICAgICBXVEZMb2dBbHdheXMoIldFQktJVF9ERUJVRyBpcyBub3QgZW1wdHksIGJ1
dCB0aGlzIGlzIGEgcmVsZWFzZSBidWlsZC4gTm90aWNlIHRoYXQgbWFueSBsb2cgbWVzc2FnZXMg
d2lsbCBvbmx5IGFwcGVhciBpbiBhIGRlYnVnIGJ1aWxkLiIpOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gbG9nRW52OworICAgIHJldHVybiBTdHJpbmcgeyBsb2dFbnYgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMjhkMWNlNWY2
ZWUxLi45NzkxNWEyMzgxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAg
LTM0NSw5ICszNDUsOSBAQCBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKQogICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0FQUERBVEEpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
JiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBT
dHJpbmcmIGZzRmlsZSkKIHsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRh
KCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0Zp
bGUsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCmluZGV4IGJmOTZiMGE1NWM4OC4uYzkyYTc3YThjMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1
YWdlKCkKICAgICBpZiAoIWNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzb2xhdGVkQ29weSgpOwogCi0gICAg
U3RyaW5nIGxhbmd1YWdlTmFtZSA9IGxvY2FsZUluZm8oTE9DQUxFX1NJU082MzlMQU5HTkFNRSwg
ImVuIik7CisgICAgU3RyaW5nIGxhbmd1YWdlTmFtZSA9IGxvY2FsZUluZm8oTE9DQUxFX1NJU082
MzlMQU5HTkFNRSwgImVuIl9zKTsKICAgICBTdHJpbmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZv
KExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJpbmcoKSk7CiAKICAgICBpZiAoY291bnRyeU5h
bWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5
MzRmMjk0ZWEuLmJlN2ZjNGI4NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRl
ciBhZGFwdGVyKQogewogICAgIFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAg
IHdncHVBZGFwdGVyR2V0UHJvcGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0
dXJuIHByb3BlcnRpZXMubmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1l
IH07CiB9CiAKIHN0YXRpYyBSZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVz
KFdHUFVBZGFwdGVyIGFkYXB0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRl
eCA5NjlhN2EyY2E3YjkuLjhjOTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUlt
cGwuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3Bl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAg
ICAgY2FzZSBXR1BVRXJyb3JUeXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBXR1BVRXJyb3JUeXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsg
eyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJv
ciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1v
cnk6CiAgICAgICAgICAgICBlcnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4
IDhlYjRlOTI2YjlkYS4uMGQ0ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90
aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBB
WFRyZWVEYXRhIHRyZWVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3
MzJjYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9i
amVjdENhY2hlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FY
T2JqZWN0Q2FjaGVJT1MubW0KQEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmF0dGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdy
YXBwZXIuZ2V0KCkpOwogfQogCi1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxh
dGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uKQogewotICAgIFN0cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVND
SUlMaXRlcmFsOjpudWxsKCk7CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNh
c2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVu
dENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VP
dmVybGF5Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOwor
ICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVj
dGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
U2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVS
ZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5n
ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5n
ZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5k
ZWRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hh
bmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlv
bkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4
LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMg
bXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlv
bi4KICAgICAvLyBCdXQgV2ViQ29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29y
a2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNh
dGlvbiBtZXRob2QgaW4gdGhlIHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0
IGRvZXMgbGluayBVSUtpdC4KLSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNh
dGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1l
LmlzRW1wdHkoKSkKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmlj
YXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBu
b3RpZmljYXRpb25OYW1lLmNyZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigp
IHBvc3ROb3RpZmljYXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRv
IHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0
b3IsIGNhbGwKICAgICAvLyB0aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb24uCi0gICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2li
aWxpdHlQb3N0ZWROb3RpZmljYXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAog
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRp
b24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jiwg
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09M
KWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJl
Y3Rpb24KICAgICBCT09MIHJlc3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBh
Z2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5n
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0
byBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRl
TlNTdHJpbmcoKTsKKyAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25O
YW1lLmdldCgpXTsKIAogICAgICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3Np
YmlsaXR5U2Nyb2xsUG9zaXRpb25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZd
Iiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0
eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVz
IiA6IHRlc3RTdHJpbmcgfV07CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3Rp
ZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0
ZXN0U3RyaW5nIH1dOwogICAgIH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVj
dCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0
IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNjM2OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5
LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKICAgICBpZiAobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7
CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09O
VFJPTExFUl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6
IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4i
KTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAw
ZWQ1ZmY4NGI5Li4zMWVmYzI4MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRG
b3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5l
d1ZhbHVlID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBz
d2l0Y2ggKHRleHRBbGlnbikgewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0x
MDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRC
YXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8g
bm8tb3AKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246
OkxlZnRUb1JpZ2h0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJy
aWdodCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAg
ICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkNlbnRlcjoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoK
QEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5n
ZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBpZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2Rv
Y3VtZW50LmZvY3VzZWRFbGVtZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6
OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0
aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRn
ZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBU
aGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1
NSwgMC4wKSIpOworICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8v
IFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdl
aWdodC4gCiAgICAgLy8gQWxzbyByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4w
MTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0
dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcp
ICsgIi4uLiI7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0
dXJuICJbdXJsXSI7CisgICAgICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIy
ZDBjMDQuLmQ0ODQxZGYzZGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2
ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAg
ICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZh
bHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhB
U0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVn
aW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3Ry
aW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAg
ICAgIEFTQ0lJTGl0ZXJhbCBrZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBB
U0NJSUxpdGVyYWwgbmFtZSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wg
dmFsdWUgeyBmYWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4g
bV9zZXR0aW5ncyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07
CiB9CiAKLWJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29u
c3QgU3RyaW5nJiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRp
bmcgOiBtX3NldHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAt
NDI2LDcgKzQyNiw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQ
YWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0
LmNsZWFyUmVjdChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9u
cyIpKSB7CisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoQ29sb3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKIAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAo
cmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lv
biB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3Jh
ZGllbnREYXRhID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpS
YWRpYWxEYXRhIGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAg
PSBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEw
IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9
IFsmXSAoYm9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRp
ZW50RGF0YSkgewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
V1RGTW92ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7
IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAg
ICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xv
cldpdGhBbHBoYSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0
b3AoeyAxLCBoYXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0
aEFscGhhKDAuMDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0p
OwotICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZh
bHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9z
KSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9y
KENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBn
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhB
bHBoYSgwKSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2
b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25z
dGV4cHIgZmxvYXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAg
PSB2YWx1ZUZvclNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsK
IAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhz
Rm9yUmVnaW9uKCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFk
aWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2gi
KSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRp
bmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlm
IChzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xp
cCkgewogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykg
ewotICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNv
bnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1l
bnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1
cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3Vu
ZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdy
YWRpZW50RGF0YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAg
ICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xv
cihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFj
aykuY29sb3JXaXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3Vu
ZCA9IGZhbHNlOwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkK
ICAgICAgICAgICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3Jv
dW5kOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5n
UmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAg
ICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykg
PyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1
bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdy
YWRpZW50KGhhc0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIy
LDkgKzUyMiw5IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFs
PEN1cnNvcj4gY3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29y
IikpCisgICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNv
clRvU2V0ID0gbm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIikpCisgICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAg
ICBjdXJzb3JUb1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRl
bnRzQ29vcmRpbmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBv
c2l0aW9uKCkpOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAg
ICAgbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHND
b29yZGluYXRlczsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2
ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25z
KCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVG
b3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jh
c2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2Eu
bW0KaW5kZXggNDc3NGNlMDhhNWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJv
b2wgU2V0dGluZ3NCYXNlOjpwbGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2
b2lkIFNldHRpbmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFM
X0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRf
U0lNUExJRklFRF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWlu
Y2hvIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNl
dEZpeGVkRm9udEZhbWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJp
ZkZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoIkhlbHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIlBpbmdGYW5nIFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVE
X0hBTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJf
cywgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4
ZWRGb250RmFtaWx5KCJDb3VyaWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoIkhlbHZldGljYSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIx
ZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50
VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFy
ZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNl
ckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwg
b3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0
aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4
MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1Mu
bW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0lt
YWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFz
dGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAg
IHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9w
dHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01
NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICBy
ZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNz
aWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQog
Ci1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2Vy
QWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNz
aWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7
CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAK
IHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigp
OwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5h
bFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVO
b25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VS
ZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jl
c291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNl
UmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291
cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGlmIChtX3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxl
ID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1Q
YXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAg
YXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7
CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBtX3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAg
ICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2Ug
PSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYg
KGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1Jl
cXVlc3QgX3NldFByb3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNl
LnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNl
Il07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEy
OWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAt
NDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpy
ZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmll
d3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNL
X0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3
b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFz
c3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50
Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJp
dmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNw
cAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRS
ZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3Vs
dChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAg
ICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0g
ZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JP
YmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygi
bWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmlu
ZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNl
clByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFu
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2lu
Z0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigi
cmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAo
IWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3du
RXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQg
U2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdD
b250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7
CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmco
InVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmlu
ZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNv
ZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCAr
ODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJs
ZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwog
ICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJs
ZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgi
eSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJf
cywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9z
LCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4i
X3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRo
ICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3
aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0
IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3
aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3Vi
bGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+
c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3Np
bmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25I
b3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsx
NzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBK
U09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVs
ZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNo
YXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0Zp
bGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAg
IiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxl
bWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVw
bG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScp
IH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAg
ICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250
ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1
NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50
cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3Jl
YXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29u
c3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBp
c0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAg
ICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAg
ICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Np
b246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2
b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIg
ICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAg
ICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90
b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZv
aWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25z
dCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0g
cGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAg
ICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRl
cmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
IGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBm
b2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50
KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9j
dW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3Rp
dmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0
IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVu
dC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5s
ZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFj
dGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0
aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBp
cyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAg
ICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmlu
ZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMg
KzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tp
ZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5h
bWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUi
X3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3Ms
IGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5n
KCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJp
bmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUu
c2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJo
dHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29v
a2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3Io
MCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNh
bWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJz
YW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0
dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJ
bnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYg
aWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4g
SW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3Vy
Y2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0
U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsK
ICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwi
OworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6
UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9v
cihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNl
OgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNl
Il9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVy
biAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQ
b2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAg
cmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAg
cmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoK
LSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0
aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUg
dHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJu
ICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0g
ICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAg
ICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxl
bWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CmluZGV4IDVlNDQwNjdlZjBhMi4uYzMwMTA4NTkzZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRl
bWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAg
ICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFs
dWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAg
IGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAs
NyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHko
SlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NV
UkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUo
InNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Np
b24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBh
YmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0
Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlz
bWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2Vw
dCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRp
c21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNj
ZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRl
Z3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2Fz
ZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
UGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1h
bmRFbmNvZGVyLm1tCmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29t
bWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZl
ciYgc291cmNlLCBjb25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJl
KHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUg
YSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRl
QVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2Rldmlj
ZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVu
Y29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNv
dXJjZSwgY29uCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJj
ZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxp
ZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlk
YXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2Vu
ZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6
OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2Us
IGNvCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0
aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRl
c3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlv
biBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9u
RXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRl
QVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tS
ZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNw
YWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0
Li45YTc2MTA2Y2EwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwxOCArNTQsMTggQEAgc3RhdGljIFJl
ZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RF
bmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0
dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2Fs
KQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNT
dHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwg
Y29tcGFyZTp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwu
bGVuZ3RoICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNp
Z25lZCBsZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAg
ICAgICAgY2hhciB3aXJlVHlwZSA9IHdpcmVbaV07CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBs
b2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXTsK
KyAgICAgICAgY2hhciB3aXJlVHlwZSA9IFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV07CiAKICAg
ICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewogICAgICAgICAgICAgLy8gYGJvb2xg
IGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCkBAIC05NzAsOSArOTcwLDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
ZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1Q
cmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBh
Z2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJf
YXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJl
dmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNr
bG9va19idXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRf
dCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5m
ZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxl
bWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAg
ICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQu
c2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJr
aXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEy
Yi4uZmJlMDJlYzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2Ny
aXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIK
ICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9u
cygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7
ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4g
YW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBw
Qm91bmREb21haW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JF
TEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNj
cmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAt
NzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0
Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5k
bzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAi
VSswMDVBIiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisg
ICAgICAgICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5
WSJfcywKLSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZp
ZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5
Il9zLCAiS2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
YiIsICJiIiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2Niwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAiYiJfcywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0
MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6
OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3Ms
Ci0gICAgICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywg
IktleUkiX3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Iiwg
InUiLAotICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1
Il9zLCAidSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9z
LCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyAr
NDMyNCw3IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBj
b25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJr
cygpLnNob3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50
KCkgPT0gImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhB
cHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVz
ZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMy
OTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcx
Niw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQm
IGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1l
ZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1l
bnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVu
dCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUo
KSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4g
TWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5k
ZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2
YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmlu
ZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1
LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09m
U3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJpbmcgV2Vi
RWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChj
b25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmlu
ZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdy
YW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZC4u
YmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0g
KHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwog
ewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhb
ZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+
c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEz
OTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxl
OihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVu
Y2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVD
b2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFw
aEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQx
OTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jv
c3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRD
b25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVs
dENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRf
RVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFt
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwg
bmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRf
RVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9F
USgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFT
U0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RG
X0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQg
YnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3Rk
IGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNT
RVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIi
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0x
LTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZh
Y3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFBy
aXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5mYTkzZGM0OGQxOGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZh
Y3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5v
bkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0
cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVT
T1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3lu
dGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5v
LCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9u
c2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAg
fV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3Qg
Y2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqcyA9IEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwogCiAgICAg
c3dpdGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6U3ludGhldGlj
OgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxl
cnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwn
fSkpKTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxz
Y3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0
ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGlj
IHJlc3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNo
ZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiX3M7CiAgICAgICAg
IGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAg
eyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXIn
KTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsg
IjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTM2OSwxMyArMzY5
LDEzIEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRT
ZXJ2aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
ZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0
bWwnKSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZy
b20gc2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBz
ZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwi
X3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9
IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC00NTIs
MTIgKzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBp
c0FwcEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVy
dChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9
KSkpOyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3Bv
bnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2Ny
aXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICAgICAg
eyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsg
e3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0g
fSwKICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIx
LnBvcnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0
KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogCiAgICAgewogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNX
Qnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0KICAgICAg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRy
LCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwogCiAgICAgICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEy
Ny4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNU
KEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5pdGlhdGVkKQog
CiAjaWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZh
dWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2co
bXNnKQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNlcHRpb246ICcgKyBl
KTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJD
RSgKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkgPT4gewog
ICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBhc3luYyBmdW5jdGlvbiBx
dWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkK
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVkJyk7CiB9CiAK
LSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0
ZWRNZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVlKQogICAgIHdl
YlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1s
IiwgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsg
eyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRC
eXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblNX
Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXNE
ZWZhdWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4g
YXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5kZXggY2RiOTEw
NGFlYjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtMzE3LDcgKzMx
Nyw3IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZpcmVPcmllbnRhdGlvbkV2ZW50c1JpZ2h0
QXdheUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicmVj
ZWl2ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKIH0KIAotc3RhdGljIGNv
bnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9n
KG1zZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0aW9uIHJlcXVlc3RQZXJtaXNzaW9uKCkg
ewogfQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0UiOworKVRFU1RSRVNPVVJDRSJfczsKIAog
VEVTVChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lvblNlY3VyZUNvbnRleHRDaGVjaykKIHsK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluQnl0ZXMgfSB9CiAgICAgfSk7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtMzk1LDIzICsz
OTUsMjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3REZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24KIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT4KIDxpZnJhbWUgc3Jj
PSdodHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBhbGxvdz0nYWNjZWxlcm9tZXRlcjpodHRw
czovLzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRwczovLzEyNy4wLjAuMTo5MDkxO21hZ25l
dG9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48L2lmcmFtZT4KIDwvYm9keT48L2h0bWw+
Ci0pRE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RP
QygKKylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7CispRE9D
RE9DRE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uSW5J
RnJhbWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluRnJh
bWVUZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJhbWUiLCB7IGZyYW1lVGV4dCB9IH0sCisg
ICAgICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7
CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDg1ZjdkODlk
YmQ4MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMzEsMTQg
KzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSIpOworICAgIFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
ICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVy
cmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIi
X3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFp
bGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1LDcgQEAgLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODUwLDkgKzg1MCw5IEBAIG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykg
ewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNj
cmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwxNSArODc1LDE1IEBAIG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewog
fQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMg
Y29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgi
U2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwogfSk7CiAKLSlTV1JFU09V
UkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBAIC04OTksOCArODk5LDggQEAgVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJz
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5q
cyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpbkJ5dGVzIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAg
IFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lu
c107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIAog
ICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNz
ZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZp
Y2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiI7CisgICAg
ZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVj
ZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiJfczsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNl
OwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblVucmVnaXN0ZXJCeXRl
cyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWlu
Lmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTY3LDcgKzk2Nyw3IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNlOwog
Ci0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiOworICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIl9zOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYi4uNWJjZWE4MTA5M2NmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgzMTcsOCArODMxNyw4IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAotICAgICAgICB7ICIvZGVzdGluYXRp
b24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAg
ICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKKyAgICAgICAgeyAiL2Rlc3Rp
bmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwg
eyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJi
YXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1v
ZGVJbkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAi
Zm9vIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAg
SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvZGVzdGlu
YXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7
ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJh
ciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOwogCiAgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzNjOGRiYzViNzFl
Li5mZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAg
LTI0MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRGVsZXRlT25l
Q3JlZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUmVjb3ZlckFmdGVyQXV0
aE5Qcm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgIkZP
TyJfcyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZ
RVNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVu
dE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5t
bQppbmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZhYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KQEAgLTE2OSw3ICsxNjksNyBAQCBA
ZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tD
b250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dT
aXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitSZXRhaW5QdHI8Vmlld0NsYXNzPiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlv
bkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2Rl
ID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwg
NzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChkZWZhdWx0Q29udGVudE1vZGUpCkBA
IC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb24KIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0
YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVm
YXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25O
YW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1Np
emVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFp
blB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1
bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1Np
emVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZTxWaWV3
Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LCBz
aXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzcyLDcgKzM3Miw3IEBAIFRF
U1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVkQ29udGVudE1vZGVBdFZhcmlvdXNW
aWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRl
cmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRB
UEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAi
VGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50
TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFtbd2ViVmll
dyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAg
KE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSw3ICs0MTksNyBA
QCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNl
ckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNldCB0aGUgYXBwbGlj
YXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgTW9iaWxlLzE1
RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0
b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3
PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCJfcyB9KTsKICAgICAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhh
bmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmln
YXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQgY29udGFpbnNT
dHJpbmc6QCJNb2JpbGUiXSk7Cg==
</data>
<flag name="commit-queue"
          id="484722"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456441</attachid>
            <date>2022-04-01 21:00:52 -0700</date>
            <delta_ts>2022-04-01 21:48:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>80116</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFy
Vk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4
IDUwYjJkZmZiYzFmNy4uYTc0NjZjOTcyNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rv
b2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yODc0LDcgKzI4NzQsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT05fV0lUSF9BVFRSSUJVVEVTKGZ1bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUsIFNVUFBS
RVNTX0FTQQogCiAjZWxzZSAvLyBub3QgRU5BQkxFKEFTU0VNQkxFUikKICAgICBVTlVTRURfUEFS
QU0oY2FsbEZyYW1lKTsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgcGxhdGZvcm0iKTsKKyAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9y
IHRoaXMgcGxhdGZvcm0iX3MpOwogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzFlNGRjZmE1Y2Q2Li4zOWYyZTJjYTJhMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwCkBAIC0yODYsMTYgKzI4NiwxMyBAQCBib29sIGFwcGVuZEZpbGVDb250ZW50
c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRmb3JtRmlsZUhhbmRsZSYgdGFy
ZwogCiBib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3RyaW5nJiBmaWxlQSwgY29uc3Qg
U3RyaW5nJiBmaWxlQikKIHsKLSAgICBhdXRvIGZzUmVwRmlsZUEgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUEpOwotICAgIGF1dG8gZnNSZXBGaWxlQiA9IGZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihmaWxlQik7Ci0KLSAgICBpZiAoZnNSZXBGaWxlQS5pc051bGwoKSB8fCBmc1JlcEZp
bGVCLmlzTnVsbCgpKQorICAgIGlmIChmaWxlQS5pc051bGwoKSB8fCBmaWxlQi5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKIAotICAg
IGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQSk7Ci0gICAgYXV0byBm
aWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVCKTsKKyAgICBhdXRvIGZpbGVBRGV2
ID0gZ2V0RmlsZURldmljZUlkKGZpbGVBKTsKKyAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURl
dmljZUlkKGZpbGVCKTsKIAogICAgIGlmIChmaWxlQURldiAmJiBmaWxlQkRldikKICAgICAgICAg
cmVzdWx0ID0gKGZpbGVBRGV2ID09IGZpbGVCRGV2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAppbmRleCAyMTE4
M2FhN2ViMmYuLmJjYWUxMDZiM2UzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaApAQCAtMTI1LDcgKzEyNSw3
IEBAIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGF0aEZpbGVOYW1lKGNvbnN0IFN0cmluZyYp
OwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXJlbnRQYXRoKGNvbnN0IFN0cmluZyYpOwog
V1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IHZvbHVtZUZyZWVTcGFj
ZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQz
Ml90PiB2b2x1bWVGaWxlQmxvY2tTaXplKGNvbnN0IFN0cmluZyYpOwotV1RGX0VYUE9SVF9QUklW
QVRFIHN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcm
KTsKK1dURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZp
Y2VJZChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBib29sIGNyZWF0ZVN5bWJv
bGljTGluayhjb25zdCBTdHJpbmcmIHRhcmdldFBhdGgsIGNvbnN0IFN0cmluZyYgc3ltYm9saWNM
aW5rUGF0aCk7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGNyZWF0ZVRlbXBvcmFyeVppcEFy
Y2hpdmUoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5
c3RlbUdsaWIuY3BwCmluZGV4IDZlMGU0NzY3MjI2Ni4uMjNjOTk3YjMzMjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMjQ3LDggKzI0Nyw5IEBAIGludCByZWFk
RnJvbUZpbGUoUGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZSwgdm9pZCogZGF0YSwgaW50IGxlbmd0
aCkKICAgICByZXR1cm4gLTE7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURl
dmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0
RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBhdXRvIGZzRmlsZSA9IGZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxlID0g
YWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdSZWZQ
dHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5c3Rl
bV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxwdHIs
IG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi43ZjQyMjFiNjIwMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSw5IEBAIGVu
ZDoKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJf
dD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKKyAgICBhdXRv
IGZzRmlsZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRoKTsKICAgICBzdHJ1Y3Qgc3Rh
dCBmaWxlU3RhdDsKICAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0x
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5k
ZXggMmUxMzEyMTcwYjhmLi5mNTE0ODJhOTZlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApA
QCAtODIsNyArODIsMTEgQEAgcHVibGljOgogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggbGF0aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMpOwotICAgIFdURl9F
WFBPUlRfUFJJVkFURSBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CisKKyAgICAvLyBU
aGlzIGNvbnN0cnVjdG9yIGlzIGV4cGxpY2l0IHRvIGVuY291cmFnZSBkZXZlbG9wZXJzIHRvIHVz
ZSBBU0NJSUxpdGVyYWwgYW5kIHRoZSAiIl9zIHN1ZmZpeCB3aGVuIHBvc3NpYmxlLAorICAgIC8v
IGFzIHRoZSBTdHJpbmcoQVNDSUlMaXRlcmFsKSBpcyBtb3JlIGVmZmljaWVudC4gQWxzbyBub3Rl
IHRoYXQgdGhpcyBjb25zdHJ1Y3RvciB0cmVhdHMgaW5wdXQgYXMgbGF0aW4xLgorICAgIC8vIERl
dmVsb3BlcnMgb2Z0ZW4gd2FudCB0byBjYWxsIFN0cmluZzo6ZnJvbVVURjgoKSBpbnN0ZWFkLgor
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBTdHJpbmcoY29uc3QgY2hhciogY2hhcmFj
dGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVmZXJlbmNpbmcgYW4gZXhpc3Rp
bmcgU3RyaW5nSW1wbC4KICAgICBTdHJpbmcoU3RyaW5nSW1wbCYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xv
Z2dpbmdVbml4LmNwcAppbmRleCBiMDEyYzhjMWNmMzkuLjk4YmY1NjZjZTI1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3RyaW5nIGxvZ0xldmVs
U3RyaW5nKCkKICAgICBXVEZMb2dBbHdheXMoIldFQktJVF9ERUJVRyBpcyBub3QgZW1wdHksIGJ1
dCB0aGlzIGlzIGEgcmVsZWFzZSBidWlsZC4gTm90aWNlIHRoYXQgbWFueSBsb2cgbWVzc2FnZXMg
d2lsbCBvbmx5IGFwcGVhciBpbiBhIGRlYnVnIGJ1aWxkLiIpOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gbG9nRW52OworICAgIHJldHVybiBTdHJpbmcgeyBsb2dFbnYgfTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMjhkMWNlNWY2
ZWUxLi45NzkxNWEyMzgxZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKQEAg
LTM0NSw5ICszNDUsOSBAQCBTdHJpbmcgcm9hbWluZ1VzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3Rv
cnkoKQogICAgIHJldHVybiBjYWNoZWRTdG9yYWdlRGlyZWN0b3J5KENTSURMX0FQUERBVEEpOwog
fQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
JiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBT
dHJpbmcmIGZzRmlsZSkKIHsKLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZS5kYXRh
KCksIEZpbGVPcGVuTW9kZTo6UmVhZCk7CisgICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0Zp
bGUsIEZpbGVPcGVuTW9kZTo6UmVhZCk7CiAgICAgaWYgKCFpc0hhbmRsZVZhbGlkKGhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwCmluZGV4IGJmOTZiMGE1NWM4OC4uYzkyYTc3YThjMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1
YWdlKCkKICAgICBpZiAoIWNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzb2xhdGVkQ29weSgpOwogCi0gICAg
U3RyaW5nIGxhbmd1YWdlTmFtZSA9IGxvY2FsZUluZm8oTE9DQUxFX1NJU082MzlMQU5HTkFNRSwg
ImVuIik7CisgICAgU3RyaW5nIGxhbmd1YWdlTmFtZSA9IGxvY2FsZUluZm8oTE9DQUxFX1NJU082
MzlMQU5HTkFNRSwgImVuIl9zKTsKICAgICBTdHJpbmcgY291bnRyeU5hbWUgPSBsb2NhbGVJbmZv
KExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJpbmcoKSk7CiAKICAgICBpZiAoY291bnRyeU5h
bWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5
MzRmMjk0ZWEuLmJlN2ZjNGI4NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5j
cHAKQEAgLTM5LDcgKzM5LDcgQEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRl
ciBhZGFwdGVyKQogewogICAgIFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAg
IHdncHVBZGFwdGVyR2V0UHJvcGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0
dXJuIHByb3BlcnRpZXMubmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1l
IH07CiB9CiAKIHN0YXRpYyBSZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVz
KFdHUFVBZGFwdGVyIGFkYXB0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRl
eCA5NjlhN2EyY2E3YjkuLjhjOTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUlt
cGwuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3Bl
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAg
ICAgY2FzZSBXR1BVRXJyb3JUeXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBXR1BVRXJyb3JUeXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsg
eyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJv
ciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1v
cnk6CiAgICAgICAgICAgICBlcnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4
IDhlYjRlOTI2YjlkYS4uMGQ0ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAg
IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90
aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBB
WFRyZWVEYXRhIHRyZWVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3
MzJjYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9i
amVjdENhY2hlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FY
T2JqZWN0Q2FjaGVJT1MubW0KQEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmF0dGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdy
YXBwZXIuZ2V0KCkpOwogfQogCi1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxh
dGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uKQogewotICAgIFN0cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVND
SUlMaXRlcmFsOjpudWxsKCk7CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNh
c2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVu
dENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VP
dmVybGF5Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOwor
ICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVj
dGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
U2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVS
ZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5n
ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5n
ZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5k
ZWRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hh
bmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlv
bkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4
LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29y
ZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMg
bXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlv
bi4KICAgICAvLyBCdXQgV2ViQ29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29y
a2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNh
dGlvbiBtZXRob2QgaW4gdGhlIHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0
IGRvZXMgbGluayBVSUtpdC4KLSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNh
dGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1l
LmlzRW1wdHkoKSkKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmlj
YXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBu
b3RpZmljYXRpb25OYW1lLmNyZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigp
IHBvc3ROb3RpZmljYXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRv
IHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0
b3IsIGNhbGwKICAgICAvLyB0aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb24uCi0gICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2li
aWxpdHlQb3N0ZWROb3RpZmljYXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAog
dm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRp
b24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jiwg
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09M
KWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJl
Y3Rpb24KICAgICBCT09MIHJlc3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBh
Z2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5n
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0
byBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRl
TlNTdHJpbmcoKTsKKyAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25O
YW1lLmdldCgpXTsKIAogICAgICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3Np
YmlsaXR5U2Nyb2xsUG9zaXRpb25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZd
Iiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0
eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVz
IiA6IHRlc3RTdHJpbmcgfV07CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3Rp
ZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0
ZXN0U3RyaW5nIH1dOwogICAgIH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVj
dCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0
IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNjM2OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5
LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5X
b3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlO
UykKICAgICBpZiAobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJy
b3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7
CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09O
VFJPTExFUl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6
IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4i
KTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAw
ZWQ1ZmY4NGI5Li4zMWVmYzI4MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0
b3JJT1MubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRG
b3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBp
ZiAoIXZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5l
d1ZhbHVlID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBz
d2l0Y2ggKHRleHRBbGlnbikgewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0x
MDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRC
YXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8g
bm8tb3AKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246
OkxlZnRUb1JpZ2h0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJy
aWdodCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAg
ICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OkNlbnRlcjoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoK
QEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5n
ZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVh
azsKICAgICB9CiAKLSAgICBpZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2Rv
Y3VtZW50LmZvY3VzZWRFbGVtZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6
OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0
aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRn
ZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBU
aGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1
NSwgMC4wKSIpOworICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8v
IFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdl
aWdodC4gCiAgICAgLy8gQWxzbyByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4w
MTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0
dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcp
ICsgIi4uLiI7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0
dXJuICJbdXJsXSI7CisgICAgICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIy
ZDBjMDQuLmQ0ODQxZGYzZGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2
ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAg
ICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZh
bHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhB
U0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVn
aW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3Ry
aW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAg
ICAgIEFTQ0lJTGl0ZXJhbCBrZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBB
U0NJSUxpdGVyYWwgbmFtZSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wg
dmFsdWUgeyBmYWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4g
bV9zZXR0aW5ncyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07
CiB9CiAKLWJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29u
c3QgU3RyaW5nJiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRp
bmcgOiBtX3NldHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAt
NDI2LDcgKzQyNiw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQ
YWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0
LmNsZWFyUmVjdChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9u
cyIpKSB7CisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAg
Y29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tl
Q29sb3IoQ29sb3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKIAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAo
cmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lv
biB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3Jh
ZGllbnREYXRhID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpS
YWRpYWxEYXRhIGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAg
PSBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEw
IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9
IFsmXSAoYm9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRp
ZW50RGF0YSkgewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
V1RGTW92ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7
IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAg
ICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xv
cldpdGhBbHBoYSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0
b3AoeyAxLCBoYXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0
aEFscGhhKDAuMDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0p
OwotICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZh
bHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9z
KSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9y
KENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBn
cmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhB
bHBoYSgwKSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2
b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25z
dGV4cHIgZmxvYXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAg
PSB2YWx1ZUZvclNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsK
IAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhz
Rm9yUmVnaW9uKCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFk
aWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2gi
KSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRp
bmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlm
IChzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xp
cCkgewogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykg
ewotICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNv
bnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1l
bnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1
cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3Vu
ZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAg
ICAgICAgICAgICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdy
YWRpZW50RGF0YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JH
QiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAg
ICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xv
cihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFj
aykuY29sb3JXaXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3Vu
ZCA9IGZhbHNlOwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkK
ICAgICAgICAgICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3Jv
dW5kOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0
IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5n
UmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAg
ICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykg
PyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1
bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdy
YWRpZW50KGhhc0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIy
LDkgKzUyMiw5IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFs
PEN1cnNvcj4gY3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29y
IikpCisgICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNv
clRvU2V0ID0gbm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIikpCisgICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAg
ICBjdXJzb3JUb1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRl
bnRzQ29vcmRpbmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBv
c2l0aW9uKCkpOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAg
ICAgbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHND
b29yZGluYXRlczsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2
ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25z
KCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVG
b3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jh
c2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2Eu
bW0KaW5kZXggNDc3NGNlMDhhNWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJv
b2wgU2V0dGluZ3NCYXNlOjpwbGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2
b2lkIFNldHRpbmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFM
X0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRf
U0lNUExJRklFRF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWlu
Y2hvIFByb04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNl
dEZpeGVkRm9udEZhbWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJp
ZkZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoIkhlbHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIlBpbmdGYW5nIFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVE
X0hBTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJf
cywgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4
ZWRGb250RmFtaWx5KCJDb3VyaWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZv
bnRGYW1pbHkoIkhlbHZldGljYSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIx
ZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50
VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFy
ZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5h
bWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNl
ckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBT
dHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwg
b3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0
aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMwNDBjZWJkYTlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3NCwxMiArMTc0
LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xzaGFkZXJUeXBl
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5
cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAiIjsg
Ly8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8v
IEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xPYmplY3QsIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3Vs
dCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7
CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIH0KIAog
ICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJh
MzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFn
SW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpu
YW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3Rl
Ym9hcmQiOworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERy
b3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcu
LjhkNWM0M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bo
b25lKCkKICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNs
YXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdp
bmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBv
c05hbWVGb3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgp
ICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4g
ImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUg
T1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAg
ICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVy
Q29udHJvbGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xs
ZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAg
ICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6
OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0
aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNm
MDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIzNSw5ICsyMzUsOSBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIGlmIChtX3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1
dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJs
LmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewot
ICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlk
KGZzUmVwRmlsZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBtX3VybC5maWxlU3lzdGVtUGF0
aCgpOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRv
IGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZmlsZVBhdGgpOwogICAg
ICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAg
ICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdl
cjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4
cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApp
bmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZp
bmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZp
cnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1w
dHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQg
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5z
ZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRv
bigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xl
dG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRl
cjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6
Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFs
PEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVy
cm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3Qt
PmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQx
MDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lv
bjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+
Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERp
YWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwog
ICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5
LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgi
Y29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJl
c3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0
LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRl
eHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVz
dWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBh
cmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRv
d09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNl
dERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0
RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2Jq
ZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJs
ZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+
c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dT
aXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAg
ICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dG
cmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBA
IC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBh
cmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3Ry
aW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkg
eyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdp
bnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1
cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRl
KCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFs
c2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
YnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVl
KCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJs
ZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBh
dXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1
c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQp
IHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25s
eSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsi
CiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAi
fSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhh
bmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyAr
MjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVV
cGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQo
KSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0
cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBm
b2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVt
ZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
bGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsy
MTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAg
ICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxl
bWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVu
dFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAg
ICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdl
OiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0i
OworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJn
dW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50
cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsK
QEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0
b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNv
b2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0
cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAg
IGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVf
b3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJl
Il9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7
CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGly
eSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBp
cnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJf
cywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9z
KSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBA
QCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNv
bnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwg
W10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJj
ZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBl
KGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291
cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICBy
ZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVy
VHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRl
clR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICBy
ZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAg
ICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAg
ICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOwor
ICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJk
IjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpU
eXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hl
ZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBl
IHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJP
cmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50
ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAg
ICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9p
bnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAg
IHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uYzMwMTA4NTkzZWZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZl
clNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJp
bnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9G
QUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07
CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmpl
Y3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0
byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAg
aWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsK
ICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAg
ICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2Vy
aWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICgh
cHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmpl
Y3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNp
b25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAg
ICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6
OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBz
dAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dS
ZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1
ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAg
ICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQg
YW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdu
b3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBh
Z2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAg
ICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9h
ZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBh
YmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9h
ZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9h
ZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysg
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3
IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUlt
YWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVm
ZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAv
LyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZp
Y2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAg
ICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1
cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZv
aWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29w
eVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRv
QnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2Vu
ZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdl
bmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBt
X2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9z
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29t
bWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0
dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVy
ZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRl
IGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZp
Y2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4Ni4uM2E4OGZj
MjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1Jl
bW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBl
bmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXgg
YTliZWM1ODczZWQ0Li45YTc2MTA2Y2EwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwxOCArNTQsMTgg
QEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmplY3QoV0tS
ZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wg
bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJlLCBjb25zdCBT
dHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmlu
ZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3aXJlKQorICAg
IGlmIChbbG9jYWwgY29tcGFyZTp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAg
ICBpZiAobG9jYWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBs
b2NhbFtpXTsKLSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdpcmVbaV07CisgICAgTlNVSW50ZWdl
ciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBbbG9jYWwgY2hhcmFjdGVy
QXRJbmRleDppXTsKKyAgICAgICAgY2hhciB3aXJlVHlwZSA9IFt3aXJlIGNoYXJhY3RlckF0SW5k
ZXg6aV07CiAKICAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewogICAgICAgICAg
ICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCkBAIC05
NzAsOSArOTcwLDggQEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1Jl
bW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0
aW9uIGZvcm1hdDpAIkludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBT
dHJpbmcgcmVtb3RlTWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwot
ICAgIFN0cmluZyBsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25h
dHVyZV0uX3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNp
Z25hdHVyZSkpCisgICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRp
b24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9k
U2lnbmF0dXJlc0FyZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1
cmUpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0
aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMg
YXJlIG5vdCBjb21wYXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0
TmFtZShzZWxlY3RvcikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9j
aykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90
ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVP
YmplY3RSZWdpc3RyeSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVP
YmplY3RSZWdpc3RyeTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitz
dGF0aWMgTlNTdHJpbmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBT
RUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwg
bm9uLWluaGVyaXRlZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5n
ID0gX3Byb3RvY29sX2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRy
dWUsIHRydWUpOwpAQCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2Nr
U2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIK
IAogICAgIEFTU0VSVChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVu
Y29kaW5nKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
TlNNZXRob2RTaWduYXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25h
dHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNT
RVJUKHRhcmdldE1ldGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1
cmUpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1
cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5k
ZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2
b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYp
cmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgU3RyaW5nIHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWdu
YXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEo
KV0uX3R5cGVTdHJpbmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0g
cmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxl
Y3RvciwgaSk7CisgICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRo
b2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0
dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2Nv
bF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVy
ZSkgewogICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRh
dGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUi
KTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsK
LSAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJl
cGx5IGJsb2NrIHNpZ25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgp
LmRhdGEoKSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
ICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2Nr
IHNpZ25hdHVyZTogJUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tT
aWduYXR1cmUpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNr
ZXI+IGNoZWNrZXIgPSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlE
KTsKLSAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0
dXJlQmxvY2sod2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJl
bW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9j
YXRpb24pIHsKKyAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRp
bmdDYXB0dXJlQmxvY2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFj
ZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAq
aW52b2NhdGlvbikgewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVt
b3RlT2JqZWN0RW5jb2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5j
b2RlT2JqZWN0Omludm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcjo6ZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAog
dm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24o
KQogewotICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdl
KCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2Fw
cGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVz
dGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBw
YWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNh
ZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAg
ICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
SU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRh
dHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNv
bS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IDcyOTQ5NDFjYWEyYi4uZmJlMDJlYzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZh
Y3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0
aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhh
dCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWls
czo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5k
IGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNl
ciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAg
ICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAg
ICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3Ms
Ci0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywg
IktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAg
ICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3Ms
CisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNl
OgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJV
KzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAg
ICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJp
IiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAg
ICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0g
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1
NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAg
ICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsK
QEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChj
b25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9j
dW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1l
Rm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVz
ZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVy
biBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsK
IAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmlu
ZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9E
T00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFR
dWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNv
bnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3Jl
ZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZp
ZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsK
KyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBk
b2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDog
bnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hl
Y2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGlu
ZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNz
cGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dy
YW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4m
LCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVl
YjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClf
c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcg
KillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0
ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4
NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3Vt
ZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2
YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0
cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZh
bWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJp
dmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5k
ZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAg
VEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEo
MXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVm
YXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9F
USgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAK
ICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VS
VF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFT
U0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAK
ICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VS
VF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFT
U0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwot
ICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0w
IikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXIt
MS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNT
RVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEy
IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0
byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxh
bWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRf
RVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNT
RVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIi
KSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7
CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0
b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5mYTkzZGM0OGQx
OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
UHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFp
blNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0
ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3
ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2Ny
aXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9u
c2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVk
IDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0
aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
Ci0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqcyA9IEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxs
cHRyOwogCiAgICAgc3dpdGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlw
ZTo6U3ludGhldGljOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihb
JzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6
ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShu
ZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4n
XSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQg
PSAic3ludGhldGljIHJlc3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXNwb25z
ZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSk7IjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsi
X3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
KHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQg
ZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5
dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVk
Lmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0
PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAg
LTM2OSwxMyArMzY5LDEzIEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3
c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9m
ZXRjaGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2go
Jy9mZXRjaGVkLmh0bWwnKSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9
ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIv
c3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0s
IGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2Zl
dGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1h
aW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9m
ZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwv
c2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CkBAIC00NTIsMTIgKzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0Fw
cEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gn
LCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsn
PHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTog
J3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNw
b25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKIAogICAg
IHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAg
ICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAor
ICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIGpzIH0gfSwKICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAgICAgIHNlcnZlclBv
cnQgPSBzZXJ2ZXIxLnBvcnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNv
ZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogCiAgICAgewogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICAgICAgeyAi
LyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAg
ICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9z
LCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBq
cyB9IH0KICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwogCiAgICAgICAgIE5T
TXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1
NTgsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBw
SW5pdGlhdGVkKQogCiAjaWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFp
blNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBsb2cobXNnKQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNl
cHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9
IFIiU1dSRVNPVVJDRSgKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChl
dmVudCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBhc3lu
YyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0
aWFsTWVzc2FnZSkKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlh
dGVkJyk7CiB9CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiAKIHN0YXRpYyBT
dHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZh
bHVlKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvbWFpbi5odG1sIiwgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsg
Ii9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
fSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwi
X3MsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwg
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAgLy8gTG9hZCBXZWJW
aWV3IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0K
aW5kZXggY2RiOTEwNGFlYjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpA
QCAtMzE3LDcgKzMxNyw3IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZpcmVPcmllbnRhdGlv
bkV2ZW50c1JpZ2h0QXdheUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAgICAgRVhQRUNUX1dL
X1NUUkVRKEAicmVjZWl2ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKIH0K
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbG9nKG1zZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0aW9uIHJlcXVlc3RQ
ZXJtaXNzaW9uKCkgewogfQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0UiOworKVRFU1RSRVNP
VVJDRSJfczsKIAogVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lvblNlY3VyZUNvbnRl
eHRDaGVjaykKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluQnl0ZXMg
fSB9CiAgICAgfSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndl
YnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpA
QCAtMzk1LDIzICszOTUsMjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24KIH0KIEBlbmQKIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT4K
IDxpZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBhbGxvdz0nYWNjZWxl
cm9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRwczovLzEyNy4wLjAu
MTo5MDkxO21hZ25ldG9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48L2lmcmFtZT4KIDwv
Ym9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBmcmFtZVRleHQg
PSBSIkRPQ0RPQ0RPQygKKylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPgotKURPQ0RP
Q0RPQyI7CispRE9DRE9DRE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNlT3JpZW50YXRpb25Q
ZXJtaXNzaW9uSW5JRnJhbWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIxKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAgICAgICAgeyAiLyJf
cywgeyBtYWluRnJhbWVUZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJhbWUiLCB7IGZyYW1l
VGV4dCB9IH0sCisgICAgICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQgfSB9LAogICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVs
bHB0ciwgOTA5MSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmlu
ZGV4IDg1ZjdkODlkYmQ4MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVwSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSIp
OworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUlu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
clRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7CisgICAgV2ViQ29y
ZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVz
dElkZW50aWZpZXIiX3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJv
dW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1LDcgQEAgLSAo
dm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNl
ckNvbnRlbnRDb250cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5C
eXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODUwLDkgKzg1
MCw5IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1
bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNF
Il9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwxNSArODc1LDE1
IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0
aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAKIHNlbGYuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwogfSk7
CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBAIC04OTksOCAr
ODk5LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1Nl
cnZpY2VXb3JrZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCi0gICAg
ICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsg
bWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAg
ICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRz
Rm9yQWxsT3JpZ2luc107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZh
bHNlOwogICAgIAogICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21w
bGV0ZSBzdWNjZXNzZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3
b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRv
bWFpbiI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZp
Y2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiJfczsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWlu
Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlz
RG9uZSA9IGZhbHNlOwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblVu
cmVnaXN0ZXJCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCisgICAgICAg
IHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRl
RGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTY3
LDcgKzk2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VX
b3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwogCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nl
c3MiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIl9zOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21h
aW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYi4uNWJjZWE4MTA5
M2NmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgzMTcsOCArODMxNyw4
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29wUHJvY2Vzc1N3YXAp
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAotICAgICAgICB7
ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9
LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFy
IiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKKyAgICAg
ICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0
L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdp
biJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVTVChQcm9jZXNzU3dh
cCwgQ29udGVudE1vZGVJbkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5n
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAg
ICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2Uu
aHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9u
Lmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3Jp
Z2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAg
ICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQv
aHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2lu
Il9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHAp
OwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXgg
MzNjOGRiYzViNzFlLi5mZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KQEAgLTI0MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5l
bCwgRGVsZXRlT25lQ3JlZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUmVj
b3ZlckFmdGVyQXV0aE5Qcm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9CisgICAgICAgIHsg
Ii8iX3MsIHsgIkZPTyJfcyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24g
PSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVn
SW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlND
Rm9yVGVzdGluZzpZRVNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJl
ZmVycmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRD
b250ZW50TW9kZS5tbQppbmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZhYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KQEAgLTE2OSw3
ICsxNjksNyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6
b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktp
dEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitSZXRhaW5QdHI8
Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRo
b3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVs
dENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6
ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChkZWZhdWx0Q29u
dGVudE1vZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb24KIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRhaW5QdHI8Vmll
d0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250
ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXpl
IHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdD
bGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVu
dE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXpl
IHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25E
ZWxlZ2F0ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzcyLDcg
KzM3Miw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVkQ29udGVudE1v
ZGVBdFZhcmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIg
aVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsg
IlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1v
ZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwog
ICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAi
TW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQx
OSw3ICs0MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hbWVG
b3JEZXNrdG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNl
dCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVmYXVsdCB2YWx1
ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250
ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBhdXRvIFt3ZWJW
aWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCJfcyB9
KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdl
bnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7Cg==
</data>
<flag name="commit-queue"
          id="484728"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456443</attachid>
            <date>2022-04-01 21:42:07 -0700</date>
            <delta_ts>2022-04-01 21:50:23 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>88574</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5
OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0
ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAg
ICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJl
dHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFt
ZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJl
cyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5k
ZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJ
bXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29w
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7
IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJy
b3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVt
b3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRl
eCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5v
dGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAg
QVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUy
NzMyY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3
cmFwcGVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBs
YXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBj
YXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdl
T3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xs
ZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxl
Y3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZl
UmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9u
Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFu
ZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rp
b25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5
OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25z
IG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRp
b24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdv
cmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmlj
YXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhh
dCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFt
ZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxh
dGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZp
Y2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0g
bm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIo
KSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBU
byBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxh
dG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9P
TClhY2Nlc3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGly
ZWN0aW9uCiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQ
YWdlKHNjcm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmlu
ZyBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAg
ICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1
dG8gbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3Jt
TmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0
ZU5TU3RyaW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZS5nZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNz
aWJpbGl0eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJm
XSIsIHNjcm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxp
dHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1
cyIgOiB0ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90
aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDog
dGVzdFN0cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmpl
Y3QgaGFuZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1w
dCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2
OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50
ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIp
OworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENP
TlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxk
OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWlu
Iik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIkln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3Mg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkw
MGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50
Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpu
ZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAg
c3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAt
MTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2Vk
QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8v
IG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9u
OjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAi
cmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAg
ICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAg
ICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFu
Z2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9k
b2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9y
OjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRp
dGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lk
Z2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4g
VGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAy
NTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAv
LyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13
ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRiNmQwZTViNDQ0Ny4u
MDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAgICAgICAgIHJl
dHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5n
KSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgICAgIHJl
dHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwogI2VuZGlmCiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2Ji
MmQwYzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VF
dmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAg
ICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2
YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmco
QVNDSUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJl
Z2lvbj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0
cmluZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAg
ICAgICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAg
QVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29s
IHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+
IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9
OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNv
bnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZv
clNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0
aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAg
LTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3Qo
UGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4
dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lv
bnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYg
KHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdp
b24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdy
YWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQw
ID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwx
MCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkm
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQg
PSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFk
aWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAg
ICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0
dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGlu
Zygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldp
dGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2
YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2
YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJf
cykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xv
cihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRo
QWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAg
dm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29u
c3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlw
ID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7
CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRo
c0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3Jh
ZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNo
IikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJh
Y2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0
aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBp
ZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENs
aXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJj
b250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRp
dXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91
bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShn
cmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNS
R0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29s
b3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAg
ICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6Ymxh
Y2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91
bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZh
bHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNl
QmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykp
CiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dy
b3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGlu
Z1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAg
ICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3Mp
ID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZh
dWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VH
cmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUy
Miw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQ
YWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25h
bDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNv
ciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJz
b3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJo
b3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAg
ICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250
ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5w
b3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nbwog
ICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRz
Q29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChl
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9u
cygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVl
Rm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NC
YXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29h
Lm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBi
b29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAog
dm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05B
TF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBU
X1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1p
bmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0g
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Vy
aWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklF
RF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04i
X3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZp
eGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlm
Rm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2Ri
MWRkMDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2Vu
dFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVz
ZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtl
dGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3NWRmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJhbWVEdXJhdGlvbiA9
IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIC8v
IFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9uIGZvbGxvdywgcG9y
dGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0
ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFNpbmNl
IHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBzaGFyZWQsIHdl
IGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5nIHRoZSBjb250
ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBkOWQz
Njc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApA
QCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5j
aWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNv
dWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5H
TAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwo
Y29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24p
OwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxz
SW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdD
R0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2Vi
ZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQs
MTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xh
dGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hh
ZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBz
aGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1
cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2Jq
ZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRv
ciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAog
ICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQt
PnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAg
ICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4
Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAK
QEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFk
UmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChB
U0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0
cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikp
IHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2ls
RXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9y
dHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAg
ICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25T
dHJpbmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgog
ICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAg
cHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBh
bmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQg
YmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50
YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVND
SUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0
ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1ZDkuLjAyMWIxZmY0NTIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9F
WFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjRmNzUxZDIxMzQy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjQwLDEx
ICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dM
ZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3Rl
bmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRvIGF0dHJp
YnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFs
aWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9f
dGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4
dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykpIHsKICAg
ICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0
dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJ
bnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7
Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJh
ZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFz
c2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBV
SUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NO
YW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewog
ICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQot
ICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJl
dHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJp
bmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
CkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVy
KiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChw
bGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2
ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lv
bk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0
cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VS
ZXF1ZXN0Q29jb2EubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICht
X3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3Rl
bTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAg
ICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2
aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgIGF1
dG8gZmlsZVBhdGggPSBtX3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBpZiAoIWZpbGVQ
YXRoLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVt
OjpnZXRGaWxlRGV2aWNlSWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2Ug
JiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFBy
b3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZv
cktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVj
OGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3
b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRl
eCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lz
dGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRs
aW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAg
TW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAg
ICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlT
dHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhu
dWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRS
ZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUy
NzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBA
IC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNP
Tjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9y
T2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3Qt
PmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldElu
dGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOwor
ICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJf
cyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lv
bi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHRE
aWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7Cisg
ICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRS
ZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0
Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRP
YmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVz
cG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAg
ICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3du
RXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAg
ICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsK
ICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25F
cnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZv
aWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFu
ZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAo
eCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFs
dWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUo
KSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgp
KTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkp
OwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUo
d2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkg
ewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
LSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgp
KTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZh
bHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lk
dGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJf
cywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJz
aXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3Qt
PnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9z
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5k
UmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZv
aWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
RnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6
Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVu
dElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBs
b2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3Jp
cHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxl
bWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09
PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUs
ICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAg
ICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAg
ICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9z
LCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcg
QEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJ
RCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFy
cmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChl
bGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0Vk
aXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2Ny
aXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVs
ZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJl
dHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJ
c0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5k
UgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAg
ICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0
ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dz
aW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6
ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRl
eHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50
SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZp
bGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHku
dmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0
byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0
W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9
CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAg
ICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxl
bWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0g
ZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjpl
bGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4
dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rp
b25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAg
ICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQg
IT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTog
J0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNh
YmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAi
fSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNy
ZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVt
ZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAg
c3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNz
aW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tp
ZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52
YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRo
LnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBj
b29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5n
KCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAg
IGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVl
X29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywg
Y29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRC
b29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNv
b2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVl
X29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywg
Y29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9i
amVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0
YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0
dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VT
dGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRv
bWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1
dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElu
cHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICBy
ZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAg
ICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlw
ZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAg
ICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAg
ICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOwor
ICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6
UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4i
X3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlw
ZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXli
b2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0
dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0
aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRl
cmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0
OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJf
czsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVy
biAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50
ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAg
ICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQw
NjdlZjBhMi4uYzMwMTA4NTkzZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBd
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5n
ID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlh
bGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXBy
b3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0Lmdl
dFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9i
amVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQ
cm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0
JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBh
dXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lv
biIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0Lmdl
dFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25W
YWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAg
Kzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENh
cGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0
V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxp
dGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAg
ICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9t
cHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2
aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5v
dGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2
aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3Rp
ZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9z
LCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3Io
UGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0
cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRl
Z3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9z
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJh
dGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJp
bmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3Mp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6
OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBj
b25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0
aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVz
dGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9u
IGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAg
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVk
IgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
IGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJl
VG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAg
IGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBj
b3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQg
c3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9y
U1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wx
MzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxs
OgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNh
c2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAg
ICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVk
OgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5k
ZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBA
QCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5n
ICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjlhNzYxMDZjYTBmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0KQEAgLTU0LDE4ICs1NCwxOCBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4g
Y3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25z
dCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAg
aWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBjb21wYXJlOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3Ig
KE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjaGFyIGxvY2Fs
VHlwZSA9IFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldOworICAgICAgICBjaGFyIHdpcmVUeXBl
ID0gW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXTsKIAogICAgICAgICBpZiAobG9jYWxUeXBlICE9
IHdpcmVUeXBlKSB7CiAgICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJl
IGludGVyY2hhbmdlYWJsZS4KQEAgLTk3MCw5ICs5NzAsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9u
ICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBp
ZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRV
bmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlw
ZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBl
U2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0g
W2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAg
IGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RT
aWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRo
b2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOwor
ICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0
dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJl
bW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVz
XCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07
CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0
OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE4Nyw3ICsxODcs
NyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVPYmplY3RSZWdpc3Ry
eQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCi1zdGF0aWMgU3RyaW5n
IHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5T
VUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVy
ZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4
KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJpdGVkIG1ldGhvZDoKICAgICBjb25zdCBj
aGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5n
KHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBz
dGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwg
c2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNTRVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7
CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0gICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNpZ25hdHVyZSAqdGFyZ2V0TWV0aG9kU2ln
bmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9k
VHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0TWV0aG9kU2lnbmF0dXJlKTsKICAgICBp
ZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
cmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1
cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0luZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAg
LTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpS
ZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0g
W05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9j
a1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKLSAgICAgICAgU3RyaW5nIGV4
cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJv
dG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKKyAgICAgICAgTlNTdHJpbmcgKndpcmVC
bG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVz
OnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Cisg
ICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25h
dHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CiAKLSAg
ICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYg
KCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VN
ZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6IGNvdWxkIG5v
dCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIVdlYktp
dDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUod2lyZUJsb2NrU2lnbmF0dXJlLCBleHBl
Y3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9k
OiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdp
cmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQg
dG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlQCAhPSAlQCIsIHdpcmVCbG9ja1Np
Z25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk4LDcgKzI5
OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJ
bnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgIH07CiAKICAgICAgICAgUmVm
UHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tl
cjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01h
a2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgp
LmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNr
ZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgeworICAgICAgICBpZCByZXBseUJsb2NrID0g
X19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayhbd2lyZUJsb2NrU2lnbmF0dXJl
IFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwg
Y2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CiAgICAgICAgICAgICBhdXRvIGVu
Y29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6aW52b2Nh
dGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4u
NWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
eXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcs
NyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmln
Z2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rp
b25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0
dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1f
c3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3Mp
OwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmll
d0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcq
IGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24o
SXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7
CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFt
ZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNl
dFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2
aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcg
KzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxk
RW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEph
dmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9z
LCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAg
ICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQot
ICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNl
Y3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91
bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGlu
ZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9u
IGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFj
MjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lk
IFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNh
c2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwK
LSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywg
InoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0g
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1
OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAg
ICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIs
ICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAg
ICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3
MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUr
MDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktl
eVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAi
dSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBh
Z2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lP
UzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAg
ICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIx
Ml8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9u
TmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1
NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVu
dENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9o
b3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1
cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBp
cyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVs
bCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRl
bnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hv
c3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0
QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAg
ICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClf
bWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1l
bnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVk
aWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlh
UXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXco
KSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUo
bWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAi
c2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJl
bmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0Lmdl
dCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4
ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQq
IG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0Nv
cnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICBy
ZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdl
YkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdl
YkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFk
R3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4
LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wp
ZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRF
bmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsK
KyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5j
b2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAo
aWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFt
ZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRE
aXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJh
Y2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2
YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9y
RW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFy
a3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2Ny
aXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAK
QEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAg
ICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JT
ZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JT
ZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFD
T01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUo
KSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2lj
KQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMn
cyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1h
a2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
ICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJs
b2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0y
Il9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJU
X0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgw
OGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyAr
MjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0
aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7
CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0
aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51
bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3
NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElz
QXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAg
ICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7
CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChu
ZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNl
XCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2go
Jy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNo
ZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0g
fSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8
c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAg
ICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lS
ZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFy
KiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50
LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIg
YXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2
ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwi
LCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwK
KyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwg
anMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZv
aWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2Vi
VmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1
aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+
YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0
bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMg
fSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0
NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcElu
aXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAg
ICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2
ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5w
b3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQ
cm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBA
QCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JF
U09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0
ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Ny
aXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxz
KSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBA
IC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFs
dWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2
NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0
VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAor
ICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9
KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4g
V2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRl
ZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2
aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9y
aWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVu
dGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5
R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRN
ZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBS
IlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RS
RVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwx
MiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVT
VFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24s
IFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAg
IHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25Q
ZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0g
UiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9D
RE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJv
c2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4w
LjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMg
Y29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+
PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJL
aXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRl
eHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAg
ICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsg
ZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGlj
IHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdl
YkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7
Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRl
bnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigi
aW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpA
QCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJD
b250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24g
bG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJl
Z2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVu
cmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyht
c2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJT
V1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+
IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6
ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VX
b3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwg
eyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29y
a2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZp
Y2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVz
c2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxs
byBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNz
YWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFw
cC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdp
c3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBi
ZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUlu
Q2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7
ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVu
dC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAi
c2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3Ms
IHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAi
Q29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXIt
UG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5
LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQ
cm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhU
VFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0g
ICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0
L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9
IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJD
b250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZP
TyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAg
ICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45
ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENv
bnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250
ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgx
MDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFp
blB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
Z1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1z
dGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmln
YXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3Rk
OjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0
aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmco
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewog
ICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1v
ZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2Rl
LCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dT
aXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4
cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBz
aG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJL
aXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewog
ICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdl
bnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9
KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3As
IHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5T
U3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwo=
</data>
<flag name="commit-queue"
          id="484727"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456445</attachid>
            <date>2022-04-01 21:50:23 -0700</date>
            <delta_ts>2022-04-01 22:26:27 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>89267</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5
OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0
ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAg
ICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJl
dHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFt
ZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJl
cyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5k
ZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJ
bXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29w
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7
IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJy
b3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVt
b3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRl
eCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5v
dGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAg
QVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUy
NzMyY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3
cmFwcGVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBs
YXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBj
YXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdl
T3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xs
ZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxl
Y3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZl
UmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9u
Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFu
ZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rp
b25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5
OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25z
IG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRp
b24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdv
cmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmlj
YXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhh
dCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFt
ZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxh
dGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZp
Y2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0g
bm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIo
KSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBU
byBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxh
dG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9P
TClhY2Nlc3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGly
ZWN0aW9uCiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQ
YWdlKHNjcm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmlu
ZyBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAg
ICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1
dG8gbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3Jt
TmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0
ZU5TU3RyaW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZS5nZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNz
aWJpbGl0eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJm
XSIsIHNjcm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxp
dHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1
cyIgOiB0ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90
aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDog
dGVzdFN0cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmpl
Y3QgaGFuZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1w
dCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2
OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50
ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIp
OworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENP
TlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxk
OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWlu
Iik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIkln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3Mg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkw
MGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50
Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpu
ZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAg
c3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAt
MTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2Vk
QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8v
IG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9u
OjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAi
cmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAg
ICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAg
ICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFu
Z2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9k
b2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9y
OjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRp
dGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lk
Z2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4g
VGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAy
NTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAv
LyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13
ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRiNmQwZTViNDQ0Ny4u
MDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAgICAgICAgIHJl
dHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5n
KSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgICAgIHJl
dHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwogI2VuZGlmCiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2Ji
MmQwYzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VF
dmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAg
ICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2
YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmco
QVNDSUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJl
Z2lvbj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0
cmluZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAg
ICAgICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAg
QVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29s
IHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+
IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9
OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNv
bnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZv
clNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0
aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAg
LTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3Qo
UGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4
dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lv
bnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYg
KHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdp
b24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdy
YWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQw
ID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwx
MCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkm
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQg
PSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFk
aWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAg
ICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0
dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGlu
Zygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldp
dGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2
YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2
YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJf
cykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xv
cihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRo
QWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAg
dm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29u
c3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlw
ID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7
CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRo
c0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3Jh
ZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNo
IikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJh
Y2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0
aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBp
ZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENs
aXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJj
b250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRp
dXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91
bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShn
cmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNS
R0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29s
b3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAg
ICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6Ymxh
Y2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91
bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZh
bHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNl
QmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykp
CiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dy
b3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGlu
Z1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAg
ICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3Mp
ID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZh
dWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VH
cmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUy
Miw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQ
YWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25h
bDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNv
ciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJz
b3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJo
b3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAg
ICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250
ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5w
b3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nbwog
ICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRz
Q29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChl
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9u
cygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVl
Rm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NC
YXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29h
Lm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBi
b29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAog
dm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05B
TF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBU
X1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1p
bmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0g
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Vy
aWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklF
RF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04i
X3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZp
eGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlm
Rm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2Ri
MWRkMDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2Vu
dFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVz
ZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtl
dGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3NWRmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJhbWVEdXJhdGlvbiA9
IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIC8v
IFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9uIGZvbGxvdywgcG9y
dGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0
ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFNpbmNl
IHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBzaGFyZWQsIHdl
IGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5nIHRoZSBjb250
ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBkOWQz
Njc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApA
QCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5j
aWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNv
dWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5H
TAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwo
Y29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24p
OwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxz
SW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdD
R0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDFkNmFlMmUxMmU3
ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJT
SU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxz
X2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29k
ZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29k
ZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNj
Li4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2Ug
aWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQog
ICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAg
ICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0
Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+
OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hh
ZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5l
bmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkg
PSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xP
YmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRl
clNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNh
YWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJl
dHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5j
aWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBp
ZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkg
eworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25TdHJpbmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBp
cyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1
ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyAr
NDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1ZDkuLjAyMWIxZmY0NTIy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2
LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3Rl
bmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjRm
NzUxZDIxMzQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4Mjky
YjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdl
LCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVi
b2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJl
dHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwx
MSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1
cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNN
b2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1T
dHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdl
bnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQ
aG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7Cisg
ICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0
YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwog
ICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5
YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBs
YXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25l
LCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVx
dWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGlmIChtX3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRo
KCkpOwotICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0
byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7Cisg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBtX3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBp
ZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBG
aWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZp
bGVEZXZpY2UgJiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVl
c3QgX3NldFByb3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZh
bHVlKCldIGZvcktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2
MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAs
NyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0K
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3Bv
cnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3Jk
KCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dv
cmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9y
VGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApp
bmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChS
ZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBp
ZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJy
b3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmpl
Y3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVz
c2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygi
bWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclBy
b21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVz
dWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJy
b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vz
c2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAg
ICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVy
bCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygi
dXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6
OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1
LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgi
eCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIs
IHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywg
eC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5
LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3Ms
IFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYm
IGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0
aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0Iiwg
aGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0
aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUo
ImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdD
b250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3
LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1l
bnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVV
cGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAg
ICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVu
dC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9h
ZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07
IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAg
ICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0
SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3
ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRl
RWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0Vk
aXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIg
ICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIg
ICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246
OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAg
fSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9
Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBT
dHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFy
c2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAg
ICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFj
dGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1v
dmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZv
Y3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1
c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7
IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1l
bnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVF
bGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBT
ZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5z
ZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5n
dGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2
ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJv
dyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBu
b3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAg
ICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhj
cmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1
MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShj
b25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUi
X3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3Ms
IGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNv
b2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJw
YXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmco
KSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2Vj
dXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRw
T25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkp
OwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVT
aXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1l
U2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJu
IGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1
dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQp
CiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5w
dXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2Up
CitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291
cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAg
ICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOwor
ICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9p
bnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQ
b2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgot
ICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9z
OwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAi
VG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2lu
dGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0
dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0
dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAg
ICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJW
aWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAg
ICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBj
YXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVu
dCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmlu
ZGV4IDVlNDQwNjdlZjBhMi4uYzMwMTA4NTkzZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVu
dChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBw
b3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5
PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAg
ICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5
T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUg
PSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1
dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nr
c1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyAr
NDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNP
Tjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwt
PmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNv
Y2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5
T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nr
c1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24o
VmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmls
aXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2gg
KGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlz
cyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0Ogot
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0
IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21w
dEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJl
aGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3ku
dmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQ
YWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VM
b2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFn
ZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
ZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFu
ZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYg
c291cmNlLCBjb25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNv
dXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2
YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+
Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJj
ZSwgY29uCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVu
c2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwg
ZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0
aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRp
b25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJh
dGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNv
cHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNv
CiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNm
aWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBl
cnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcg
c3RyaW5nRm9yU1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExT
UHJvdG9jb2wxMzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFBy
b3RvY29sQWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9z
OwogICAgIGNhc2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3du
IjsKKyAgICAgICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4
U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQs
NSArNDQsNSBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICos
IE5TU3RyaW5nICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjlhNzYxMDZjYTBm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIubW0KQEAgLTU0LDE4ICs1NCwxOCBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGlj
dGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQp
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwp
CiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBjb21wYXJlOndpcmVd
ID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2Nh
bC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2ly
ZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9
IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkr
KykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdp
cmVUeXBlID0gd2lyZVtpXTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBj
aGFyIGxvY2FsVHlwZSA9IFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldOworICAgICAgICBjaGFy
IHdpcmVUeXBlID0gW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXTsKIAogICAgICAgICBpZiAobG9j
YWxUeXBlICE9IHdpcmVUeXBlKSB7CiAgICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQg
Y2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KQEAgLTk3MCw5ICs5NzAsOCBAQCBzdGF0aWMgTlNJ
bnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2Rl
cikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpO
U0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBo
YWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1
cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2ln
bmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3Ry
aW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1v
dGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAq
bG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBl
U3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0
eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9j
YWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1l
dGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2Vs
ZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5k
ZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE4
Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVPYmpl
Y3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCi1zdGF0
aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2Vs
ZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0cmluZyAqcmVwbHlCbG9j
a1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBi
bG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJpdGVkIG1ldGhvZDoKICAg
ICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9jb2xfZ2V0TWV0aG9kVHlw
ZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0xOTcsMTIgKzE5
NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3Rv
Y29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNTRVJUKG1ldGhvZFR5cGVF
bmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0gICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNpZ25hdHVyZSAqdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlw
ZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0TWV0aG9kU2lnbmF0dXJl
KTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0TWV0aG9kU2lnbmF0dXJl
IF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0luZGV4XS5fdHlwZVN0cmlu
ZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3Qg
V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2ln
bmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJ
bmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKLSAgICAgICAg
U3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRl
cmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKKyAgICAgICAgTlNTdHJp
bmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVT
dHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlC
bG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3Rvciwg
aSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUuaXNOdWxsKCkpIHsKKyAg
ICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAgICAgICAgICBOU0xvZyhA
Il9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6
IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUod2lyZUJsb2NrU2lnbmF0
dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAgICAgTlNMb2coQCJfaW52
b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlcyAh
PSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBleHBlY3RlZEJsb2NrU2ln
bmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9k
OiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlQCAhPSAlQCIsIHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
Mjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1v
dGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgIH07CiAKICAg
ICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFJlcGx5QmxvY2tD
YWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAgICBpZCByZXBseUJsb2Nr
ID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3aXJlQmxvY2tTaWduYXR1
cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5
SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgeworICAgICAgICBpZCByZXBs
eUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayhbd2lyZUJsb2Nr
U2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwg
cmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CiAgICAgICAgICAg
ICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9jXSBp
bml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBmb3JL
ZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3
OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5
Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVBy
ZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlj
a2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJp
Z2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90
YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lz
dGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwg
TlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hT
ZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7Cisg
ICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0
aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUz
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUq
IGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFt
ZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBl
eGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQg
ZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9
KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNj
cmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAg
ZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
bi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJS
T1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlv
biBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywy
OSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkg
ewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
eiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1
QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6
OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAg
ICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRm
b3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9z
LAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAg
ICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJf
cywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGlj
OgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJV
KzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAg
ICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAg
ICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAor
ICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3Ry
aW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZv
aWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25l
IE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFt
ZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFw
cGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5k
ZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJp
bmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAg
IGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVh
dCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNl
IGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJu
cyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAg
ICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5U
ZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2Vu
KQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMx
NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAg
LSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxp
bmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0Ojpj
cmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0
dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJl
bmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0u
ZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFs
dWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRv
Y3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1
ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1
YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBp
bmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdW
aWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikK
IHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGlu
ZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywg
VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24s
IGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVy
cmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZh
dGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhT
dHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2
LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilz
dHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRG
b250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOwor
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJB
cHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFi
NzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVh
ZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
VGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywg
QmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQu
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29u
c3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3Rv
clNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29u
c3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNv
cHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgy
dSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsK
IAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9y
U2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRh
c2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2Vz
IGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlr
ZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
c2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsK
KyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTIt
MSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAg
ICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1t
CmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBA
IC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRS
ZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlw
dD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycp
LnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVy
dCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hl
ZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0y
NzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25z
ZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVs
bHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBj
b25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9u
c2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwi
c3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7
IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0g
fSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9
fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0
KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikK
ICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBj
b25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBj
b25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwog
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdl
YlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAg
c3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQp
CiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMg
cmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihb
JzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6
ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9
IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVz
dElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAg
LTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVz
IH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0
MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVf
Q19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5
ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3Njcmlw
dD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciog
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYu
aW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJu
YWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5
UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAg
LTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQg
cmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBw
IGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQw
MjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERl
dmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Np
b25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50Iiwg
cmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMg
PSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIs
MTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3Jp
ZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcu
MC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7
Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9D
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0
bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAog
VEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1h
aW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIs
IG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIy
KHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJh
bWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdh
NWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVu
ZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQog
ewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092
ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJj
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRp
bmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6
Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZh
Y3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRB
dFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIq
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAo
ZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIg
cmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93
c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFp
bi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcg
KzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3Qg
dGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5
NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAg
ICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1h
aW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250
ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNl
Lmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNl
Lmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9z
LCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdp
bi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAg
ICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5
LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09O
VGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsg
ImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAg
ICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUt
b3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2Vi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYs
NyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNo
KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
LyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAg
fSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3
MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1By
ZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWlu
UHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
V2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRl
ZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dT
aXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6
Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJL
aXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3
IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50
TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9k
ZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1v
ZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0
Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENv
bnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsK
ICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVa
ZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEki
X3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdp
dGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNl
ckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBA
IlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9
CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9y
IHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAg
IGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUv
MTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAg
ICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRd
OwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxl
Il0pOwo=
</data>
<flag name="commit-queue"
          id="484731"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456446</attachid>
            <date>2022-04-01 22:26:27 -0700</date>
            <delta_ts>2022-04-01 22:43:22 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>96582</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhp
Y3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5
OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0
ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVydGllczsKICAg
ICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJl
dHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFt
ZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJl
cyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5k
ZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJ
bXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29w
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7
IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJy
b3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVt
b3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkg
fSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRl
eCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5v
dGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24pOwogCiAgICAg
QVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWEuLmVhMjUy
NzMyY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3
cmFwcGVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBs
YXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxpdGVyYWwgQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBj
YXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdl
T3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xs
ZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxl
Y3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJB
WFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZl
UmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9u
Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFu
ZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rp
b25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5
OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENv
cmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25z
IG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRp
b24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdv
cmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmlj
YXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhh
dCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFt
ZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxh
dGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZp
Y2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0g
bm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIo
KSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBU
byBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxh
dG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZp
Y2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAK
IHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0
aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYs
IGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9P
TClhY2Nlc3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJlY3Rpb24pZGly
ZWN0aW9uCiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQ
YWdlKHNjcm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgIFN0cmlu
ZyBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAg
ICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgICAgIGF1
dG8gbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3Jt
TmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0
ZU5TU3RyaW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZS5nZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNz
aWJpbGl0eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjogJS4yZiAlLjJm
XSIsIHNjcm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxp
dHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpAeyBAInN0YXR1
cyIgOiB0ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90
aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJzdGF0dXMiIDog
dGVzdFN0cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhpcyBvYmpl
Y3QgaGFuZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91bGQgYXR0ZW1w
dCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2
OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdElu
V29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJ
TlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50
ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIp
OworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFNDUklQVENP
TlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxk
OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWlu
Iik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIkln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3Mg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCmluZGV4IDkw
MGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50
Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAg
aWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpu
ZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAg
c3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAt
MTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2Vk
QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgICAgIC8v
IG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9u
OjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAi
cmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAg
ICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAg
ICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFu
Z2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFsdWUuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9k
b2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9y
OjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0eWxlID0gZWRp
dGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8vIFRleHQgd2lk
Z2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4g
VGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1bHRTdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAy
NTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAgICAKICAgICAv
LyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxpa2UgZm9udC13
ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRiNmQwZTViNDQ0Ny4u
MDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAgICAgICAgIHJl
dHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5n
KSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgICAgIHJl
dHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwogI2VuZGlmCiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2Ji
MmQwYzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VF
dmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAg
ICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2
YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmco
QVNDSUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJl
Z2lvbj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0
cmluZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAg
ICAgICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAg
QVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29s
IHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+
IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9
OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNv
bnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZv
clNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0
aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAg
LTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3Qo
UGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4
dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lv
bnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAg
IGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9r
ZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYg
KHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdp
b24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdy
YWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQw
ID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwx
MCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkm
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQg
PSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFk
aWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRl
KFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAg
ICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0
dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGlu
Zygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldp
dGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2
YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2
YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJf
cykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xv
cihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAg
Z3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRo
QWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAg
dm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29u
c3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlw
ID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7
CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRo
c0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3Jh
ZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNo
IikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJh
Y2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0
aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBp
ZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENs
aXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMp
IHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJj
b250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRp
dXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91
bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShn
cmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNS
R0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAg
ICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29s
b3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAg
ICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6Ymxh
Y2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91
bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZh
bHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNl
QmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykp
CiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dy
b3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGlu
Z1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAg
ICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3Mp
ID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZh
dWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VH
cmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUy
Miw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQ
YWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25h
bDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNv
ciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJz
b3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJo
b3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAg
ICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250
ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5w
b3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1Nbwog
ICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRz
Q29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChl
dmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9u
cygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVl
Rm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NC
YXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29h
Lm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBi
b29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAog
dm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05B
TF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBU
X1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1p
bmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0g
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Vy
aWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklF
RF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04i
X3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZp
eGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlm
Rm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2Ri
MWRkMDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2Vu
dFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25O
YW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVz
ZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQg
U3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtl
dGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3NWRmNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Fu
Z2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJhbWVEdXJhdGlvbiA9
IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIC8v
IFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9uIGZvbGxvdywgcG9y
dGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0
ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFNpbmNl
IHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBzaGFyZWQsIHdl
IGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5nIHRoZSBjb250
ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBXZWJHTFJlbmRl
cmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBkOWQz
Njc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApA
QCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5j
aWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNv
dWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5H
TAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwo
Y29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24p
OwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxz
SW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVp
Z2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBH
Q0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdD
R0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDFkNmFlMmUxMmU3
ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJT
SU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxz
X2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29k
ZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29k
ZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBmM2Nh
OGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
cm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NUYWJs
ZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURlc2Ny
aXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBTdHJp
bmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVy
Il9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVu
c2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcg
b3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZl
cl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVy
X2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdM
X0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAg
ICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2lu
c3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdf
aW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAgJiYg
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9z
KSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNl
ZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NS
R0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZm
ZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1l
YnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAK
ICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190
ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09
ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9m
bG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09
ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVy
ZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4
dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAg
IGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZP
Uk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vs
c2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQ
TEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRp
ZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6
OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJl
X2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RL
KQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
ZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6
IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRF
eHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBz
dGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdM
X09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9y
dHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVj
dCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNj
Li4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3Bw
CkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2Ug
aWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQog
ICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAg
ICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0
Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+
OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hh
ZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5l
bmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkg
PSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xP
YmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRl
clNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNh
YWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJl
dHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5j
aWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBp
ZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkg
eworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25TdHJpbmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBp
cyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1
ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyAr
NDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2
LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3Rl
bmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEw
OCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhj
b25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
ZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRl
cHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNp
b25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYg
KGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJ
TDhfRVhUOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjRmNzUxZDIxMzQyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMjQwLDExICsyNDAsMTEgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdD
R0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFs
aWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0
QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0
c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7Cisg
ICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1H
X211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykpIHsKICAgICAgICAgYXR0cmlidXRl
cy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmli
dXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0
cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJk
cmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0
ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6
Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYm
IGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFn
ZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpp
bmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6
Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2Nl
bmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50
KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VI
YXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4g
Ik9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7Cisg
ICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5h
bWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4
MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4
LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9s
bGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVy
ICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0
ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRU
eXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxh
eWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBp
ZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4
IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
QEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX3VybC5pc0xvY2FsRmls
ZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVw
RmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3Rl
bTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBt
X3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNl
SWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJl
ciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVx
dWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3Jk
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMu
LjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2
LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2Um
IHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRl
c3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2Fk
ZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xv
YWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAg
TGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2
OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEg
QEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNv
ZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3Mp
OwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JN
ZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFl
cnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUy
NDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25z
ZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNT
aG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29s
ZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cp
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29t
bWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dz
aW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQi
KTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5n
Q29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJs
ID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1
cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlm
ICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0
V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAg
ICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAg
ICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAg
ICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAg
IHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAg
YXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAg
IHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAg
ICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVl
KCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3Zl
KHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAg
YXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3Ry
aW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAi
ZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRv
TG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAg
ICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVs
ZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7
ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAK
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
ICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pT
T05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10g
PQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAg
ImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQg
fHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBA
IC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAg
ICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4g
ZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1
ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlz
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAg
ICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVz
dWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8
IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2Up
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAi
ICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAg
ICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1l
bnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAg
ICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50
LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAg
ICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgog
ICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRl
cmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAg
ICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCkt
PnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNv
b2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29v
a2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikp
OworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1
ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNv
b2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5
LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9u
Il9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGly
ZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRl
LnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAt
MjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjpp
bnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0
ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlw
ZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAg
ICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBl
OjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChp
bnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAg
ICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3Vz
ZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJU
eXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0
dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAg
ICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAg
ICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBj
YXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7Cisg
ICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQ
b2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25P
cmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1
cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7Cisg
ICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxl
bWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uYzMwMTA4
NTkzZWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAg
ICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9y
dFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJn
dltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0
MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046
Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5p
c1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAg
fQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1By
b3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgi
c29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5h
c1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkK
ICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lv
blZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAg
ICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Zl
cnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lk
IFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBj
YXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRC
b29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1
ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0Fu
ZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRp
c21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywg
ImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBV
bmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2Vw
dCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5k
Tm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmRO
b3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRj
aCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVn
eTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgot
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJh
dGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0g
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMu
cHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5t
bSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDNiNmZmOGFm
MjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5t
bQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1Rl
eHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAgICAgLy8gIklm
IGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlm
ICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlT
aXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9w
LiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlv
biBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9y
KCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIo
Y29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8gIklmIGFueSBv
ZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFs
aWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkg
ewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAg
ICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWls
dXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAxLDcg
KzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0
IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFueSBvZiB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVD
b3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAg
ICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAg
IG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4i
KTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlv
biBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpA
QCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJvdG9jb2woU1NM
UHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAgICAgICAgcmV0
dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAgICAgICByZXR1
cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29s
VW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0dXJuICJVbmtu
b3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2
Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFzcyBEaWN0aW9u
YXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29sIG1ldGhvZFNp
Z25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5nICopOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bQppbmRleCBhOWJlYzU4NzNlZDQuLjlhNzYxMDZjYTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0LDE4
ICs1NCwxOCBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9i
amVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmIHdpcmUs
IGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxl
KE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxvY2FsID09IHdp
cmUpCisgICAgaWYgKFtsb2NhbCBjb21wYXJlOndpcmVdID09ICBOU09yZGVyZWRTYW1lKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0
aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFyIGxvY2Fs
VHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsKKyAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IFtsb2NhbCBj
aGFyYWN0ZXJBdEluZGV4OmldOworICAgICAgICBjaGFyIHdpcmVUeXBlID0gW3dpcmUgY2hhcmFj
dGVyQXRJbmRleDppXTsKIAogICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7CiAg
ICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJs
ZS4KQEAgLTk3MCw5ICs5NzAsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0
aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1
cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRp
b25FeGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsK
IAotICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhT
dHJpbmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0
aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0Ojpt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2Fs
TWV0aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBb
aW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0
OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhv
ZFNpZ25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hp
dmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2ln
bmF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/
IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNS
ZXBseUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2Uy
NjJkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6
OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAq
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWdu
YXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJ
bmRleCkKK3N0YXRpYyBOU1N0cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJv
dG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJl
cXVpcmVkLCBub24taW5oZXJpdGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBl
RW5jb2RpbmcgPSBfcHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxl
Y3RvciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJl
cGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUlu
dGVnZXIgYgogCiAgICAgQVNTRVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRo
b2RUeXBlRW5jb2RpbmcpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBOU01ldGhvZFNpZ25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0
aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsK
ICAgICBBU1NFUlQodGFyZ2V0TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhv
ZFNpZ25hdHVyZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIHJldHVybiBbdGFyZ2V0TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJn
dW1lbnRJbmRleDpibG9ja0luZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3
IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZv
Y2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0
dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4
KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWdu
YXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0
aW9uLnNlbGVjdG9yLCBpKTsKKyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9
IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+Ymxv
Y2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5n
ICpleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNl
IHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVj
dGVkQmxvY2tTaWduYXR1cmUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlKSB7CiAgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0
byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNp
Z25hdHVyZSIpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0
dXJlc0FyZUNvbXBhdGlibGUod2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0
dXJlKSkgewotICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFs
aWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVy
ZS51dGY4KCkuZGF0YSgpLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVw
bHkgYmxvY2sgc2lnbmF0dXJlOiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQp
X2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1v
dGVPYmplY3RJbnZvY2F0CiAgICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tD
YWxsQ2hlY2tlcj4gY2hlY2tlciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYs
IHJlcGx5SUQpOwotICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2Fy
ZGluZ0NhcHR1cmVCbG9jayh3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVy
ZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlv
biAqaW52b2NhdGlvbikgeworICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFs
Rm9yd2FyZGluZ0NhcHR1cmVCbG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBb
aW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZv
Y2F0aW9uICppbnZvY2F0aW9uKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5T
KFtbV0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5j
b2RlciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dh
cm5pbmdDb2NvYS5tbQppbmRleCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbQpAQCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxz
QmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5t
YWx3YXJlRGV0YWlsc0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3Zp
ZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICBy
ZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2Fm
YXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0
bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJv
d3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYz
LDggQEAgc3RhdGljIFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVz
dWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmlu
ZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlBy
b3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNv
bS9jb21wbGFpbi5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29v
Z2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAg
cmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFy
aSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3Jl
cG9ydF9lcnJvci8/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJD
b2NvYS5tbQppbmRleCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlckNvY29hLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcjo6ZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewot
ICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0lu
Zm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lz
dGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2Fy
X3F1aWNrbG9va19idXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1
aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZk
MjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246Oldl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAg
c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQot
ICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1
dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBs
ZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5
NDFjYWEyYi4uZmJlMDJlYzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5K
YXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90
ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0
YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBu
b3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlw
ZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFp
bi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3Jp
cHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQ
QUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAg
ICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAg
ICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoi
X3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInki
LCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAg
ICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIi
LCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAg
IlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktl
eUkiX3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAi
aSJfcywgIktleUkiX3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJ1IiwgInUiLAotICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSsw
MDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQz
MjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBV
UkwmKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQt
PnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNl
ckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFu
ZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGll
bnRDb25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcg
Kzg2LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25p
bmdJZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikg
ewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAg
IC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJw
dXNoZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25p
bmdJZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAg
ICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5U
ZXN0V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0g
ImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICgh
bV9ob3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRl
bnRpZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlk
ODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpA
QCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0
ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChk
b2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRv
Y3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5z
dHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJl
dHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50
LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRy
IH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBA
IC0yNzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxs
aW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmlu
ZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRX
b3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9m
U3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCog
YmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5
ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29k
aW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29k
aW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9h
ZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5m
MTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRo
U3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJl
ZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwot
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJB
cHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0
b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2
YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMw
YmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdU
Rl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVm
YXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBk
ZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFT
U0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFT
U0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VR
KDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNT
RVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEo
NnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVT
VChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNh
dXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBv
ciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwg
bW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lm
ICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxz
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
UHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
QXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5
UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
UHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIi
U1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3
IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUg
eyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29s
IHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChS
ZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkK
ICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBj
b25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAK
ICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50
aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZl
bnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlw
dD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQv
aHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9i
KFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlw
ZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50
aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6
RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsi
OworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAg
ICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAg
ICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNl
cnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9
LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJf
cywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0g
fSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwog
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEz
ICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNo
YXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQu
aHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNo
ZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNo
ZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAg
LTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlh
dGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0
aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0
PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9o
dG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcg
UmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIp
PC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAi
LyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAg
ICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwg
anMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNl
cnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0
ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAi
LyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sg
IkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQog
ICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51
bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxl
VVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBz
Oi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBA
IFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0
ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRl
c0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWlu
U1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9u
IGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjog
JyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9
PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9z
dE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0
aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNz
YWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsK
IH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBl
eHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0
LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAg
ICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWlu
Lmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBt
YWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsg
IkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRC
eXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0
aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRo
cmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBj
ZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcs
NyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRz
UmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEo
QCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlv
biBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Np
b24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9z
OwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNr
KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
LyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAg
ICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURh
dGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUs
MjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVz
dERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMg
Y29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFt
ZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVy
Omh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7
bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5Pjwv
aHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9D
RE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQg
PSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsK
KylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Np
b25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewot
ICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1h
aW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0g
fSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5
MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVm
N2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEz
MSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAg
V2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVh
ZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGlu
Z092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRp
ZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21h
aW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVz
ZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVu
dENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0g
UiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNP
VVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24o
cmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVn
KSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExp
c3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNX
UkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdv
cmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
KHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwog
CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxP
cmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFw
cEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAg
ICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1
Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjog
U2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsK
KyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtl
ciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIp
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0g
ZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJl
Z2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3Rl
ckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAi
L21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3
LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3Rv
cmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3
LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFs
c2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7Cisg
ICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVT
VChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0
aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwK
KyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIv
ZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJf
cyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0g
fSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250
ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7
ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9z
LCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAK
ICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIs
IHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9k
ZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9z
IH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9
LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAg
ICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJj
NWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxl
dGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0
ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywg
eyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNz
TmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0
aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRD
b250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRN
b2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3
IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25h
bDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9
LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xh
c3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVu
dE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgx
MDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9k
ZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+
LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2Rl
PiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9
IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwg
UmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4g
ZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9
IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRl
PFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRl
bnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcg
QEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFy
aW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNl
ckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdl
YktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9
LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0Nv
bnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3
ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxh
LzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQx
OSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0
b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBh
cHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2Jp
bGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2Rl
RGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRl
bGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dl
YlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAg
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lz
aW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcg
bmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250
YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
</data>
<flag name="commit-queue"
          id="484733"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456448</attachid>
            <date>2022-04-01 22:43:22 -0700</date>
            <delta_ts>2022-04-01 22:53:08 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>107801</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggMWFlNjIyOTg1OGZlLi41YmEzZWVlNDRiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJUQ1NkcFR5cGUsIFN0cmluZz4+IGZldGNoRGVzY3JpcHRp
b24oR3N0RWxlbWVudCoKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2RwU3RyaW5nKGdzdF9zZHBf
bWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsKICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHdlYnJ0Y0JpbiwgIiVzLWRlc2NyaXB0aW9uIFNEUDogJXMiLCBuYW1lLCBzZHBTdHJpbmcuZ2V0
KCkpOwotICAgIHJldHVybiB7IHsgZnJvbVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0
aW9uLmdldCgpKSwgc2RwU3RyaW5nLmdldCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZyb21TZXNz
aW9uRGVzY3JpcHRpb25UeXBlKCpkZXNjcmlwdGlvbi5nZXQoKSksIFN0cmluZyB7IHNkcFN0cmlu
Zy5nZXQoKSB9IH0gfTsKIH0KIAogc3RhdGljIEdzdFdlYlJUQ1NpZ25hbGluZ1N0YXRlIGZldGNo
U2lnbmFsaW5nU3RhdGUoR3N0RWxlbWVudCogd2VicnRjQmluKQpAQCAtNDU2LDcgKzQ1Niw3IEBA
IHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6c3RvcmVSZW1vdGVNTGluZUluZm8oR3N0U0RQ
TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9tZWRpYUZvck1pZC5zZXQoeyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAi
YXVkaW8iKSA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBtX21lZGlhRm9yTWlkLnNldCh7IG1pZCB9
LCBnX3N0cl9lcXVhbChtZWRpYVR5cGUsICJhdWRpbyJfcykgPyBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbyA6IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKIAogICAg
ICAgICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVn
aW5zLWJhZC8tL21lcmdlX3JlcXVlc3RzLzE5MDcKICAgICAgICAgaWYgKHNkcE1lZGlhSGFzQXR0
cmlidXRlS2V5KG1lZGlhLCAiaWNlLWxpdGUiKSkgewpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRlKEdTdHJlYW1lckljZUNhbmRp
ZGF0ZSYgY2FuZGlkYXRlLCBQCiAKICAgICBpZiAoIWNhbmRpZGF0ZS5jYW5kaWRhdGUuc3RhcnRz
V2l0aCgiY2FuZGlkYXRlOiIpKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBj
cmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRkSWNlQ2FuZGlkYXRlQ2Fs
bGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNh
bmRpZGF0ZTo8Y2FuZGlkYXRlLXN0cj4iIH0pOworICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNhbmRpZGF0ZTo8Y2FuZGlkYXRl
LXN0cj4iX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTMy
LDcgKzkzMiw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRl
KEdTdHJlYW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAgICAgYXV0byBwYXJzZWRDYW5k
aWRhdGUgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChjYW5kaWRhdGUuY2FuZGlkYXRlKTsKICAgICBp
ZiAoIXBhcnNlZENhbmRpZGF0ZSkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0g
Y3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZEljZUNhbmRpZGF0ZUNh
bGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3Np
bmcgSUNFIGNhbmRpZGF0ZSIgfSk7CisgICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IsICJFcnJvciBwcm9jZXNzaW5nIElDRSBjYW5kaWRhdGUiX3MgfSk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA4NSw5ICsxMDg1LDkgQEAg
dm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNj
ZWVkZWQoR1VuaXF1ZVB0cjxHc3RXZWIKIAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcChn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgICAgIGlmICht
X2lzSW5pdGlhdG9yKQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRl
T2ZmZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQoKSB9KTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlQW5zd2Vy
U3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdldCgpIH0pOwogICAgIH0pOwog
fQogCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChHVW5pcXVlUHRyPEdFcnJvcj4mJgogICAgICAg
ICBpZiAoaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBl
eGMgPSBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6
ICJVbmtub3duIEVycm9yIiB9OworICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yLCBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiX3MgfTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCiAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlckZhaWxlZChXVEZNb3ZlKGV4YykpOwogICAgICAgICBlbHNlCkBA
IC0xMTI1LDcgKzExMjUsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNvbGxlY3RU
cmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXJlY2VpdmVyIHx8ICFtaWQpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVU
cmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
PihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRpYUZvck1pZC5nZXQobWlkLmdldCgpKSk7CisgICAg
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFr
ZVVuaXF1ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkp
LCBtX21lZGlhRm9yTWlkLmdldChTdHJpbmcgeyBtaWQuZ2V0KCkgfSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKaW5kZXggMjU2NGU5YTQ2NDgwLi5mNmFmMTIwYWVhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNTksNDAgKzU5
LDQwIEBAIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmNyZWF0ZSA9IGNyZWF0ZUdTdHJlYW1lclBlZXJDCiBzdGF0aWMgUlRDUnRwQ2FwYWJpbGl0aWVz
IGdzdHJlYW1lclJ0cENhcGF0aWJsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKQogewogICAgIFJU
Q1J0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7Ci0gICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4
dGVuc2lvbnMuYXBwZW5kKHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJt
Y2F0LXRyYW5zcG9ydC13aWRlLWNjLWV4dGVuc2lvbnMtMDEiIH0pOworICAgIGNhcGFiaWxpdGll
cy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZCh7ICJodHRwOi8vd3d3LmlldGYub3JnL2lkL2RyYWZ0
LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25zLTAxIl9zIH0pOwogICAg
IGlmIChraW5kID09ICJhdWRpbyJfcykgewogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJl
c2VydmVDYXBhY2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vT1BVUyIsCisgICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL09QVVMiX3MsCiAgICAg
ICAgICAgICAuY2xvY2tSYXRlID0gNDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAyLAot
ICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL0c3MjIiLAorICAgICAg
ICAgICAgLnNkcEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vRzcyMiJfcywK
ICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0g
MSwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRp
ZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01BIiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEi
X3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVs
cyA9IDEsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2FwYWJp
bGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNVSIs
CisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOworICAgICAgICBj
YXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9Q
Q01VIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgwMDAsCiAgICAgICAgICAgICAuY2hh
bm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7CisgICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAiZW1wdHlTdHJpbmcoKSB9KTsKICAgICB9IGVsc2UgewotICAgICAg
ICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6dmlkZW8t
b3JpZW50YXRpb24iIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iX3MgfSk7CiAgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAgICBjYXBhYmlsaXRpZXMu
Y29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiLAorICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRl
by9WUDgiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNr
ZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5j
aGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQOSJfcywKICAgICAgICAgICAgIC5j
bG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlk
PTAiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5t
aW1lVHlwZSA9ICJ2aWRlby9WUDkiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2Zp
bGUtaWQ9MCJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5Il9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MSIgfSk7Ci0g
ICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0g
InZpZGVvL0gyNjQiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MSJf
cyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAidmlkZW8vSDI2NCJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwK
LSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxl
LWxldmVsLWlkPTQyZTAxZiIgfSk7CisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSAicGFja2V0
aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiX3MgfSk7CiAgICAgfQogICAg
IHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBHU3RyZWFt
ZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYg
b3B0aW9ucykKIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFu
c3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCiB7CiAgICAgaWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRp
b25TZXQpIHsKLSAgICAgICAgY3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiTm8gcmVtb3RlIGRlc2NyaXB0aW9uIHNldCIgfSk7CisgICAgICAgIGNyZWF0
ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBk
ZXNjcmlwdGlvbiBzZXQiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9lbmRw
b2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAK
aW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUo
V0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVy
dGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMp
OwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3Bl
cnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0
ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1w
bC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9w
RXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYp
PiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAg
ZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAg
ICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2Fn
ZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBl
X091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6
Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMg
U3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24p
OwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZj
NWEuLmVhMjUyNzMyY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0
V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlm
aWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxp
dGVyYWwgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwg
bmFtZSA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24p
IHsKICAgICBjYXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3Vz
ZWRVSUVsZW1lbnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAg
ICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWEltYWdlT3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlD
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENl
bGxzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhM
aXZlUmVnaW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRT
dGF0dXNDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOwor
ICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5n
ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
VmFsdWVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9
ICJBWEV4cGFuZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJl
bnRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNv
cnREaXJlY3Rpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAg
LTk4LDE1ICs5OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3Rp
ZmljYXRpb25zIG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3RO
b3RpZmljYXRpb24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0
LiBTbyBhIHdvcmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBv
c3ROb3RpZmljYXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBi
dW5kbGUgdGhhdCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZp
Y2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZp
Y2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5h
bWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBw
b3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRp
b25OYW1lID0gbm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3Qt
PndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAK
ICAgICAvLyBUbyBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0
aGUgc2ltdWxhdG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIo
KSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQo
KV07CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIg
QEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJl
Y3Rpb24pZGlyZWN0aW9uCiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
c2Nyb2xsQnlQYWdlKHNjcm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9u
UGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxl
ZCk7Ci0gICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07Cisg
ICAgICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xs
ZWQpLmNyZWF0ZU5TU3RyaW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90
aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2Vs
ZiBfYWNjZXNzaWJpbGl0eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RT
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjog
JS4yZiAlLjJmXSIsIHNjcm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFj
Y2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpA
eyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJz
dGF0dXMiIDogdGVzdFN0cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
dGhpcyBvYmplY3QgaGFuZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91
bGQgYXR0ZW1wdCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
NTY5LDcgKzU2OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQg
ZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAg
IFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3Jp
cHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91
bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRh
aWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBk
b21haW4iX3MgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0
QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24g
ZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25z
dCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFs
dWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0
YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRG
b3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAg
ICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5n
RGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOwor
ICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3
VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVm
dDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1l
bnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFs
dWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVt
ZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZv
aWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0
eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8v
IFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBw
cm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1
bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAg
ICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxp
a2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkg
c3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRiNmQw
ZTViNDQ0Ny4uMDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAg
ICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhG
b3JMb2dnaW5nKSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0g
ICAgICAgIHJldHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwogI2VuZGlm
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5k
ZXggNTEyM2JiMmQwYzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZp
bmFsOwogCiAgICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0g
ICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZv
clNldHRpbmcoQVNDSUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRl
cmFjdGlvblJlZ2lvbj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0g
ICAgICAgIFN0cmluZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZh
bHVlOworICAgICAgICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsK
KyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAg
ICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9y
PFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JT
ZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5
Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5n
LmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6
ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAg
ICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRp
bmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7
CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lk
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwog
Ci0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAg
IGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAg
ICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBH
cmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERh
dGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEs
MTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtl
R3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFs
RGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7
Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZh
bHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVl
Rm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAg
ICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNr
KS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xp
cCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNv
bnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAg
ICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSku
Y29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0
NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAg
ICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBz
aG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxk
Q2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBj
bGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0
aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJh
Y2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0
aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNo
b3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFs
dWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAog
ICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYg
KHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBj
bGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JT
ZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXpl
KCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBm
bG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAq
IHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1
czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
fSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAg
ICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihD
b2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAg
dm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdo
dEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRp
ZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICgh
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxD
b2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xp
Z2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0
aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwor
ICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVh
bFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9u
KCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRp
ZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMp
KSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAg
IH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91
c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3Rk
OjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRp
bmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAg
ICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JT
ZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9z
KSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2
ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50
cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxh
dGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJ
bkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAot
ICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZl
bnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50
LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkg
JiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdz
QmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2
MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFi
bGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVz
KCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9U
UkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0Mi
LCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhp
cmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5H
VUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9O
KTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0g
ICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRT
YW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRf
U0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWlu
Y2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOwor
CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOwor
ICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAg
IHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRT
YW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmlu
ZGV4IGViY2RiMWRkMDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNz
IFVzZXJBZ2VudFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3Ry
aW5nKCksIFVzZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVND
SUlMaXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5
c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3NWRm
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJhbWVE
dXJhdGlvbiA9IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkCiAKIC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9uIGZv
bGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
Ojp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8gRklY
TUU6IFNpbmNlIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBz
aGFyZWQsIHdlIGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5n
IHRoZSBjb250ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApp
bmRleCBkOWQzNjc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaApAQCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1
bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgog
ICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2
b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFl
ZjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIg
QEAgc3RhdGljIFN0cmluZyBnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJp
bmcmIGZhbWlseSkKICAgICAgICAgcmV0dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0g
ZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwg
ZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1p
bHkpKQotICAgICAgICByZXR1cm4gInNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsK
ICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6
U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAg
cmV0dXJuICJzYW5zLXNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRh
LT5hdChGYW1pbHlOYW1lc0luZGV4OjpNb25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4g
Im1vbm9zcGFjZSI7CisgICAgICAgIHJldHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1p
bHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5
KSkKLSAgICAgICAgcmV0dXJuICJjdXJzaXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpGYW50YXN5RmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0
dXJuICJmYW50YXN5Il9zOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0g
ZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwg
ZmFtaWx5ID09ICItd2Via2l0LXN5c3RlbS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRH
dGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIH0KIAogI2lmIEZDX1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlm
NzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwg
MjAsIDApCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19n
ZXRfbWltZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNv
ZGVjLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQo
KSB9OwogI2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2
Ny4uMzJlZDNhZThiMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250
ZW50c0VudHJ5KEdzdFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24o
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdp
bmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0K
ICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBi
b29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcAppbmRleCA3M2UyNDg0NWNiMzMuLjkxOTYzZDMyOTA5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgog
ICAgIC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQg
YW5kIEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9PSAi
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUi
KTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVf
aW5zdGFuY2VkX2FycmF5cyIpIHsKLSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAgICAg
JiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2Vk
IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiKSk7CisgICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUkJfaW5zdGFuY2VkX2FycmF5cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSk7
CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIpICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdC
IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJf
c1JHQiIpKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX3RleHR1cmVfc1JHQiJfcykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1lID09
ICJHTF9FWFRfZnJhZ19kZXB0aCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAgIC8v
IERlc2t0b3AgR0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlmIChu
YW1lID09ICJHTF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgLy8gSWYgR0xfQVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1cmVf
ZmxvYXQgaXMgYXZhaWxhYmxlIHRoZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1cmVf
aGFsZl9mbG9hdCwgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0X2xpbmVhciBhcyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiB8
fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0
Il9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zs
b2F0Il9zKTsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5h
bWUgPT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShHVEsp
KQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
dmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAgICAg
fQogCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikK
LSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0gICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1
ZmZlcnMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX2RyYXdfYnVmZmVycyJfcyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVuc2lv
bnMoKQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNpb25z
R0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRpYyBj
b25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QiKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsK
ICAgICByZXR1cm4gc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMwNDBj
ZWJkYTlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3
NCwxMiArMTc0LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xz
aGFkZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAg
IHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiAiIjsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xP
YmplY3QsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJh
dG9yIHJlc3VsdCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwog
CiAgICAgaWYgKHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQot
ICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3Vs
dC0+dmFsdWU7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAog
ICAgIH0KIAogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1Li5i
OTExMTAyNTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjY0LDcg
KzI2NCw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5H
TEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIikp
OwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NB
ZGRyZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAgbV9z
dXBwb3J0c0FOR0xFaW5zdGFuY2VkQXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICht
YWpvclZlcnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9pbnN0YW5jZWRfYXJyYXlzIikgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtYWpvclZl
cnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9p
bnN0YW5jZWRfYXJyYXlzIl9zKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9kcmF3X2luc3RhbmNlZCJfcykpKSB7CiAgICAgICAgICAgICBtX2dsVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFID0gOjpnbFZlcnRleEF0dHJpYkRpdmlzb3I7CiAgICAgICAgICAgICBtX2ds
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdBcnJheXNJbnN0YW5jZWQ7CiAgICAg
ICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0VsZW1lbnRz
SW5zdGFuY2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggY2Fh
YWI2ZmM1OThiLi4wYTZhODhjZjFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcApAQCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0
dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAg
YXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNp
bCkgewotICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKSkgewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uU3RyaW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlm
IChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7
CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvblN0cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlz
IHRydWUuCiAgICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTIuLmFmNzVl
MGQwOTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3ICs0
MzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRp
YWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUg
aG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBp
bXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIq
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3Rl
bmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lk
IHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0
YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGMzNWIyZjBmMTVkOS4uN2I1NGEwMWYzZTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtODYs
NyArODYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5j
aWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogfQogCiBib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA4
LDcgKzEwOCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNv
bnN0IEludFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBl
eHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVw
dGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSkKICAg
ICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lM
OF9FWFQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9y
bWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCmluZGV4IDgzYjliODZjNTMyNy4uM2FlNjJiZjZlZWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IAogICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVp
cmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2ls
QnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBz
dXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBh
dHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11
c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0
cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1w
bGVkX3JlbmRlcl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlh
cyA9IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4
IDM2ODcyMmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3Rl
Ym9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRy
b3AgcGFzdGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFm
YTJjOWFjNy4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9V
c2VyQWdlbnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXND
bGFzc2ljUGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxp
Y2F0aW9uQ2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNN
b2RlT3JpZ2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlM
aXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBh
YmlsaXR5KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAg
IHJldHVybiAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4g
ImlQaG9uZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJB
Z2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFl
MGVjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
KCkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlz
LT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVy
Q29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXli
YWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAi
Iik7CisgICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQy
ZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkg
KzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgp
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAg
ICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVs
bCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxl
RGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVT
eXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAg
ICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0
aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAg
ICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldp
dGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVBy
b3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCmluZGV4IDBmZTY1YTI5ZTYzNi4uYzIwZWM4ZTcyMTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmll
d0xvYWRlckNsaWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9
CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKCIiKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihlbXB0eVN0cmluZygpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGE5MDkwZjdlYTFhMy4uMGNmNDI0ODI5
ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01ODYsNyArNTg2LDcg
QEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAg
ICBwYWdlLnNldE91dHNpZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxz
ZSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6
c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoIiIpOworICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50
OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZChlbXB0eVN0cmluZygpKTsKICAgICBMZWdhY3lQcmV2
aWV3TG9hZGVyOjpzZXRDbGllbnRGb3JUZXN0aW5nKG51bGxwdHIpOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDUyZTI3Njc2M2NhMy4uODM1OTY5YmZhMzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBDb21tYW5k
UmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6
b3B0aW9uYWw8RXJyb3JDbwogICAgIGlmICghZXJyb3JPYmplY3QpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gZXJyb3IgPSBlcnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSIpOworICAg
IGF1dG8gZXJyb3IgPSBlcnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSJfcyk7CiAgICAgaWYg
KCFlcnJvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJv
ck9iamVjdC0+Z2V0U3RyaW5nKCJtZXNzYWdlIik7CisgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBl
cnJvck9iamVjdC0+Z2V0U3RyaW5nKCJtZXNzYWdlIl9zKTsKICAgICBpZiAoIWVycm9yTWVzc2Fn
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCAwNTI0NmJhYTYzYzUu
LmQ3MWY0ZDEwNTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9p
ZCBTZXNzaW9uOjpoYW5kbGVVc2VyUHJvbXB0cyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0
JiYpPiYmIGNvbXBsZXRpb25IYW4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiKTsKKyAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZh
U2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3Vs
dCJfcyk7CiAgICAgICAgIGlmICghaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZykgewogICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0
OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU5
LDEzICszNTksMTMgQEAgdm9pZCBTZXNzaW9uOjpnZXRDdXJyZW50VVJMKEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0
ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCIpOworICAgICAg
ICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0
T2JqZWN0KCJjb250ZXh0Il9zKTsKICAgICAgICAgICAgIGlmICghYnJvd3NpbmdDb250ZXh0KSB7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChD
b21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2lu
Z0NvbnRleHQtPmdldFN0cmluZygidXJsIik7CisgICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dz
aW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiX3MpOwogICAgICAgICAgICAgaWYgKCF1cmwpIHsK
ICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENv
bW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtODU1LDE0ICs4NTUsMTQgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0
KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3QKICAg
ICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2lu
Z0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIGlmICh4ICYmIHkpIHsKICAgICAgICAgICAgIGF1
dG8gd2luZG93T3JpZ2luID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdp
bmRvd09yaWdpbi0+c2V0RG91YmxlKCJ4IiwgeC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRv
d09yaWdpbi0+c2V0RG91YmxlKCJ5IiwgeS52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09y
aWdpbi0+c2V0RG91YmxlKCJ4Il9zLCB4LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3Jp
Z2luLT5zZXREb3VibGUoInkiX3MsIHkudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJz
LT5zZXRPYmplY3QoIm9yaWdpbiJfcywgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKICAgICAgICAg
fQogICAgICAgICBpZiAod2lkdGggJiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRv
d1NpemUgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+
c2V0RG91YmxlKCJ3aWR0aCIsIHdpZHRoLnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJoZWlnaHQiLCBoZWlnaHQudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoIndpZHRoIl9zLCB3aWR0aC52YWx1ZSgpKTsKKyAgICAgICAgICAg
IHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0Il9zLCBoZWlnaHQudmFsdWUoKSk7CiAgICAg
ICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoInNpemUiX3MsIFdURk1vdmUod2luZG93U2l6
ZSkpOwogICAgICAgICB9CiAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInNl
dFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRh
YmxlIHsKQEAgLTE3MTcsMTIgKzE3MTcsMTIgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNGaWxl
VXBsb2FkKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0ZpbGVVcGxvYWRTY3JpcHRbXSA9CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGlzRmlsZVVwbG9hZFNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihl
bGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2Uo
KSA9PT0gJ2lucHV0JyAmJiBlbGVtZW50LnR5cGUgPT09ICdmaWxlJykiCiAgICAgICAgICIgICAg
ICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogdHJ1ZSwgJ211bHRpcGxlJzogZWxlbWVudC5oYXNB
dHRyaWJ1dGUoJ211bHRpcGxlJykgfTsiCiAgICAgICAgICIgICAgcmV0dXJuIHsgJ2ZpbGVVcGxv
YWQnOiBmYWxzZSB9OyIKLSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8g
cGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRl
eHQudmFsdWUoKSk7CkBAIC0xODU1LDcgKzE4NTUsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJ
c0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5k
UgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRWRpdGFibGVTY3JpcHRbXSA9CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGlzRWRpdGFibGVTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24o
ZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCB8fCBlbGVtZW50
LnJlYWRPbmx5KSIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIGZhbHNlOyIKQEAgLTE4NzAsNyAr
MTg3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgICAgICIgICAgICAgIHJldHVy
biB0cnVlOyIKICAgICAgICAgIiAgICB9IgogICAgICAgICAiICAgIHJldHVybiBmYWxzZTsiCi0g
ICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdD
b250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAt
MjE3MCw3ICsyMTcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgIGF1
dG8gZmlsZVVwbG9hZFR5cGUgPSBwYXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQocmVzdWx0
LnJlc3VsdCgpKTsKICAgICAgICAgICAgIGlmICghZmlsZVVwbG9hZFR5cGUgfHwgY2FwYWJpbGl0
aWVzKCkuc3RyaWN0RmlsZUludGVyYWN0YWJpbGl0eS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIHRvIGFuIGF0b20uCi0gICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IGNoYXIgZm9jdXNTY3JpcHRbXSA9CisgICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGZvY3VzU2NyaXB0ID0KICAgICAgICAgICAgICAgICAgICAgImZ1
bmN0aW9uIGZvY3VzKGVsZW1lbnQpIHsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IGRv
YyA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBlbGVtZW50OyIKICAgICAgICAgICAgICAgICAg
ICAgIiAgICBsZXQgcHJldkFjdGl2ZUVsZW1lbnQgPSBkb2MuYWN0aXZlRWxlbWVudDsiCkBAIC0y
MTg2LDcgKzIxODYsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJp
bmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICBlbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGVsZW1lbnQudmFsdWUubGVu
Z3RoLCBlbGVtZW50LnZhbHVlLmxlbmd0aCk7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGlm
IChlbGVtZW50Um9vdE5vZGUuYWN0aXZlRWxlbWVudCAhPT0gZWxlbWVudCkiCiAgICAgICAgICAg
ICAgICAgICAgICIgICAgICAgIHRocm93IHtuYW1lOiAnRWxlbWVudE5vdEludGVyYWN0YWJsZScs
IG1lc3NhZ2U6ICdFbGVtZW50IGlzIG5vdCBmb2N1c2FibGUuJ307IgotICAgICAgICAgICAgICAg
ICAgICAifSI7CisgICAgICAgICAgICAgICAgICAgICJ9Il9zOwogCiAgICAgICAgICAgICAgICAg
YXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAg
YXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3Ry
aW5nKCkpOwpAQCAtMjUwNiwxMyArMjUwNiwxMyBAQCBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4g
YnVpbHRBdXRvbWF0aW9uQ29va2llKGNvbnN0IFNlc3Npb246OkNvb2tpZSYgY29va2llKQogICAg
IGF1dG8gY29va2llT2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBjb29raWVP
YmplY3QtPnNldFN0cmluZygibmFtZSJfcywgY29va2llLm5hbWUpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJ2YWx1ZSJfcywgY29va2llLnZhbHVlKTsKLSAgICBjb29raWVPYmplY3Qt
PnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iKSk7CisgICAgY29v
a2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIl9z
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoImRvbWFpbiJfcywgY29va2llLmRvbWFp
bi52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFu
KCJzZWN1cmUiX3MsIGNvb2tpZS5zZWN1cmUudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVP
YmplY3QtPnNldEJvb2xlYW4oImh0dHBPbmx5Il9zLCBjb29raWUuaHR0cE9ubHkudmFsdWVfb3Io
ZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlc3Npb24iX3MsICFjb29r
aWUuZXhwaXJ5KTsKICAgICBjb29raWVPYmplY3QtPnNldERvdWJsZSgiZXhwaXJlcyJfcywgY29v
a2llLmV4cGlyeS52YWx1ZV9vcigwKSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNh
bWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiKSk7CisgICAgY29va2ll
T2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3Io
Ik5vbmUiX3MpKTsKICAgICByZXR1cm4gY29va2llT2JqZWN0OwogfQogCkBAIC0yNjkxLDM4ICsy
NjkxLDM4IEBAIFNlc3Npb246OklucHV0U291cmNlU3RhdGUmIFNlc3Npb246OmlucHV0U291cmNl
U3RhdGUoY29uc3QgU3RyaW5nJiBpZCkKICAgICByZXR1cm4gbV9pbnB1dFN0YXRlVGFibGUuZW5z
dXJlKGlkLCBbXSB7IHJldHVybiBJbnB1dFNvdXJjZVN0YXRlKCk7IH0pLml0ZXJhdG9yLT52YWx1
ZTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElu
cHV0U291cmNlJiBpbnB1dFNvdXJjZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvblNv
dXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQogewogICAgIHN3aXRjaCAo
aW5wdXRTb3VyY2UudHlwZSkgewogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6Ok5vbmU6Ci0g
ICAgICAgIHJldHVybiAiTnVsbCI7CisgICAgICAgIHJldHVybiAiTnVsbCJfczsKICAgICBjYXNl
IElucHV0U291cmNlOjpUeXBlOjpQb2ludGVyOgogICAgICAgICBzd2l0Y2ggKGlucHV0U291cmNl
LnBvaW50ZXJUeXBlLnZhbHVlX29yKFBvaW50ZXJUeXBlOjpNb3VzZSkpIHsKICAgICAgICAgY2Fz
ZSBQb2ludGVyVHlwZTo6TW91c2U6Ci0gICAgICAgICAgICByZXR1cm4gIk1vdXNlIjsKKyAgICAg
ICAgICAgIHJldHVybiAiTW91c2UiX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlRvdWNo
OgotICAgICAgICAgICAgcmV0dXJuICJUb3VjaCI7CisgICAgICAgICAgICByZXR1cm4gIlRvdWNo
Il9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpQZW46Ci0gICAgICAgICAgICByZXR1cm4g
IlBlbiI7CisgICAgICAgICAgICByZXR1cm4gIlBlbiJfczsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpLZXk6Ci0gICAgICAgIHJldHVybiAi
S2V5Ym9hcmQiOworICAgICAgICByZXR1cm4gIktleWJvYXJkIl9zOwogICAgIGNhc2UgSW5wdXRT
b3VyY2U6OlR5cGU6OldoZWVsOgotICAgICAgICByZXR1cm4gIldoZWVsIjsKKyAgICAgICAgcmV0
dXJuICJXaGVlbCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmln
aW46OlR5cGUgdHlwZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvbk9yaWdpblR5cGUo
UG9pbnRlck9yaWdpbjo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNh
c2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6Vmlld3BvcnQ6Ci0gICAgICAgIHJldHVybiAiVmlld3Bv
cnQiOworICAgICAgICByZXR1cm4gIlZpZXdwb3J0Il9zOwogICAgIGNhc2UgUG9pbnRlck9yaWdp
bjo6VHlwZTo6UG9pbnRlcjoKLSAgICAgICAgcmV0dXJuICJQb2ludGVyIjsKKyAgICAgICAgcmV0
dXJuICJQb2ludGVyIl9zOwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6RWxlbWVudDoK
LSAgICAgICAgcmV0dXJuICJFbGVtZW50IjsKKyAgICAgICAgcmV0dXJuICJFbGVtZW50Il9zOwog
ICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
V2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggNWU0NDA2N2VmMGEyLi5jMzAxMDg1OTNlZmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBpbnQg
V2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAg
ICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0U3RyaW5nID0g
YXJndltpXTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDEsNyArNDQxLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuaHR0cHNVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9Ci0gICAgICAg
IGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiKSkgewor
ICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5
Il9zKSkgewogICAgICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7
CiAgICAgICAgICAgICBpZiAoIXNvY2tzUHJveHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94
eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAg
ICAgaWYgKCFwcm94eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBw
cm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7CisgICAgICAgICAgICBhdXRvIHNv
Y2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiJfcyk7
CiAgICAgICAgICAgICBpZiAoIXNvY2tzVmVyc2lvblZhbHVlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcyLDMwIEBAIHZvaWQgV2ViRHJpdmVy
U2VydmljZTo6Y3JlYXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGll
c0xpc3QsIHN0CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldEJvb2xlYW4oInNl
dFdpbmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5zZXRXaW5kb3dSZWN0LnZhbHVlX29yKHRydWUp
KTsKICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2
aW9yLnZhbHVlX29yKFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkg
ewogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzczoKLSAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpBY2NlcHQ6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Iik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiYWNjZXB0Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnk6Ci0g
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9z
LCAiZGlzbWlzcyBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFuZE5vdGlmeToKLSAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywg
ImFjY2VwdCBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6Oklnbm9yZToKLSAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJpZ25vcmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiX3MpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmls
aXRpZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWwp
KSB7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3Ms
ICJub25lIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9ybWFsIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoKLSAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywg
ImVhZ2VyIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5wcm94eSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2Ri
YTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgs
NyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25z
dCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0
ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAg
ICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Iik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRp
b24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlU
ZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAg
IC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7Cisg
ICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFp
bHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdl
Q29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJl
VG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUx
ODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSAr
MjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBw
cm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAx
LjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsK
KyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgot
ICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAg
ICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2
YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5k
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5
YmVjNTg3M2VkNC4uOWE3NjEwNmNhMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNTQsMTggKzU0LDE4IEBA
IHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVt
b3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1l
dGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3Ry
aW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcg
KndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBp
ZiAoW2xvY2FsIGNvbXBhcmU6d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAg
aWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9j
YWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUgPSB3aXJlW2ldOworICAgIE5TVUludGVnZXIg
bGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGNoYXIgbG9jYWxUeXBlID0gW2xvY2FsIGNoYXJhY3RlckF0
SW5kZXg6aV07CisgICAgICAgIGNoYXIgd2lyZVR5cGUgPSBbd2lyZSBjaGFyYWN0ZXJBdEluZGV4
OmldOwogCiAgICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKICAgICAgICAgICAg
IC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgpAQCAtOTcw
LDkgKzk3MCw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1v
dGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlv
biBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3Ry
aW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAg
ICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1
cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWdu
YXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9u
IG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNp
Z25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJl
KSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlv
bkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFy
ZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5h
bWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2sp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVP
YmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVP
YmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2Jq
ZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2Jq
ZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90
b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3Rh
dGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VM
IHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5v
bi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9
IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVl
LCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1Np
Z25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAK
ICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNv
ZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5T
TWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1
cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VS
VCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJl
KQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJu
IFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4
OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9p
ZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJl
bW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJl
cGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0
b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9k
U2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVy
ZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVk
QmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xd
LCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1Np
Z25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUp
IHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRl
IHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0g
ICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBs
eSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBz
aWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2ln
bmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0
aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdElu
dm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2Vy
PiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7
Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVy
ZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1v
dGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0
aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5n
Q2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2Us
IHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90
ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29k
ZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
CkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNl
cnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRh
aWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVh
bFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93
d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0
cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAg
ICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2Fm
YXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFn
bm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0
aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3Vs
dCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UK
ICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5j
ZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWlu
Lmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3Nh
ZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0
dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAg
IHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9y
Lz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmlu
ZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2Eu
bW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWls
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgp
LnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBs
ZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3
QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29r
X2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0
cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVs
ZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0
YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAt
NTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50
Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNl
dFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2
aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5h
ZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5m
YmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQo
V2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAg
IGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkp
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVu
YWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBh
cHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3Vu
ZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmlu
ZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFT
RV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9X
ZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMs
MjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1h
bmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAo
Y29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAw
NUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAg
ICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9z
LAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3Ms
ICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwg
ImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJi
Il9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9z
LCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9n
Z2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAg
ICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5
SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIs
Ci0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3Ms
ICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0
LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCku
c2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9
PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxp
Y2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBj
b25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZp
ZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExB
VEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBp
c24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9w
ZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZp
ZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9z
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRB
UEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBB
dWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0g
U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcu
LmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RP
TS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyAr
NzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1
bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1
ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7
Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRv
Y3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBu
dWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlh
UXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmll
dygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0
ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0
MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsy
NzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmlu
ZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRv
ckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3Qg
U3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9
CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3Ry
aW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFy
TG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEz
MmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291
cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lk
KV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAg
ICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29k
aW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92
ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3
Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNT
dHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBk
aXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JF
bW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250
RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRp
bmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4u
ZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Ny
b3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhy
ZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3Ry
dWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1
LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1
LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFT
U0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0y
LTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNv
bnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9z
c1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRp
ZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5j
dGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0x
LTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVS
KE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVw
b3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5
UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVw
b3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJ
bml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JF
U09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNF
KAogPHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
Jy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsK
ICAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNF
IjsKKylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRp
YywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVz
IH07CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlw
ZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIq
IGpzID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRj
aCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwi
c3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7
IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0
PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9o
dG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNw
b25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgot
ICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7
IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAg
IGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQu
cmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBl
Y3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8i
LCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9m
ZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Nj
cmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAg
IHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2Ny
aXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBA
QCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2Vydmlj
ZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
IjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykp
IH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNl
cnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAg
IHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVy
Jyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7
ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAog
ICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAg
ICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0
NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJ
bml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2
ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJz
eW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsg
fSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShu
ZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4n
XSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWlu
U1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8i
X3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJD
b250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAg
ICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVs
bHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0
KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0Fw
cEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVz
IH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1h
aW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1U
eXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVz
dElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0
ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4w
LjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lm
IFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykK
QEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9
CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29u
c3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBp
ZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgn
Tm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlB
cHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAg
ZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVz
c2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3
Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsg
bWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNE
ZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVz
RGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1U
eXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVs
dFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBp
bml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkg
dG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1
Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBA
QCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJ
ZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVk
LWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBt
YWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cp
CkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0K
IAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1Qo
RGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWlu
Qnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0g
W1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIz
IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3Jp
ZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFp
bkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0
cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8x
MjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0
ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURP
Q0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCisp
RE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9D
RE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RP
QyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1l
KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsg
Ii8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4
dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMs
IG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAg
ICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEu
LmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEs
MTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0
dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
VGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktp
dEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAg
V2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUo
KTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJv
d3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsK
IH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVz
ZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNj
cmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0K
IAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNv
bnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29u
c3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAog
PC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0
IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1l
c3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZp
Y2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERv
bWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAg
ICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7
IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0
Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpA
QCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21h
aW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAv
LyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5
LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVj
dGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVk
OiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAg
LTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9
LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1s
Il9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsg
eyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2Ny
aXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAg
IGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3Rl
ZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NT
d2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0
bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7
ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlv
bi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9z
IH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5D
YXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2Uu
aHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJf
cyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNv
bnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9u
Lmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jv
c3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3Mg
fSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRk
NjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2
LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRl
bnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJv
Y2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3Mg
fSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2Vi
UHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2Rl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5k
ZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNz
PgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVu
dE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBz
aXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxl
Z2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsg
fSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsg
IlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkp
CiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgy
LDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0
cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRD
b250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29u
dGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNz
PihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7
CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFBy
ZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dp
ZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNl
OwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9
LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RX
ZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVE
ZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNp
bnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVT
VChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2Vu
dCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9u
IG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDgu
Ci0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7
ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tD
b250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVy
Om5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JV
c2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5n
OkAiTW9iaWxlIl0pOwo=
</data>
<flag name="commit-queue"
          id="484736"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456449</attachid>
            <date>2022-04-01 22:53:08 -0700</date>
            <delta_ts>2022-04-01 23:23:07 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>110915</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggMWFlNjIyOTg1OGZlLi41YmEzZWVlNDRiNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJUQ1NkcFR5cGUsIFN0cmluZz4+IGZldGNoRGVzY3JpcHRp
b24oR3N0RWxlbWVudCoKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2RwU3RyaW5nKGdzdF9zZHBf
bWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsKICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHdlYnJ0Y0JpbiwgIiVzLWRlc2NyaXB0aW9uIFNEUDogJXMiLCBuYW1lLCBzZHBTdHJpbmcuZ2V0
KCkpOwotICAgIHJldHVybiB7IHsgZnJvbVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0
aW9uLmdldCgpKSwgc2RwU3RyaW5nLmdldCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZyb21TZXNz
aW9uRGVzY3JpcHRpb25UeXBlKCpkZXNjcmlwdGlvbi5nZXQoKSksIFN0cmluZyB7IHNkcFN0cmlu
Zy5nZXQoKSB9IH0gfTsKIH0KIAogc3RhdGljIEdzdFdlYlJUQ1NpZ25hbGluZ1N0YXRlIGZldGNo
U2lnbmFsaW5nU3RhdGUoR3N0RWxlbWVudCogd2VicnRjQmluKQpAQCAtNDU2LDcgKzQ1Niw3IEBA
IHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6c3RvcmVSZW1vdGVNTGluZUluZm8oR3N0U0RQ
TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9tZWRpYUZvck1pZC5zZXQoeyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAi
YXVkaW8iKSA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBtX21lZGlhRm9yTWlkLnNldCh7IG1pZCB9
LCBnX3N0cl9lcXVhbChtZWRpYVR5cGUsICJhdWRpbyJfcykgPyBSZWFsdGltZU1lZGlhU291cmNl
OjpUeXBlOjpBdWRpbyA6IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKIAogICAg
ICAgICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVn
aW5zLWJhZC8tL21lcmdlX3JlcXVlc3RzLzE5MDcKICAgICAgICAgaWYgKHNkcE1lZGlhSGFzQXR0
cmlidXRlS2V5KG1lZGlhLCAiaWNlLWxpdGUiKSkgewpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRlKEdTdHJlYW1lckljZUNhbmRp
ZGF0ZSYgY2FuZGlkYXRlLCBQCiAKICAgICBpZiAoIWNhbmRpZGF0ZS5jYW5kaWRhdGUuc3RhcnRz
V2l0aCgiY2FuZGlkYXRlOiIpKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBj
cmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRkSWNlQ2FuZGlkYXRlQ2Fs
bGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFibGUgewotICAgICAgICAg
ICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNh
bmRpZGF0ZTo8Y2FuZGlkYXRlLXN0cj4iIH0pOworICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNhbmRpZGF0ZTo8Y2FuZGlkYXRl
LXN0cj4iX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTMy
LDcgKzkzMiw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRl
KEdTdHJlYW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAgICAgYXV0byBwYXJzZWRDYW5k
aWRhdGUgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChjYW5kaWRhdGUuY2FuZGlkYXRlKTsKICAgICBp
ZiAoIXBhcnNlZENhbmRpZGF0ZSkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0g
Y3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZEljZUNhbmRpZGF0ZUNh
bGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3Np
bmcgSUNFIGNhbmRpZGF0ZSIgfSk7CisgICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IsICJFcnJvciBwcm9jZXNzaW5nIElDRSBjYW5kaWRhdGUiX3MgfSk7CiAg
ICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA4NSw5ICsxMDg1LDkgQEAg
dm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNj
ZWVkZWQoR1VuaXF1ZVB0cjxHc3RXZWIKIAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcChn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgICAgIGlmICht
X2lzSW5pdGlhdG9yKQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRl
T2ZmZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQoKSB9KTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlQW5zd2Vy
U3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdldCgpIH0pOwogICAgIH0pOwog
fQogCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNy
ZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChHVW5pcXVlUHRyPEdFcnJvcj4mJgogICAgICAg
ICBpZiAoaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBl
eGMgPSBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6
ICJVbmtub3duIEVycm9yIiB9OworICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJh
dGlvbkVycm9yLCBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiX3MgfTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCiAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlckZhaWxlZChXVEZNb3ZlKGV4YykpOwogICAgICAgICBlbHNlCkBA
IC0xMTI1LDcgKzExMjUsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNvbGxlY3RU
cmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAoIXJlY2VpdmVyIHx8ICFtaWQpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVU
cmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
PihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRpYUZvck1pZC5nZXQobWlkLmdldCgpKSk7CisgICAg
ICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFr
ZVVuaXF1ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkp
LCBtX21lZGlhRm9yTWlkLmdldChTdHJpbmcgeyBtaWQuZ2V0KCkgfSkpOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAKaW5kZXggMjU2NGU5YTQ2NDgwLi5mNmFmMTIwYWVhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0
aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAtNTksNDAgKzU5
LDQwIEBAIENyZWF0ZVBlZXJDb25uZWN0aW9uQmFja2VuZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmNyZWF0ZSA9IGNyZWF0ZUdTdHJlYW1lclBlZXJDCiBzdGF0aWMgUlRDUnRwQ2FwYWJpbGl0aWVz
IGdzdHJlYW1lclJ0cENhcGF0aWJsaXRpZXMoY29uc3QgU3RyaW5nJiBraW5kKQogewogICAgIFJU
Q1J0cENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7Ci0gICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4
dGVuc2lvbnMuYXBwZW5kKHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJt
Y2F0LXRyYW5zcG9ydC13aWRlLWNjLWV4dGVuc2lvbnMtMDEiIH0pOworICAgIGNhcGFiaWxpdGll
cy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZCh7ICJodHRwOi8vd3d3LmlldGYub3JnL2lkL2RyYWZ0
LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25zLTAxIl9zIH0pOwogICAg
IGlmIChraW5kID09ICJhdWRpbyJfcykgewogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJl
c2VydmVDYXBhY2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vT1BVUyIsCisgICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL09QVVMiX3MsCiAgICAg
ICAgICAgICAuY2xvY2tSYXRlID0gNDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAyLAot
ICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL0c3MjIiLAorICAgICAg
ICAgICAgLnNkcEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vRzcyMiJfcywK
ICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0g
MSwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRp
ZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01BIiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEi
X3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVs
cyA9IDEsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2FwYWJp
bGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNVSIs
CisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOworICAgICAgICBj
YXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9Q
Q01VIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgwMDAsCiAgICAgICAgICAgICAuY2hh
bm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7CisgICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAiZW1wdHlTdHJpbmcoKSB9KTsKICAgICB9IGVsc2UgewotICAgICAg
ICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6dmlkZW8t
b3JpZW50YXRpb24iIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iX3MgfSk7CiAgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAgICBjYXBhYmlsaXRpZXMu
Y29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiLAorICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRl
by9WUDgiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNr
ZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5j
aGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQOSJfcywKICAgICAgICAgICAgIC5j
bG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlk
PTAiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5t
aW1lVHlwZSA9ICJ2aWRlby9WUDkiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2Zp
bGUtaWQ9MCJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5Il9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MSIgfSk7Ci0g
ICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0g
InZpZGVvL0gyNjQiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MSJf
cyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAidmlkZW8vSDI2NCJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwK
LSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxl
LWxldmVsLWlkPTQyZTAxZiIgfSk7CisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSAicGFja2V0
aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiX3MgfSk7CiAgICAgfQogICAg
IHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBHU3RyZWFt
ZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYg
b3B0aW9ucykKIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFu
c3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCiB7CiAgICAgaWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRp
b25TZXQpIHsKLSAgICAgICAgY3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yLCAiTm8gcmVtb3RlIGRlc2NyaXB0aW9uIHNldCIgfSk7CisgICAgICAgIGNyZWF0
ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBk
ZXNjcmlwdGlvbiBzZXQiX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9lbmRw
b2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwIGIvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAK
aW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJpbmcgYWRhcHRlck5hbWUo
V0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclByb3BlcnRpZXMgcHJvcGVy
dGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRlciwgJnByb3BlcnRpZXMp
OwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IHByb3Bl
cnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZlYXR1cmVzPiBzdXBwb3J0
ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1w
bC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9w
RXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYp
PiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAg
ZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAg
ICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2Fn
ZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBl
X091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6
Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3ICszNjgsNyBAQCBwdWJs
aWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZU1hdGNoZXNUZXh0TmVh
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7CiAKLSAgICBzdGF0aWMg
U3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24p
OwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZj
NWEuLmVhMjUyNzMyY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIsNDYgQEAgdm9pZCBBWE9i
amVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2JqKQogICAgIG9iai0+c2V0
V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2JqZWN0Q2FjaGU6Om5vdGlm
aWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCitBU0NJSUxp
dGVyYWwgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAgICBBU0NJSUxpdGVyYWwg
bmFtZSA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24p
IHsKICAgICBjYXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3Vz
ZWRVSUVsZW1lbnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAg
ICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWEltYWdlT3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlD
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENl
bGxzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENo
YW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0g
ICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhM
aXZlUmVnaW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRT
dGF0dXNDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOwor
ICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5n
ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
VmFsdWVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9
ICJBWEV4cGFuZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJl
bnRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNv
cnREaXJlY3Rpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAg
LTk4LDE1ICs5OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNh
dGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3Rp
ZmljYXRpb25zIG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3RO
b3RpZmljYXRpb24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0
LiBTbyBhIHdvcmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBv
c3ROb3RpZmljYXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBi
dW5kbGUgdGhhdCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZp
Y2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZp
Y2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5h
bWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBw
b3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRp
b25OYW1lID0gbm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3Qt
PndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAK
ICAgICAvLyBUbyBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0
aGUgc2ltdWxhdG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9z
dGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIo
KSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQo
KV07CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlcklPUy5tbQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3ODVkNjlkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2NzEsMTIgKzE2NzEsMTIg
QEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2liaWxpdHlTY3JvbGxEaXJl
Y3Rpb24pZGlyZWN0aW9uCiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+
c2Nyb2xsQnlQYWdlKHNjcm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9u
UGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxl
ZCk7Ci0gICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07Cisg
ICAgICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xs
ZWQpLmNyZWF0ZU5TU3RyaW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90
aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBzY3JvbGxQb3MgPSBbc2Vs
ZiBfYWNjZXNzaWJpbGl0eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAgTlNTdHJpbmcgKnRlc3RT
dHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Nyb2xsIFtwb3NpdGlvbjog
JS4yZiAlLjJmXSIsIHNjcm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0gICAgICAgIFtzZWxmIGFj
Y2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzpA
eyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkgdXNlckluZm86QHsgQCJz
dGF0dXMiIDogdGVzdFN0cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQg
dGhpcyBvYmplY3QgaGFuZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhlciBhbmNlc3RvciBzaG91
bGQgYXR0ZW1wdCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRiOGNhZTc2NDNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAt
NTY5LDcgKzU2OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNpZiBFTkFCTEUoQVBQX0JP
VU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQg
ZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAg
IFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgImV4ZWN1dGVTY3Jp
cHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91
bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChFeGNlcHRpb25EZXRh
aWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBk
b21haW4iX3MgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0
QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24g
ZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25z
dCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlID0g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0QWxpZ24gPSAqdmFs
dWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0
YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRG
b3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICAg
ICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5n
RGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOwor
ICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAgICAgICAgICAgbmV3
VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2Fz
ZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVm
dDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1l
bnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAgICBpZiAobmV3VmFs
dWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVt
ZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZv
aWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1dG8gZGVmYXVsdFN0
eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwogICAgIAogICAgIC8v
IFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEgdGhlIFVJVmlldyBw
cm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25lLgotICAgIGRlZmF1
bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1
NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIl9zKTsKICAg
ICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNhbiBtb2RpZnksIGxp
a2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFtaWx5LCBwZXIgSEkg
c3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRiNmQw
ZTViNDQ0Ny4uMDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1lbnQ8VVJMPiB7CiAg
ICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhG
b3JMb2dnaW5nKSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0g
ICAgICAgIHJldHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwogI2VuZGlm
CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5k
ZXggNTEyM2JiMmQwYzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJv
b2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZp
bmFsOwogCiAgICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0g
ICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZv
clNldHRpbmcoQVNDSUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRl
cmFjdGlvblJlZ2lvbj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0g
ICAgICAgIFN0cmluZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZh
bHVlOworICAgICAgICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsK
KyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAg
ICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9y
PFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JT
ZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5
Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5n
LmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6
ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAg
ICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRp
bmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7
CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0
LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lk
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwog
Ci0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAg
IGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAg
ICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBH
cmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERh
dGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEs
MTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtl
R3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFs
RGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVu
dDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRo
b2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7
Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZh
bHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVl
Rm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAg
ICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNr
KS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xp
cCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNv
bnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAg
ICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSku
Y29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0
NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAg
ICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBz
aG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxk
Q2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBj
bGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0
aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJh
Y2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0
aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNo
b3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFs
dWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAog
ICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYg
KHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBj
bGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JT
ZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXpl
KCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBm
bG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAq
IHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1
czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6
OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25N
ZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQg
fSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7
IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAg
ICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihD
b2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAg
dm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdo
dEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRp
ZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICgh
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxD
b2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xp
Z2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxv
YXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0
aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwor
ICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVh
bFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9u
KCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRp
ZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMp
KSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAg
IH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91
c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3Rk
OjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRp
bmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAg
ICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JT
ZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9z
KSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2
ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50
cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxh
dGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJ
bkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAot
ICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZl
bnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50
LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkg
JiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdz
QmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2
MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFi
bGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVz
KCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9U
UkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0Mi
LCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhp
cmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5H
VUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9O
KTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0g
ICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRT
YW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRf
U0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWlu
Y2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOwor
CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOwor
ICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAg
IHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRT
YW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmlu
ZGV4IGViY2RiMWRkMDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNz
IFVzZXJBZ2VudFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3Ry
aW5nKCksIFVzZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVND
SUlMaXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5
c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3NWRm
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJhbWVE
dXJhdGlvbiA9IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkCiAKIC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9uIGZv
bGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
Ojp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8gRklY
TUU6IFNpbmNlIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBz
aGFyZWQsIHdlIGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5n
IHRoZSBjb250ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApp
bmRleCBkOWQzNjc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaApAQCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1
bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgog
ICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2
b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dM
c2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBi
dWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkq
IHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zy
ZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFl
ZjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIg
QEAgc3RhdGljIFN0cmluZyBnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJp
bmcmIGZhbWlseSkKICAgICAgICAgcmV0dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0g
ZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwg
ZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1p
bHkpKQotICAgICAgICByZXR1cm4gInNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsK
ICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6
U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAg
cmV0dXJuICJzYW5zLXNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRh
LT5hdChGYW1pbHlOYW1lc0luZGV4OjpNb25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4g
Im1vbm9zcGFjZSI7CisgICAgICAgIHJldHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1p
bHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5
KSkKLSAgICAgICAgcmV0dXJuICJjdXJzaXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpGYW50YXN5RmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0
dXJuICJmYW50YXN5Il9zOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0g
ZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwg
ZmFtaWx5ID09ICItd2Via2l0LXN5c3RlbS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRH
dGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIH0KIAogI2lmIEZDX1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlm
NzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwg
MjAsIDApCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19n
ZXRfbWltZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNv
ZGVjLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQo
KSB9OwogI2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
ckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVl
KiB2YWx1ZSwgZ3BvaQogewogICAgIGlmIChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZh
bHVlVG9KU09OKHZhbHVlKSkgewogICAgICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9j
YXN0PEpTT046Ok9iamVjdCo+KHVzZXJEYXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShn
X3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsK
KyAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVs
ZElkKSB9LCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4g
VFJVRTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5k
ZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZmN2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OkVsZW1lbnQKICAgICBpZiAoc2hvdWxkQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tI
YXJkd2FyZUNsYXNzaWZpZXI6OlllcykgewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMg
PSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3Rvcmll
cykpIHsKICAgICAgICAgICAgIGF1dG8qIGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVs
ZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVzLT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRh
ZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVN
RU5UX01FVEFEQVRBX0tMQVNTKTsKKyAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9l
bGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRB
X0tMQVNTKSB9OwogICAgICAgICAgICAgYXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQo
Jy8nKTsKICAgICAgICAgICAgIGlmIChjb21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7
CiAgICAgICAgICAgICAgICAgaXNVc2luZ0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEs
NyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNv
bnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2Rl
ckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0
b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmll
czo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBv
cnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmcs
ICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9z
a2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRl
Y29kaW5nLCAidmlkZW8vbXA0Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAg
ICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2
YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
ICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lk
IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRv
bVN0cmluZygiYXVkaW8vbXAyIikpOwogICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8
PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRp
by9tcDQiKTsKKyAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVk
aW9NcGVnU3VwcG9ydGVkKSB7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9tcGVnIikpOwogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQo
QXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAppbmRleCA3M2Uy
NDg0NWNiMzMuLjkxOTYzZDMyOTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAg
LTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBv
cnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1
ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBhcmUgImZha2Ui
LiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAgIC8vIGV4dGVuc2lvbnMuIElu
IHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0VYVF9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS4KICAgICBpZiAo
bmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpCi0gICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Iik7Cisg
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFt
ZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpIHsK
LSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9p
bnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIikgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiKSk7CisgICAgICAgIHJldHVy
biAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5
cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2Vk
X2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSk7CiAgICAgfQogCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIikgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiIpKTsKKyAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiJf
cykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVy
X3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1l
YnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZnJhZ19kZXB0aCIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAgIC8vIERlc2t0b3AgR0wgYWx3YXlzIHN1
cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfcmdiOF9y
Z2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxh
dGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gSWYgR0xf
QVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1cmVfZmxvYXQgaXMgYXZhaWxhYmxlIHRo
ZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCwgR0xfT0VTX3Rl
eHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciBh
cyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0IiB8fCBu
YW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4
dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRf
bGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0Il9zKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsKIAogICAgIC8vIEdM
X09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU192ZXJ0ZXhf
YXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShHVEspKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCIp
OworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
dmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQotICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQUExFX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAgICAgfQogCkBAIC0xNDcsMTQgKzE0Nywx
NCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGlmIChu
YW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpOwor
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfc2hh
ZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIik7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2RyYXdf
YnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiKTsKKyAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfYnVmZmVycyJf
cyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHN1cHBvcnQgZm9yIG90aGVy
IHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMxLDcgKzIzMSw3IEBAIFN0
cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVydGV4QXJy
YXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9y
dHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICAgICByZXR1cm4gc3VwcG9ydHNW
ZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMwNDBjZWJkYTlhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3NCwxMiArMTc0LDEyIEBAIFN0cmlu
ZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdM
RShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xzaGFkZXJUeXBlID09IEdyYXBoaWNz
Q29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJf
VFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAiIjsgLy8gSW52YWxpZCBz
aGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xPYmplY3QsIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1fY29udGV4
dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogCiAgICAgaWYgKHJlc3VsdCA9PSBt
X2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CiAKQEAgLTIwMyw3
ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIH0KIAogICAgIGlmICghaXNW
YWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1Li5iOTExMTAyNTk4MzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgRXh0ZW5z
aW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAgbV9nbERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdFTEVN
RU5UU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAgbV9zdXBwb3J0c0FOR0xFaW5zdGFuY2Vk
QXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChtYWpvclZlcnNpb24oKSA+PSAzIHx8
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlz
IikgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtYWpvclZlcnNpb24oKSA+PSAzIHx8IChtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSAm
JiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJf
cykpKSB7CiAgICAgICAgICAgICBtX2dsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFID0gOjpnbFZl
cnRleEF0dHJpYkRpdmlzb3I7CiAgICAgICAgICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFID0gOjpnbERyYXdBcnJheXNJbnN0YW5jZWQ7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggY2FhYWI2ZmM1OThiLi4wYTZhODhjZjFh
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzUyLDEzICsz
NTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1
bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRB
dHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoc3Vw
cG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAg
ICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwor
ICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nIHsgcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7CisgICAgICAgICAgICBlbnN1cmVF
eHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyk7CiAgICAg
ICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUuCiAgICAgICAgICAgICBh
dHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTIuLmFmNzVlMGQwOTk5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3ICs0MzMsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUg
d2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUg
Y2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2
b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygp
OwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xz
aXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0
eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29s
dW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhl
bEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2Uu
Y3BwCmluZGV4IGMzNWIyZjBmMTVkOS4uN2I1NGEwMWYzZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtODYsNyArODYsNyBAQCBzdGQ6Om9wdGlv
bmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBh
aW50UmVzdWx0cygpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0
cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVw
dGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiX3MpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNo
YXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAK
ICAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25zID0gZ2V0RXh0ZW5z
aW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtu
b3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygi
R0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSkKICAgICAgICAgICAgIGludGVybmFsRGVw
dGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEhfQ09NUE9O
RU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCmluZGV4IDgzYjli
ODZjNTMyNy4uM2FlNjJiZjZlZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIC8vIFdlIGRvbid0IGFs
bG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBkZXB0aCBpcyBub3Qu
CiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMu
Ci0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMu
c3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VT
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVu
Y2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBz
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIAogICAg
IC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7
CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJ
bWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxp
ZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIAogICAg
IGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBpZiAoYXR0cmli
dXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVk
X3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYg
IXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJl
Il9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBz
ZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OC4uZTk1Nzgy
OTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1h
Z2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0
ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCI7CisgICAg
cmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFjNy4uOGQ1YzQzZGU4Mzk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTU0
LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2ljUGhvbmUoKQogICAgIHJl
dHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBfY2xhc3Np
Y01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3JpZ2luYWxQYWQ7CiB9CiAK
LVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJB
Z2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgIWlzQ2xhc3Np
Y1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVybiAiaVBob25lIE9TIjsK
KyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9uZSBPUyJfczsKIH0KIAog
c3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXll
ckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7
CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBs
YXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxh
eWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAgICAgIGV4dGVybmFs
UGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5v
bmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAg
ICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VS
ZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBh
dGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBh
dXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsK
KyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAg
IGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9
IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAgICBpZiAo
ZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgW25zUmVx
dWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2Uu
dmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2Ui
XTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBmZTY1YTI5
ZTYzNi4uYzIwZWM4ZTcyMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCkBAIC00
MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCIiKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0cmluZygpKTsg
fQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCmluZGV4IGE5MDkwZjdlYTFhMy4uMGNmNDI0ODI5ZDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJl
c2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldE91dHNpZGVWaWV3
cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0UoUVVJQ0tf
TE9PSykKLSAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dv
cmQoIiIpOworICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNz
d29yZChlbXB0eVN0cmluZygpKTsKICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyOjpzZXRDbGllbnRG
b3JUZXN0aW5nKG51bGxwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2
ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3Bw
CmluZGV4IDUyZTI3Njc2M2NhMy4uODM1OTY5YmZhMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0
KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAg
IGlmICghZXJyb3JPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBl
cnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSIpOworICAgIGF1dG8gZXJyb3IgPSBlcnJvck9i
amVjdC0+Z2V0SW50ZWdlcigiY29kZSJfcyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3RyaW5nKCJt
ZXNzYWdlIik7CisgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3RyaW5n
KCJtZXNzYWdlIl9zKTsKICAgICBpZiAoIWVycm9yTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcAppbmRleCAwNTI0NmJhYTYzYzUuLmQ3MWY0ZDEwNTdlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L1Nlc3Npb24uY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBTZXNzaW9uOjpoYW5kbGVVc2Vy
UHJvbXB0cyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW4K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gaXNTaG93aW5n
SmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJy
ZXN1bHQiKTsKKyAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9u
c2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCJfcyk7CiAgICAgICAgIGlmICgh
aXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZykgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25F
cnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU5LDEzICszNTksMTMgQEAgdm9pZCBT
ZXNzaW9uOjpnZXRDdXJyZW50VVJMKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QtPmdldE9iamVjdCgiY29udGV4dCIpOworICAgICAgICAgICAgYXV0byBicm93c2luZ0Nv
bnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Il9zKTsK
ICAgICAgICAgICAgIGlmICghYnJvd3NpbmdDb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNv
ZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygi
dXJsIik7CisgICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5n
KCJ1cmwiX3MpOwogICAgICAgICAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29k
ZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODU1LDE0ICs4
NTUsMTQgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3QKICAgICAgICAgcGFyYW1ldGVycy0+c2V0
U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAg
ICAgICAgIGlmICh4ICYmIHkpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93T3JpZ2luID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91Ymxl
KCJ4IiwgeC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5
IiwgeS52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ4Il9z
LCB4LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiX3Ms
IHkudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoIm9yaWdpbiJf
cywgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKICAgICAgICAgfQogICAgICAgICBpZiAod2lkdGgg
JiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd1NpemUgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCIsIHdp
ZHRoLnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQi
LCBoZWlnaHQudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoIndp
ZHRoIl9zLCB3aWR0aC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJs
ZSgiaGVpZ2h0Il9zLCBoZWlnaHQudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5z
ZXRPYmplY3QoInNpemUiX3MsIFdURk1vdmUod2luZG93U2l6ZSkpOwogICAgICAgICB9CiAgICAg
ICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInNldFdpbmRvd0ZyYW1lT2ZCcm93c2lu
Z0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhv
c3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTE3MTcsMTIgKzE3
MTcsMTIgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICBhdXRvIGFyZ3VtZW50cyA9IEpT
T046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxl
bWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hh
ciBpc0ZpbGVVcGxvYWRTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGlzRmls
ZVVwbG9hZFNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAi
ICAgIGlmIChlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiBlbGVt
ZW50LnR5cGUgPT09ICdmaWxlJykiCiAgICAgICAgICIgICAgICAgIHJldHVybiB7ICdmaWxlVXBs
b2FkJzogdHJ1ZSwgJ211bHRpcGxlJzogZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ211bHRpcGxlJykg
fTsiCiAgICAgICAgICIgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiBmYWxzZSB9OyIKLSAgICAg
ICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRl
eHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0xODU1
LDcgKzE4NTUsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmlu
ZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgIGF1dG8gYXJndW1lbnRz
ID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVh
dGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRpYyBjb25z
dCBjaGFyIGlzRWRpdGFibGVTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGlz
RWRpdGFibGVTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAg
IiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCB8fCBlbGVtZW50LnJlYWRPbmx5KSIKICAgICAgICAg
IiAgICAgICAgcmV0dXJuIGZhbHNlOyIKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgU2Vzc2lv
bjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZv
aWQgKENvbW1hbmRSCiAgICAgICAgICIgICAgICAgIHJldHVybiB0cnVlOyIKICAgICAgICAgIiAg
ICB9IgogICAgICAgICAiICAgIHJldHVybiBmYWxzZTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAg
In0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMjE3MCw3ICsyMTcwLDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0
IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgIGF1dG8gZmlsZVVwbG9hZFR5cGUgPSBw
YXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQocmVzdWx0LnJlc3VsdCgpKTsKICAgICAgICAg
ICAgIGlmICghZmlsZVVwbG9hZFR5cGUgfHwgY2FwYWJpbGl0aWVzKCkuc3RyaWN0RmlsZUludGVy
YWN0YWJpbGl0eS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTog
bW92ZSB0aGlzIHRvIGFuIGF0b20uCi0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIg
Zm9jdXNTY3JpcHRbXSA9CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZv
Y3VzU2NyaXB0ID0KICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvY3VzKGVsZW1lbnQp
IHsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IGRvYyA9IGVsZW1lbnQub3duZXJEb2N1
bWVudCB8fCBlbGVtZW50OyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgcHJldkFjdGl2
ZUVsZW1lbnQgPSBkb2MuYWN0aXZlRWxlbWVudDsiCkBAIC0yMTg2LDcgKzIxODYsNyBAQCB2b2lk
IFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgICAgICAgICAiICAgICAgICBlbGVtZW50
LnNldFNlbGVjdGlvblJhbmdlKGVsZW1lbnQudmFsdWUubGVuZ3RoLCBlbGVtZW50LnZhbHVlLmxl
bmd0aCk7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChlbGVtZW50Um9vdE5vZGUuYWN0
aXZlRWxlbWVudCAhPT0gZWxlbWVudCkiCiAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHRo
cm93IHtuYW1lOiAnRWxlbWVudE5vdEludGVyYWN0YWJsZScsIG1lc3NhZ2U6ICdFbGVtZW50IGlz
IG5vdCBmb2N1c2FibGUuJ307IgotICAgICAgICAgICAgICAgICAgICAifSI7CisgICAgICAgICAg
ICAgICAgICAgICJ9Il9zOwogCiAgICAgICAgICAgICAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5n
KGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwpAQCAtMjUwNiwxMyAr
MjUwNiwxMyBAQCBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbHRBdXRvbWF0aW9uQ29va2ll
KGNvbnN0IFNlc3Npb246OkNvb2tpZSYgY29va2llKQogICAgIGF1dG8gY29va2llT2JqZWN0ID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygibmFt
ZSJfcywgY29va2llLm5hbWUpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJ2YWx1ZSJf
cywgY29va2llLnZhbHVlKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywg
Y29va2llLnBhdGgudmFsdWVfb3IoIi8iKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmco
InBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIl9zKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoImRvbWFpbiJfcywgY29va2llLmRvbWFpbi52YWx1ZV9vcihlbXB0eVN0cmlu
ZygpKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUiX3MsIGNvb2tpZS5z
ZWN1cmUudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oImh0
dHBPbmx5Il9zLCBjb29raWUuaHR0cE9ubHkudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVP
YmplY3QtPnNldEJvb2xlYW4oInNlc3Npb24iX3MsICFjb29raWUuZXhwaXJ5KTsKICAgICBjb29r
aWVPYmplY3QtPnNldERvdWJsZSgiZXhwaXJlcyJfcywgY29va2llLmV4cGlyeS52YWx1ZV9vcigw
KSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2Ft
ZVNpdGUudmFsdWVfb3IoIk5vbmUiKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNh
bWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiX3MpKTsKICAgICByZXR1
cm4gY29va2llT2JqZWN0OwogfQogCkBAIC0yNjkxLDM4ICsyNjkxLDM4IEBAIFNlc3Npb246Oklu
cHV0U291cmNlU3RhdGUmIFNlc3Npb246OmlucHV0U291cmNlU3RhdGUoY29uc3QgU3RyaW5nJiBp
ZCkKICAgICByZXR1cm4gbV9pbnB1dFN0YXRlVGFibGUuZW5zdXJlKGlkLCBbXSB7IHJldHVybiBJ
bnB1dFNvdXJjZVN0YXRlKCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGljIGNvbnN0
IGNoYXIqIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJj
ZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRT
b3VyY2UmIGlucHV0U291cmNlKQogewogICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UudHlwZSkgewog
ICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAiTnVsbCI7
CisgICAgICAgIHJldHVybiAiTnVsbCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpQ
b2ludGVyOgogICAgICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnBvaW50ZXJUeXBlLnZhbHVlX29y
KFBvaW50ZXJUeXBlOjpNb3VzZSkpIHsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6TW91c2U6
Ci0gICAgICAgICAgICByZXR1cm4gIk1vdXNlIjsKKyAgICAgICAgICAgIHJldHVybiAiTW91c2Ui
X3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlRvdWNoOgotICAgICAgICAgICAgcmV0dXJu
ICJUb3VjaCI7CisgICAgICAgICAgICByZXR1cm4gIlRvdWNoIl9zOwogICAgICAgICBjYXNlIFBv
aW50ZXJUeXBlOjpQZW46Ci0gICAgICAgICAgICByZXR1cm4gIlBlbiI7CisgICAgICAgICAgICBy
ZXR1cm4gIlBlbiJfczsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIElucHV0
U291cmNlOjpUeXBlOjpLZXk6Ci0gICAgICAgIHJldHVybiAiS2V5Ym9hcmQiOworICAgICAgICBy
ZXR1cm4gIktleWJvYXJkIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OldoZWVsOgot
ICAgICAgICByZXR1cm4gIldoZWVsIjsKKyAgICAgICAgcmV0dXJuICJXaGVlbCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIGNvbnN0IGNo
YXIqIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKK3N0YXRp
YyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6VHlwZSB0
eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlw
ZTo6Vmlld3BvcnQ6Ci0gICAgICAgIHJldHVybiAiVmlld3BvcnQiOworICAgICAgICByZXR1cm4g
IlZpZXdwb3J0Il9zOwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6UG9pbnRlcjoKLSAg
ICAgICAgcmV0dXJuICJQb2ludGVyIjsKKyAgICAgICAgcmV0dXJuICJQb2ludGVyIl9zOwogICAg
IGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6RWxlbWVudDoKLSAgICAgICAgcmV0dXJuICJFbGVt
ZW50IjsKKyAgICAgICAgcmV0dXJuICJFbGVtZW50Il9zOwogICAgIH0KICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAK
aW5kZXggNWU0NDA2N2VmMGEyLi5jMzAxMDg1OTNlZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2
ZXJTZXJ2aWNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVt
ZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAg
IHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJv
eHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAg
ICAgIGlmICghcHJveHkuaHR0cHNVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJv
eHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiKSkgeworICAgICAgICBpZiAoYXV0byB2YWx1
ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Il9zKSkgewogICAgICAgICAgICAg
YXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoIXNv
Y2tzUHJveHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ1MCw3
ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShK
U09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94eS5zb2Nrc1VS
TC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgi
c29ja3NWZXJzaW9uIik7CisgICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJv
eHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiJfcyk7CiAgICAgICAgICAgICBpZiAoIXNv
Y2tzVmVyc2lvblZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
QEAgLTg3MiwzMCArODcyLDMwIEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lv
bihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsIHN0CiAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldEJvb2xlYW4oInNldFdpbmRvd1JlY3QiX3MsIGNhcGFi
aWxpdGllcy5zZXRXaW5kb3dSZWN0LnZhbHVlX29yKHRydWUpKTsKICAgICAgICAgICAgIHN3aXRj
aCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlX29yKFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgewogICAgICAgICAgICAgY2FzZSBV
bmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzczoKLSAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNt
aXNzIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyJfcyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHQ6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlz
bWlzcyBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2Nl
cHQgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Il9z
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3I6Oklnbm9yZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiKTsKKyAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJpZ25vcmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMucGFnZUxvYWRTdHJhdGVn
eS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAgICAgICBjYXNl
IFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIik7CisgICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3Ms
ICJub25lIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIik7CisgICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3Ms
ICJub3JtYWwiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQ
YWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIik7CisgICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3Ms
ICJlYWdlciJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5wcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21t
YW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVy
JiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUo
c291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBh
IHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNl
LT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5j
b2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291
cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNl
LCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlk
YXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5l
cmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6
Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwg
Y28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRp
c2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVz
dGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9u
IGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVh
NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmlu
ZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtU
TFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwi
X3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25v
d24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xN
YXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00
NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcg
KiwgTlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uOWE3NjEwNmNh
MGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbQpAQCAtNTQsMTggKzU0LDE4IEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpE
aWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBp
ZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21w
YXRpYmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2Nh
bCkKIHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGNvbXBhcmU6d2ly
ZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxv
Y2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3
aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIg
d2lyZVR5cGUgPSB3aXJlW2ldOworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3Ro
OworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGNoYXIgbG9jYWxUeXBlID0gW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV07CisgICAgICAgIGNo
YXIgd2lyZVR5cGUgPSBbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldOwogCiAgICAgICAgIGlmIChs
b2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKICAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25l
ZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgpAQCAtOTcwLDkgKzk3MCw4IEBAIHN0YXRpYyBO
U0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNv
ZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9u
IGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25h
dHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RT
aWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhT
dHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJl
bW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5n
ICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5
cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxl
KHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJM
b2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3Ig
bWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBz
ZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpp
bmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAt
MTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9i
amVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0
YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBz
ZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJs
b2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2Vy
IGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgog
ICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RU
eXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiAr
MTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJv
dG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlw
ZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJn
ZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1
cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9
OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1
cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3Ry
aW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25z
dCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tT
aWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBs
eUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAg
ICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2lu
dGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0
cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdp
dGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlw
ZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBs
eUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9y
LCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgewor
ICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWdu
YXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9p
bnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVz
ICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tT
aWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRo
b2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwg
d2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJl
bW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAog
ICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9j
a0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5Qmxv
Y2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25h
dHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVw
bHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJl
cGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxv
Y2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2Nd
IGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZv
cktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBl
Yy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0
YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNl
bHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVy
VGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVj
ay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVi
cm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8v
d3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAi
aHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7
CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJy
b3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0
LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92
aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJu
ICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0g
ICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJy
b3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5j
b20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cu
Z29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1
ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBA
QCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2Vy
U3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25U
cmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9u
X3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lz
dGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwog
fQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0Fj
dGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRv
Y3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQ
ZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgi
Y29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBD
TU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNl
Il9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4
NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5h
YmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFT
Y3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAw
LCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAg
aWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAg
ICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQg
ZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywg
InJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFw
cC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlh
OTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdl
YlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2Ug
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAg
ICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoi
X3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIs
IDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7Cisg
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAi
VSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJL
ZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAg
ImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
aSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3Mywg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0
OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6
OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUi
X3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVy
cywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJf
cywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6
OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEz
Rm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAg
ICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8x
XzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFt
ZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3
Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xp
ZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENv
bm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0
QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJl
bnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBU
ZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBT
dHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRp
ZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
Il9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAg
ICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVk
aWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQo
KTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEs
IE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVl
cnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/
ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVk
aWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2Ny
ZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRl
clZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgp
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMy
OTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1p
c3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJl
Y3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1
cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVk
aXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNv
cmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3Jh
bW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcg
KzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxh
ZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNv
ZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAg
ICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2Rp
bmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQp
aW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZToo
Q0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNw
bGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFi
bGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQ
cmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1v
amkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3Vw
RW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0
RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9z
c1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAg
LTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAg
fQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAt
MCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQu
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQu
c2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3Rv
clNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBj
b3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01Q
SUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7
CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQog
ICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBp
bXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2Vf
dHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNl
bmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXIt
MS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VR
KDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIz
MGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0
LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1
YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3Rh
dGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAg
ICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rp
b24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9u
OiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
CiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBj
bGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3Niwy
NCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBw
SW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBB
U0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAg
ICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcg
UmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIp
PC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAg
ICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZl
dGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9m
ZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQg
ZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2Ny
aXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAg
eyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAi
Q29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAor
ICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZy
b20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBv
cnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0
byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50
LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVz
IH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7
ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAg
ICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMg
fSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRj
aGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQg
c29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmll
dzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50
MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBS
ZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8
L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxl
cnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwn
fSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9
LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkp
OwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYs
OCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRp
YXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIy
KHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsg
Ii9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQ
b3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFi
bGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0
KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9j
ZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3Rh
dGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09V
UkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0
cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09V
UkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNE
ZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0
Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7
CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02
MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUo
ZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJD
RSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYs
OCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVw
ZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFs
dWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAg
ICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsK
IAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2Ug
ZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNl
T3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rl
dmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVu
dGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2
aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0
aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3Jh
bnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNz
YWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRF
U1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNP
VVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBA
QCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJF
U09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBl
cm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsg
Ii8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJt
aXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9D
RE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9m
cmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2Nv
cGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29u
c3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9i
b2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQs
IERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQg
fSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkw
OTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAg
eyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJh
bWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZv
aWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNv
cmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0g
ICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2Vi
S2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAg
ICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRp
ZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAt
ODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250
ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9n
KG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lz
dGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVn
aXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cp
CkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
L3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJD
RSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0g
UiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JF
U09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsK
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIg
KyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAog
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3Jr
ZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBw
Qm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBt
YWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7
ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxv
d1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2Vy
cykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ug
d29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdl
IGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1i
b3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RX
aXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7
CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9t
YWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMi
LCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2Ny
aXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVy
Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3Ms
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0p
OwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JB
bGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJV
bnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3Ry
YXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4
MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1t
CkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2Fz
ZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwog
CiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJm
b28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2Ft
ZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsg
ImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29u
dGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDEx
IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9j
ZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAor
ICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAg
ICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0
bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0s
ICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xp
Y3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJf
c3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBh
dXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmln
dXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRl
cm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVk
NDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENv
bnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRl
bnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFz
cz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmln
YXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50
TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0
LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdL
Q29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwg
Q0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
ICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0
cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dp
dGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6
OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRp
b25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhz
dGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RX
ZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpw
YWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9u
RGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3Rk
OjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2Vi
S2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAg
IGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
Z1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUs
IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9u
RGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBS
ZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNl
ckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXpl
WmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVj
dEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNp
c2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91
bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRB
UEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9k
ZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAg
ICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQg
dG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsK
KyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsg
Ik1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3Ry
aW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBF
WFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwo=
</data>
<flag name="commit-queue"
          id="484738"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456451</attachid>
            <date>2022-04-01 23:23:07 -0700</date>
            <delta_ts>2022-04-01 23:29:13 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>124098</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggMWFlNjIyOTg1OGZlLi4yOWUyNTU3NjRlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJUQ1NkcFR5cGUsIFN0cmluZz4+IGZldGNoRGVzY3JpcHRp
b24oR3N0RWxlbWVudCoKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2RwU3RyaW5nKGdzdF9zZHBf
bWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsKICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHdlYnJ0Y0JpbiwgIiVzLWRlc2NyaXB0aW9uIFNEUDogJXMiLCBuYW1lLCBzZHBTdHJpbmcuZ2V0
KCkpOwotICAgIHJldHVybiB7IHsgZnJvbVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0
aW9uLmdldCgpKSwgc2RwU3RyaW5nLmdldCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZyb21TZXNz
aW9uRGVzY3JpcHRpb25UeXBlKCpkZXNjcmlwdGlvbi5nZXQoKSksIFN0cmluZyB7IHNkcFN0cmlu
Zy5nZXQoKSB9IH0gfTsKIH0KIAogc3RhdGljIEdzdFdlYlJUQ1NpZ25hbGluZ1N0YXRlIGZldGNo
U2lnbmFsaW5nU3RhdGUoR3N0RWxlbWVudCogd2VicnRjQmluKQpAQCAtNDU2LDcgKzQ1Niw3IEBA
IHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6c3RvcmVSZW1vdGVNTGluZUluZm8oR3N0U0RQ
TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9tZWRpYUZvck1pZC5zZXQoeyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAi
YXVkaW8iKSA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBtX21lZGlhRm9yTWlkLnNldChTdHJpbmcg
eyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAiYXVkaW8iX3MpID8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7
CiAKICAgICAgICAgLy8gaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9n
c3QtcGx1Z2lucy1iYWQvLS9tZXJnZV9yZXF1ZXN0cy8xOTA3CiAgICAgICAgIGlmIChzZHBNZWRp
YUhhc0F0dHJpYnV0ZUtleShtZWRpYSwgImljZS1saXRlIikpIHsKQEAgLTkyNCw3ICs5MjQsNyBA
QCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZEljZUNhbmRpZGF0ZShHU3RyZWFtZXJJ
Y2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgUAogCiAgICAgaWYgKCFjYW5kaWRhdGUuY2FuZGlkYXRl
LnN0YXJ0c1dpdGgoImNhbmRpZGF0ZToiKSkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
YXNrID0gY3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZEljZUNhbmRp
ZGF0ZUNhbGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkV4cGVjdCBs
aW5lOiBjYW5kaWRhdGU6PGNhbmRpZGF0ZS1zdHI+IiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkV4cGVjdCBsaW5lOiBjYW5kaWRhdGU6PGNh
bmRpZGF0ZS1zdHI+Il9zIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZEljZUNh
bmRpZGF0ZShHU3RyZWFtZXJJY2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgUAogICAgIGF1dG8gcGFy
c2VkQ2FuZGlkYXRlID0gcGFyc2VJY2VDYW5kaWRhdGVTRFAoY2FuZGlkYXRlLmNhbmRpZGF0ZSk7
CiAgICAgaWYgKCFwYXJzZWRDYW5kaWRhdGUpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJY2VDYW5k
aWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFcnJvciBw
cm9jZXNzaW5nIElDRSBjYW5kaWRhdGUiIH0pOworICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIl9z
IH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwODUsOSArMTA4
NSw5IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uU3VjY2VlZGVkKEdVbmlxdWVQdHI8R3N0V2ViCiAKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBzZHAoZ3N0X3NkcF9tZXNzYWdlX2FzX3RleHQoZGVzY3JpcHRpb24tPnNkcCkpOwogICAgICAg
ICBpZiAobV9pc0luaXRpYXRvcikKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNyZWF0ZU9mZmVyU3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkgfSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0
ZUFuc3dlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3JlYXRlQW5zd2VyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQoKSB9KTsKICAg
ICB9KTsKIH0KIApAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBv
aW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoR1VuaXF1ZVB0cjxHRXJyb3I+JiYK
ICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gZXhjID0gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gZXJyb3ItPm1l
c3NhZ2UgOiAiVW5rbm93biBFcnJvciIgfTsKKyAgICAgICAgYXV0byBleGMgPSBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdl
KSA6ICJVbmtub3duIEVycm9yIl9zIH07CiAgICAgICAgIGlmIChtX2lzSW5pdGlhdG9yKQogICAg
ICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJGYWlsZWQoV1RGTW92
ZShleGMpKTsKICAgICAgICAgZWxzZQpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBHU3RyZWFt
ZXJNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFyZWNl
aXZlciB8fCAhbWlkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJl
YW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JN
aWQuZ2V0KG1pZC5nZXQoKSkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdS
ZW1vdGVUcmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kPihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRpYUZvck1pZC5nZXQoU3RyaW5nIHsgbWlk
LmdldCgpIH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI1NjRlOWE0NjQ4MC4uMzBmZWYwZTAy
Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKQEAgLTU5LDQwICs1OSw0MCBAQCBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVHU3RyZWFtZXJQZWVyQwog
c3RhdGljIFJUQ1J0cENhcGFiaWxpdGllcyBnc3RyZWFtZXJSdHBDYXBhdGlibGl0aWVzKGNvbnN0
IFN0cmluZyYga2luZCkKIHsKICAgICBSVENSdHBDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzOwot
ICAgIGNhcGFiaWxpdGllcy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZCh7ICJodHRwOi8vd3d3Lmll
dGYub3JnL2lkL2RyYWZ0LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25z
LTAxIiB9KTsKKyAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0
cDovL3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2Mt
ZXh0ZW5zaW9ucy0wMSJfcyB9KTsKICAgICBpZiAoa2luZCA9PSAiYXVkaW8iX3MpIHsKICAgICAg
ICAgY2FwYWJpbGl0aWVzLmNvZGVjcy5yZXNlcnZlQ2FwYWNpdHkoNCk7Ci0gICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL09QVVMi
LAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJhdWRpby9PUFVTIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDQ4MDAwLAogICAg
ICAgICAgICAgLmNoYW5uZWxzID0gMiwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0p
OwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJhdWRpby9HNzIyIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5n
KCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1p
bWVUeXBlID0gImF1ZGlvL0c3MjIiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gODAwMCwK
ICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
IiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vUENNQSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0
cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7
IC5taW1lVHlwZSA9ICJhdWRpby9QQ01BIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgw
MDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsg
Lm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1w
dHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNVSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUg
PSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICIiIH0pOworICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9
KTsKICAgICB9IGVsc2UgewotICAgICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iIH0pOworICAgICAgICBjYXBhYmls
aXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRp
b24iX3MgfSk7CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQp
OwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJ2aWRlby9WUDgiLAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRl
ID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2Fw
YWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5
IiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAg
IGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVv
L1ZQOSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5z
ZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29k
ZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDkiLAorICAgICAgICAg
ICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MCJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5Il9zLAog
ICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gInByb2ZpbGUtaWQ9MSIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiLAorICAgICAgICAgICAgLnNkcEZt
dHBMaW5lID0gInByb2ZpbGUtaWQ9MSJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vSDI2NCJfcywKICAgICAgICAg
ICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwYWNr
ZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZiIgfSk7CisgICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00
MmUwMWYiX3MgfSk7CiAgICAgfQogICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBHU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRl
T2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYgb3B0aW9ucykKIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCiB7CiAgICAg
aWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpIHsKLSAgICAgICAgY3JlYXRlQW5zd2VyRmFp
bGVkKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gcmVtb3RlIGRlc2NyaXB0aW9u
IHNldCIgfSk7CisgICAgICAgIGNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNjcmlwdGlvbiBzZXQiX3MgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4
IDI0NDlhZTg1ZjE2ZC4uZTc3OGY2ZDRmMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU3Ry
aW5nIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6bWlkKCkKIHsKICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IG1pZDsKICAgICBnX29iamVjdF9nZXQobV9ydGNUcmFuc2NlaXZlci5nZXQo
KSwgIm1pZCIsICZtaWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgIHJldHVybiBtaWQuZ2V0KCk7
CisgICAgcmV0dXJuIFN0cmluZyB7IG1pZC5nZXQoKSB9OwogfQogCiB2b2lkIEdTdHJlYW1lclJ0
cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcCgpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR1N0cmVh
bWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9wcGVkKCkgY29uc3QKIHN0YXRpYyBpbmxpbmUg
V0FSTl9VTlVTRURfUkVUVVJOIEV4Y2VwdGlvbk9yPEdzdENhcHMqPiB0b1J0cENvZGVjQ2FwYWJp
bGl0eShjb25zdCBSVENSdHBDb2RlY0NhcGFiaWxpdHkmIGNvZGVjKQogewogICAgIGlmICghY29k
ZWMubWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikgJiYgIWNvZGVjLm1pbWVUeXBlLnN0YXJ0
c1dpdGgoImF1ZGlvLyIpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlm
aWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IGJhZCBtaW1lVHlwZSIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0
cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUiX3MgfTsKIAogICAgIGF1dG8gY29tcG9uZW50
cyA9IGNvZGVjLm1pbWVUeXBlLnNwbGl0KCcvJyk7CiAgICAgYXV0byogY2FwcyA9IGdzdF9jYXBz
X25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtcnRwIiwgIm1lZGlhIiwgR19UWVBFX1NUUklORywg
Y29tcG9uZW50c1swXS5hc2NpaSgpLmRhdGEoKSwgImVuY29kaW5nLW5hbWUiLCBHX1RZUEVfU1RS
SU5HLCBjb21wb25lbnRzWzFdLmFzY2lpKCkuZGF0YSgpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0
YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAppbmRleCBhYWE0MTM3ZDJjNjAuLmQ3
YjYzOGE0MzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9y
LmNwcApAQCAtNDMsMTUgKzQzLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDU3RhdHMo
UlRDU3RhdHNSZXBvcnQ6OlN0YXRzJiBzdGF0cywgY29uc3QgR3N0U3RydWN0dXJlCiAgICAgZG91
YmxlIHRpbWVzdGFtcDsKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZG91YmxlKHN0cnVjdHVy
ZSwgInRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQogICAgICAgICBzdGF0cy50aW1lc3RhbXAgPSB0
aW1lc3RhbXA7Ci0gICAgc3RhdHMuaWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0
dXJlLCAiaWQiKTsKKyAgICBzdGF0cy5pZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0
cmluZyhzdHJ1Y3R1cmUsICJpZCIpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRD
UlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OlJ0cFN0cmVhbVN0YXRzJiBzdGF0cywgY29u
c3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBz
dHJ1Y3R1cmUpOwogCi0gICAgc3RhdHMudHJhbnNwb3J0SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9z
dHJpbmcoc3RydWN0dXJlLCAidHJhbnNwb3J0LWlkIik7Ci0gICAgc3RhdHMuY29kZWNJZCA9IGdz
dF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJjb2RlYy1pZCIpOworICAgIHN0YXRz
LnRyYW5zcG9ydElkID0gU3RyaW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInRyYW5zcG9ydC1pZCIpIH07CisgICAgc3RhdHMuY29kZWNJZCA9IFN0cmluZyB7IGdzdF9z
dHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJjb2RlYy1pZCIpIH07CiAKICAgICB1bnNp
Z25lZCB2YWx1ZTsKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfdWludChzdHJ1Y3R1cmUsICJz
c3JjIiwgJnZhbHVlKSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmls
bE91dGJvdW5kUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6Ok91dGJvdW5kUnRwU3RyZWFt
UwogICAgICAgICBzdGF0cy5uYWNrQ291bnQgPSBuYWNrQ291bnQ7CiAKICAgICBpZiAoY29uc3Qg
Y2hhciogcmVtb3RlSWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAicmVt
b3RlLWlkIikpCi0gICAgICAgIHN0YXRzLnJlbW90ZUlkID0gcmVtb3RlSWQ7CisgICAgICAgIHN0
YXRzLnJlbW90ZUlkID0gU3RyaW5nIHsgcmVtb3RlSWQgfTsKIAogICAgIC8vIEZJWE1FCiAgICAg
Ly8gc3RhdHMudGFyZ2V0Qml0cmF0ZSA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENV
dGlscy5jcHAKaW5kZXggNTRiOTc0ZDNhNzJkLi41NWUxYjVkYjFkZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJU
Q1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmUHRyPFJU
Q0Vycm9yPiB0b1JUQ0Vycm9yKEdFcnJvciogcnRjRXJyb3IpCiAgICAgYXV0byBkZXRhaWwgPSB0
b1JUQ0Vycm9yRGV0YWlsVHlwZShzdGF0aWNfY2FzdDxHc3RXZWJSVENFcnJvcj4ocnRjRXJyb3It
PmNvZGUpKTsKICAgICBpZiAoIWRldGFpbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFJUQ0Vycm9yOjpjcmVhdGUoKmRldGFpbCwgcnRjRXJyb3ItPm1lc3NhZ2UpOworICAg
IHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIFN0cmluZzo6ZnJvbVVURjgocnRjRXJy
b3ItPm1lc3NhZ2UpKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgdG9XZWJSVENCaXRSYXRl
UHJpb3JpdHkoUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0
YXRpYyBpbmxpbmUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIHRvUlRDRW5jb2RpbmdQYXJhbWV0
ZXJzKGNvbnN0IEdzdFN0cnVjdHVyCiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQ2NChy
dGNQYXJhbWV0ZXJzLCAibWF4LWZyYW1lcmF0ZSIsICZtYXhGcmFtZXJhdGUpKQogICAgICAgICBw
YXJhbWV0ZXJzLm1heEZyYW1lcmF0ZSA9IG1heEZyYW1lcmF0ZTsKIAotICAgIHBhcmFtZXRlcnMu
cmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHJ0Y1BhcmFtZXRlcnMsICJyaWQiKTsKKyAg
ICBwYXJhbWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJz
LCAicmlkIl9zKTsKIAogICAgIGRvdWJsZSBzY2FsZVJlc29sdXRpb25Eb3duQnk7CiAgICAgaWYg
KGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShydGNQYXJhbWV0ZXJzLCAic2NhbGUtcmVzb2x1dGlv
bi1kb3duLWJ5IiwgJnNjYWxlUmVzb2x1dGlvbkRvd25CeSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCmluZGV4IDAzOTkzNGYyOTRlYS4uYmU3ZmM0Yjg2ZWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5n
IGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7CiAgICAgV0dQVUFkYXB0ZXJQcm9w
ZXJ0aWVzIHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKGFkYXB0ZXIs
ICZwcm9wZXJ0aWVzKTsKLSAgICByZXR1cm4gcHJvcGVydGllcy5uYW1lOworICAgIHJldHVybiBT
dHJpbmcgeyBwcm9wZXJ0aWVzLm5hbWUgfTsKIH0KIAogc3RhdGljIFJlZjxTdXBwb3J0ZWRGZWF0
dXJlcz4gc3VwcG9ydGVkRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVURldmljZUltcGwuY3BwCmluZGV4IDk2OWE3YTJjYTdiOS4uOGM5NDc1YWY1MDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURldmljZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIERl
dmljZUltcGw6OnBvcEVycm9yU2NvcGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPEVycm9yPiYmKT4mJgogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfRm9yY2UzMjoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfVmFsaWRhdGlvbjoK
LSAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKG1lc3NhZ2Up
IH0gfTsKKyAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKFN0
cmluZyB7IG1lc3NhZ2UgfSkgfSB9OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9PdXRPZk1lbW9yeToKICAgICAgICAgICAgIGVycm9yID0geyB7IE91dE9m
TWVtb3J5RXJyb3I6OmNyZWF0ZSgpIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKaW5kZXggOGViNGU5MjZiOWRhLi4wZDRkNDZhMGVkOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0zNjgsNyAr
MzY4LDcgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VN
YXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgc3RhdGljIFN0cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRp
b24pOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFY
Tm90aWZpY2F0aW9uKTsKIAogICAgIEFYVHJlZURhdGEgdHJlZURhdGEoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5k
ZXggYTQ1NjY1MTk2YzVhLi5lYTI1MjczMmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikK
ICAgICBvYmotPnNldFdyYXBwZXIod3JhcHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVj
dENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0
aW9uKQorQVNDSUlMaXRlcmFsIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAg
QVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAo
bm90aWZpY2F0aW9uKSB7CiAgICAgY2FzZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAg
IGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3Vz
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhJbWFnZU92ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAg
ICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgot
ICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0g
IkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdp
b25DcmVhdGVkOgotICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0
dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNl
IEFYVmFsdWVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
WEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQVhDdXJyZW50U3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0
RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC05OCwxNSArOTgsMTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAg
ICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBtdXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vz
c2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5r
ZWQgd2l0aCBVSUtpdC4gU28gYSB3b3JrYXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVy
J3MKICAgICAvLyBwb3N0Tm90aWZpY2F0aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFj
Y2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQgZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3Rp
ZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0g
ICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9u
TmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChu
b3RpZmljYXRpb25OYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0
LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRv
IG5zTm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsK
KyAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgLy8gVG8gc2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5
b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRvciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNj
ZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNj
ZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2Jq
ZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNh
dGlvbk5hbWUuZ2V0KCldOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1
ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcx
LDEyICsxNjcxLDEyIEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmls
aXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFnZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJl
c3VsdCkgewotICAgICAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6
Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6
QVhQYWdlU2Nyb2xsZWQpOwotICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNh
dGlvbk5hbWVdOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246
OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVOU1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90
aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Ny
b2xsUG9zID0gW3NlbGYgX2FjY2Vzc2liaWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5T
U3RyaW5nICp0ZXN0U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9s
bCBbcG9zaXRpb246ICUuMmYgJS4yZl0iLCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAg
ICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYg
YWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVz
ZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIg
YW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQgc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0Yjhj
YWU3NjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAi
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4i
X3MpOwogICAgICAgICBTQ1JJUFRDT05UUk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcs
ICJleGVjdXRlU2NyaXB0SW5Xb3JsZDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
bi1hcHAgYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0VkaXRvcklPUy5tbQppbmRleCA5MDBlZDVmZjg0YjkuLjMxZWZjMjgzMDUzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJh
bCBuZXdWYWx1ZSA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIFRleHRBbGlnbk1vZGUgdGV4
dEFsaWduID0gKnZhbHVlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpTdGFydDoKQEAgLTEwMCwyMSArMTAwLDIxIEBAIHZvaWQgRWRpdG9yOjpzZXRU
ZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rp
b24gZGlyCiAgICAgICAgICAgICAvLyBuby1vcAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICBuZXdWYWx1
ZSA9ICJsZWZ0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdDoKLSAg
ICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gInJp
Z2h0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdExlZnQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgbmV3
VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6UmlnaHQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKLSAgICAgICAg
bmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgogICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0Q2VudGVyOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRWRpdG9yOjpz
ZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24gZGlyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghbmV3VmFsdWUpCisg
ICAgaWYgKG5ld1ZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBFbGVtZW50
KiBmb2N1c2VkRWxlbWVudCA9IG1fZG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBh
dXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsK
ICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3Igdmlh
IHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZlIG9u
ZS4KLSAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CisgICAgZGVmYXVsdFN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwg
MC4wKSJfcyk7CiAgICAgCiAgICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCB0aGUgdXNlciBj
YW4gbW9kaWZ5LCBsaWtlIGZvbnQtd2VpZ2h0LiAKICAgICAvLyBBbHNvIHJlbW92ZSBmb250LWZh
bWlseSwgcGVyIEhJIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCA0YjZkMGU1YjQ0NDcuLjAxODI4ZWY3MjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RydWN0IExvZ0FyZ3Vt
ZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhp
bXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9Q
QVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsKKyAgICAgICAgcmV0dXJuICJbdXJs
XSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCmluZGV4IDUxMjNiYjJkMGMwNC4uZDQ4NDFkZjNkZmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMjUyLDE0ICsyNTIsMTQgQEAgcHJp
dmF0ZToKICAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIEZsb2F0UmVjdCByZWN0Rm9yU2V0dGluZ0F0SW5kZXgo
dW5zaWduZWQpOwotICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYpOworICAg
IGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAgICAgICAgIAogICAgIHN0ZDo6
b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOwogCiAgICAgc3RydWN0
IFNldHRpbmcgewotICAgICAgICBTdHJpbmcga2V5OwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAg
ICAgICAgYm9vbCB2YWx1ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGtleSB7IEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpIH07CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1lIHsgQVNDSUlMaXRlcmFsOjpu
dWxsKCkgfTsKKyAgICAgICAgYm9vbCB2YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsgICAgCiAKICAg
ICBGaXhlZFZlY3RvcjxTZXR0aW5nPiBtX3NldHRpbmdzIHsKQEAgLTM3OSw3ICszNzksNyBAQCBG
bG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCiAgICAgfTsKIH0KIAotYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXk6OnZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmIG5hbWUpCitib29sIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1lKQogewogICAg
IGZvciAoY29uc3QgYXV0byYgc2V0dGluZyA6IG1fc2V0dGluZ3MpIHsKICAgICAgICAgaWYgKG5h
bWUgPT0gc2V0dGluZy5rZXkpCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LAogICAgIAogICAgIGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBpZiAo
dmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIikpIHsKKyAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJy
ZWdpb25zIl9zKSkgewogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCkBAIC00MzgsNyAr
NDM4LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgYXV0byByZWdpb24gPSBhY3Rp
dmVSZWdpb24oKTsKIAotICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3Ry
YWluIikpIHsKKyAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJf
cykpIHsKICAgICAgICAgYXV0byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1cykgewog
ICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwogICAgICAgICAg
ICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5h
dGVzOwpAQCAtNDUxLDEwICs0NTEsMTAgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAg
ICAgIGF1dG8gbWFrZUdyYWRpZW50ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3VuZCwgR3Jh
ZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGdyYWRp
ZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkIH0pOwotICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmco
Indhc2giKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAgaWYgKHJl
Z2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xp
cCJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBD
b2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7CiAgICAgICAgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9y
KENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUp
LmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8fCAhdmFsdWVG
b3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjIp
IH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDApIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTQ2NiwxOCArNDY2LDE4IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3
UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfTsK
ICAgICAgICAgCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0gNTA7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOworICAgICAg
ICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpOwogICAgICAgICBW
ZWN0b3I8UGF0aD4gY2xpcFBhdGhzOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQogICAgICAg
ICAgICAgY2xpcFBhdGhzID0gcGF0aHNGb3JSZWdpb24oKnJlZ2lvbik7CiAKLSAgICAgICAgYm9v
bCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAo
IXZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKTsKKyAg
ICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJl
Z2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJj
bGlwIl9zKSk7CiAKICAgICAgICAgaWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQpIHsKICAg
ICAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1
cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6
ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6
IGRlZmF1bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BHcmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoZ3JhZGllbnREYXRhKHJhZGl1cyAqIDEuNSksIHsgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4y
KSB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKQEAgLTQ5Niwx
MiArNDk2LDEyIEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdl
T3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7Ci0gICAgICAgIGlmICghc2hvdWxkVXNl
QmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciIpKQor
ICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5n
KCJjb250ZXh0dWFsQ29sb3IiX3MpKQogICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0g
cmVnaW9uLT5oYXNMaWdodEJhY2tncm91bmQ7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAg
ICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUi
KSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVm
YXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRp
bmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgp
Lm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICBjb250ZXh0
LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVu
dERhdGEocmFkaXVzKSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7
CiAgICAgICAgICAgICB9CkBAIC01MjIsOSArNTIyLDkgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3Jt
TW8KIAogICAgIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAotICAgIGlmICgh
dmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiKSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vy
c29yIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0gICAgZWxzZSBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0
aW5nKCJob3ZlciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNvcigpOwog
CiAgICAgYXV0byBldmVudEluQ29udGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CkBAIC01NDQsNyArNTQ0LDcgQEAgYm9v
bCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJs
YXksIGNvbnN0IFBsYXRmb3JtTW8KICAgICBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGlu
YXRlcyA9IGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzOwogICAgIG92ZXJsYXkuc2V0TmVlZHNE
aXNwbGF5KCk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQor
ICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZl
bnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQppbmRleCA0Nzc0Y2UwOGE1YjguLmUwMTZmOTIxZDVl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CkBAIC02MywxNSArNjMsMTUgQEAgYm9vbCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1l
ZGlhU291cmNlRW5hYmxlZCgpCiAKIHZvaWQgU2V0dGluZ3NCYXNlOjppbml0aWFsaXplRGVmYXVs
dEZvbnRGYW1pbGllcygpCiB7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBU
QyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlBpbmdGYW5nIFNDIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElS
QUdBTkEpOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIs
IFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiLCBV
U0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQ
VF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQVF9DT01N
T04pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRf
VFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFND
Il9zLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IkhpcmFnaW5vIE1pbmNobyBQcm9OIl9zLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsK
KyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJ
UFRfSEFOR1VMKTsKKworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJ
UFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRf
Q09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1P
Tik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NP
TU1PTik7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAppbmRleCBlYmNkYjFkZDA4MTIuLjVhOTQ4OTAwOTQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVXNlckFnZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNp
b24gPSBlbXB0eVN0cmluZygpLCBVc2VyQWdlbnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVs
dCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNP
UkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAj
ZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4
MC4uZTYyY2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAt
NTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNv
bmRzIG1heEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUNvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQog
ewogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZv
cm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9u
IGNvbnN0cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lv
bnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hp
Y2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2Fw
YWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lk
IHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwog
CiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggYjkzYmMzNGNj
NGQ0Li4xZjUxNjkxZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTM0
MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0cmluZ0Zyb21GYW1p
bHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBmYW1pbHk7CiAKICAgICBp
ZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3RhbmRh
cmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzZXJpZiI7CisgICAgICAgIHJldHVy
biAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWls
eU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2Fucy1zZXJp
ZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZh
bWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6TW9ub3NwYWNlRmFtaWx5KSkKLSAg
ICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSJfczsK
ICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6
Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAgICAgIHJldHVy
biAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFt
aWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiZmFudGFzeSI7
CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBp
ZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3lzdGVt
VWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpCiAgICAgICAgIHJl
dHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gIiI7Cisg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBGQ19WRVJTSU9OIDwgMjEzOTUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDFkNmFl
MmUxMmU3ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVD
S19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVj
X3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRp
b24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5n
IHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
WyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIyNTQxLi4xMjA3
YzM1YTExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC02MTMsNyArNjEzLDcg
QEAgc3RhdGljIGdib29sZWFuIHBhcnNlR3N0U3RydWN0dXJlVmFsdWUoR1F1YXJrIGZpZWxkSWQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIHsKICAgICBpZiAoYXV0byBqc29uVmFsdWUgPSBn
c3RTdHJ1Y3R1cmVWYWx1ZVRvSlNPTih2YWx1ZSkpIHsKICAgICAgICAgYXV0byogb2JqZWN0ID0g
cmVpbnRlcnByZXRfY2FzdDxKU09OOjpPYmplY3QqPih1c2VyRGF0YSk7Ci0gICAgICAgIG9iamVj
dC0+c2V0VmFsdWUoZ19xdWFya190b19zdHJpbmcoZmllbGRJZCksIGpzb25WYWx1ZS0+cmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoZmllbGRJZCkgfSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuY3BwCmluZGV4IDJkOWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsKICAgICAgICAgZm9yIChHTGlz
dCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0b3JpZXMgPSBnX2xpc3Rf
bmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBmYWN0b3J5ID0gcmVpbnRlcnBy
ZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0YSk7Ci0gICAgICAgICAg
ICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0
b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAgICAgICAgICBTdHJpbmcgbWV0
YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxF
TUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1dG8gY29tcG9uZW50cyA9IG1l
dGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5jb250YWlucygi
SGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdIYXJkd2FyZSA9IHRydWU7CkBA
IC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxp
emVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAKICAgICBh
dXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIsIEVs
ZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwotICAgIGlmICgo
bWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRp
b246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29kZXJBdmFpbGFibGUpIHsKKyAg
ICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25m
aWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29kZXJBdmFpbGFi
bGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiks
IGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4
LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBAIC00MDksNyAr
NDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVy
cyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAKLSAgICBhdWRpb01w
ZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRl
Y29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFp
bmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCJfcyk7
CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAgICBtX2RlY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAgICAgICAgbV9kZWNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2MwZDhmNzNjNDJiLi43
ZWJiYTQzMjJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcgog
CiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2lu
aygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkg
PyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1Bs
YXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2lu
ayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGF1
ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyLm91
dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVycm9yICVkOiAl
cyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVzc2FnZTsKKyAg
ICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsKIAogICAgICAg
ICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICBpZiAo
Z19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9F
UlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
ICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImh0dHAt
aGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQ
cm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IHVyaSB9Owor
ICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgICAgICAgICAg
ICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAogICAgICAg
ICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnko
R3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7CiAgICAg
ICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0aXRsZSk7
CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KHRpdGxl
KTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7
CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjE2Niw3
ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3VyZURv
d25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0KGVsZW1l
bnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVsbHB0cik7
CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVkIGZpbGUgZG93
bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRlbXBsYXRlLmdl
dCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBuZXdEb3dubG9h
ZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0cmluZyBuZXdE
b3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07CiAgICAgcHVy
Z2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNlKCJYWFhYWFgi
LCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlhUGxheWVy
UAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdfb2JqZWN0X2dl
dChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwgJmRvd25s
b2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5MSUtFTFko
IUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZEZpbGUuZ2V0
KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBtZWRpYSB0ZW1w
b3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgLy8gdGhvdWdo
LiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAg
ICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAgICAgICAgVVJM
IGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7
Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOworICAgICAg
ICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9uIH0pOwogCiAg
ICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAgICAgIGdfb2Jq
ZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJpblVybFN0ci5v
dXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxheWJpblVybFN0
ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBsYXliaW5VcmxT
dHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1VybCkgewogICAg
ICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBhbHJlYWR5IGhh
bmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVybCkKIAog
ICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAgIGlmIChlbGVt
ZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIjsKKyAg
ICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0IGNoYXIqIHR5
cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygibWVkaWFzdHJl
YW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBAIEluaXRE
YXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Qcm90ZWN0
aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEgPSBudWxscHRy
OwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0KCksICZl
dmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIGluaXREYXRh
LmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAgaW5pdERhdGEu
YXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwogICAgICAgICAg
ICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShldmVudC5n
ZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChHc3RFdmVudCog
ZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0cjsKICAg
ICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRfcGFyc2VfcHJv
dGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBudWxscHRyKTsK
LSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1VVUlELCBp
bml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsgU3RyaW5nIHsg
ZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3Li4zMmVkM2Fl
OGIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
QEAgLTQ3MSw3ICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250
ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnko
R3N0VG9jRW50cnkqKTsKIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciJfczsgfQogICAgIGJvb2wg
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2F2
ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggZGNhMmMyMWZkNjMwLi4wM2VkYWM4YzhlOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTE5NSw3
ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29k
ZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAgIFN0cmluZyBsYW5ndWFn
ZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwgbGFuZ3VhZ2Up
KSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5
XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1YWdlID0gU3RyaW5nIHsg
Z3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEo
KSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sgJWQncyBsYW5ndWFnZSBj
b2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBp
ZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVlID0gbGFuZ3VhZ2U7CkBA
IC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWco
R3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMKICAgICBHVW5pcXVlT3V0
UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFn
cywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBHU1RfREVCVUcoIlRy
YWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7Ci0g
ICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZhbHVlID0gU3RyaW5nVHlw
ZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2Iz
My4uOTE5NjNkMzI5MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5
ICsxMDYsMTkgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkg
YXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGlj
dWxhciBHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlL0dMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09
ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVy
X2JsaXQiX3MpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNh
bXBsZSIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3Mp
OwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAg
ICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNl
ZF9hcnJheXMiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0
YW5jZWRfYXJyYXlzIikpCi0gICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8
fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlz
Il9zKSkKKyAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl9kcmF3X2luc3RhbmNlZCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAi
R0xfRVhUX3NSR0IiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJf
c1JHQiJfcykpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVw
dGgiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX2ZyYWdfZGVwdGgiX3MpOwogCiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMg
R0xfT0VTX3JnYjhfcmdiYTguCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikK
QEAgLTEyNywxNCArMTI3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1
cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4
dHVyZV9mbG9hdCBvciBHTF9PRVNfdGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSBy
ZXBvcnQKICAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9m
bG9hdF9saW5lYXIgYW5kIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWls
YWJsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0g
IkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zs
b2F0X2xpbmVhciIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIi
KQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
dGV4dHVyZV9mbG9hdCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VT
X3RleHR1cmVfZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9v
YmplY3QiKSB7CiAjaWYgKFBMQVRGT1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhf
YXJyYXlfb2JqZWN0Il9zKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2Fy
cmF5X29iamVjdCJfcyk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJv
b2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0g
IkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiX3MpOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIl9zKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJz
IikgewogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNl
bHNlCiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZv
cm1zLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQ
TEFURk9STShXSU4pCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVj
dFN1cHBvcnRlZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJh
eU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0
YXRpYyBjb25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xf
T0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFy
cmF5T2JqZWN0OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwCmluZGV4IDQ4OTY5OWM0ZWUzYy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRm
b3JtR0xPYmplY3QKICAgICBlbHNlIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0
R0w6OkZSQUdNRU5UX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZS
QUdNRU5UOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0
eXBlLgorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlw
ZS4KIAogICAgIEhhc2hNYXA8UGxhdGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OlNoYWRlclNvdXJjZUVudHJ5Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3No
YWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4
dC0+bV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hh
ZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3
IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQot
ICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
cmV0dXJuIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcAppbmRleCA1NGIxNzAwMTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVT
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xP
cGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgICAgICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5T
VEFOQ0VEQU5HTEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMg
PSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkg
eworICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsK
ICAgICAgICAgICAgIG1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0
cmliRGl2aXNvcjsKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6
OmdsRHJhd0FycmF5c0luc3RhbmNlZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSA9IDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBA
QCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwo
Y29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0
ZXMoKTsKIAogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4
dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1
cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAg
IFN0cmluZyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24gfTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lv
bkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAg
IC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRl
cHRoID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCmluZGV4IDg0OWE3ZjVhMzkxMi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBp
biBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBj
b3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmls
aXRpZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KTsKKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAg
ICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBH
Q0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5k
ZXggYzM1YjJmMGYxNWQ5Li43YjU0YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4
ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1
bHRzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVz
KCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3Rl
bmNpbCJfcyk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9z
KGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAg
ICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7
CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBo
YXZlIGl0LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5j
aWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3
Li4zYWU2MmJmNmVlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNo
YXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhl
IGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAv
LyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBi
b29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2ls
IHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZm
ZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVz
aXplIHJlZ3VsYXIgRkJPLgogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0
MCwxMSArMjQwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQo
R0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0
aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVw
dGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBh
dHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFu
dGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVy
X3RvX3RleHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9y
dHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7
CiAgICAgICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRl
eHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29u
c3QgSW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQo
KQogewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4g
ImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0
LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlz
Q2xhc3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0g
IT0gVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5n
IG9zTmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkK
IHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUo
KSkKLSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAg
ICByZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMg
U3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJv
bGxlciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBp
ZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tB
Y3RpdmUpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFj
a0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENv
Y29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbQppbmRleCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBp
ZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVT
eXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsK
LSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmls
ZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAg
ICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFm
aWxlUGF0aC5pc051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5
c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2
aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9z
ZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgp
XSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5j
MjBlYzhlNzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQ
YXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0Nv
bnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhy
b3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQot
ICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7
CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVt
cHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3Rp
bmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXgg
NTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
Q29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNw
cApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRy
PEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFl
cnJvck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2Jq
ZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5n
ZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2Ui
KTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3Nh
Z2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNjNS4uZDcxZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lv
bi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRz
KEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2Ny
aXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIp
OworICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNw
b25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dp
bmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21t
YW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246
OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+
Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9
IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAg
ICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5r
bm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsK
KyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJf
cyk7CiAgICAgICAgICAgICBpZiAoIXVybCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtu
b3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBA
QCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0
ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAg
aWYgKHggJiYgeSkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4
LnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZh
bHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFs
dWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1
ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZN
b3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAgICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWln
aHQpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFs
dWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdo
dC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3Ms
IHdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWln
aHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVj
dCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dTaXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9o
b3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4
dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29t
bWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0ZpbGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJy
YXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVs
ZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmls
ZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2Fk
U2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYg
KGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlw
ZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0
cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAg
ICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7
CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRs
ZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1
NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1l
bnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJs
ZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlm
IChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1lbnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAg
ICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVt
ZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAg
ICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIKLSAgICAgICAgIn0iOworICAgICAgICAifSJfczsK
IAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFy
YW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxC
cm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Np
b246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5n
JiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgYXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxl
bWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYg
KCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmls
aXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRo
aXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1Nj
cmlwdFtdID0KKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3Jp
cHQgPQogICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAg
ICAgICAgICAgICAgICAgICAgIiAgICBsZXQgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8
IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVu
dCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lv
bjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcm
IHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2Vs
ZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5sZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsi
CiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVt
ZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25h
bWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxlJywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZv
Y3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAgICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAg
ICAgIn0iX3M7CiAKICAgICAgICAgICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRl
RWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEz
IEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3Qg
U2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBj
b29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29r
aWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUu
cGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJf
cywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iX3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0
cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsK
ICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52
YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHki
X3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNvb2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBjb29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAg
ICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52
YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUi
X3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29r
aWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzggKzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3Vy
Y2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3VyY2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAg
IHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5lbnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291
cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciog
YXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYg
aW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2Fz
ZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAg
ICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6
CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRl
clR5cGU6Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAg
ICAgICAgIHJldHVybiAiTW91c2UiOworICAgICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAg
ICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNo
IjsKKyAgICAgICAgICAgIHJldHVybiAiVG91Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5
cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVybiAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAi
UGVuIl9zOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6
OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJuICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAi
S2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAg
IHJldHVybiAiV2hlZWwiOworICAgICAgICByZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0
b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3
cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3Bv
cnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICBy
ZXR1cm4gIlBvaW50ZXIiOworICAgICAgICByZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQ
b2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOwor
ICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1
ZTQ0MDY3ZWYwYTIuLjU5MTg0NzBiODVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9X
ZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZp
Y2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBT
dHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlmIChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBn
ZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQUREUiIpKQotICAgICAgICB0YXJnZXRTdHJpbmcgPSB0
YXJnZXRFbnZWYXI7CisgICAgICAgIHRhcmdldFN0cmluZyA9IFN0cmluZyB7IHRhcmdldEVudlZh
ciB9OwogI2VuZGlmCiAgICAgZm9yIChpbnQgaSA9IDEgOyBpIDwgYXJnYzsgKytpKSB7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3ZbaV07CkBAIC03NSw3ICs3NSw3IEBAIGludCBXZWJE
cml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAg
IHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVY
SVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2
W2ldOworICAgICAgICAgICAgcG9ydFN0cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTk3LDcgKzk3LDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAg
cHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJ
VF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gYXJn
dltpXTsKKyAgICAgICAgICAgIHRhcmdldFN0cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHBy
b3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94eS5odHRwc1VSTC0+aXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSIpKSB7Cisg
ICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHki
X3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNvY2tzUHJveHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsK
ICAgICAgICAgICAgIGlmICghc29ja3NQcm94eSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5
PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAg
ICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iKTsKKyAgICAgICAgICAgIGF1dG8gc29j
a3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIl9zKTsK
ICAgICAgICAgICAgIGlmICghc29ja3NWZXJzaW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcyLDMwICs4NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJT
ZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVz
TGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0
V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkp
OwogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7
CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgotICAg
ICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9t
cHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9z
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiKTsKKyAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeToKLSAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3Ms
ICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0QW5kTm90aWZ5OgotICAg
ICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9t
cHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
YWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6SWdub3JlOgotICAgICAgICAgICAgICAg
IGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJf
cywgImlnbm9yZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxp
dGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkp
IHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKLSAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywg
Im5vbmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJu
b3JtYWwiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6OkVhZ2VyOgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
ZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnByb3h5KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKaW5kZXggMGY2
Yzg3ODIwMDk1Li4yYjY3MTM0OWQzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29j
a2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
Q2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0
aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRD
YXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAg
ICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFs
dWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFs
dWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdl
dFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJfcywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRB
ZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFy
Z2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBv
cnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9ydDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGll
cy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdl
dFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJp
bGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAm
JiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJp
bGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQb3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCmluZGV4IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBi
ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUVFBSZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1v
dGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRAogICAgICAgICBIVFRQUmVx
dWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJlc3BvbnNlIHsKICAgICAgICAgICAgIDQwMCwKICAgICAg
ICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLAotICAgICAgICAgICAgIjxoMT5CYWQg
Y2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCIsCisgICAgICAgICAgICAiPGgxPkJhZCBj
bGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0Il9zLAogICAgICAgICB9OwogICAgICAgICBz
ZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2Ux
ZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2
OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQ
VUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5
QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAg
ICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9k
ZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOwor
ICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZh
aWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBA
IHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdl
Q29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVy
ZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQg
Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlU
ZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4
dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVy
YXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5l
cmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9k
ZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJl
NWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5
IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9j
b2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9z
OwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAg
ICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAg
ICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNh
c2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21w
YXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5nICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4
NzNlZDQuLjlhNzYxMDZjYTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0LDE4ICs1NCwxOCBAQCBzdGF0
aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9i
amVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYg
bG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJl
LCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFts
b2NhbCBjb21wYXJlOndpcmVdID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChs
b2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ld
OwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0
aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7
IGkrKykgeworICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4
OmldOworICAgICAgICBjaGFyIHdpcmVUeXBlID0gW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXTsK
IAogICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7CiAgICAgICAgICAgICAvLyBg
Ym9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KQEAgLTk3MCw5ICs5
NzAsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2Jq
ZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9y
bWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyBy
ZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3Ry
aW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5f
dHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJl
KSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRo
b2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNl
cHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90
IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNl
bGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJl
Z2lzdHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJl
Z2lzdHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wg
KnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBO
U1N0cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxl
Y3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5o
ZXJpdGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJv
dG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1
ZSk7CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1
cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAg
QVNTRVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2Rpbmcp
Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhv
ZFNpZ25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNp
Z25hdHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFy
Z2V0TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFy
Z2V0TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9j
a0luZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2lu
dm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVP
YmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBT
dHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdp
dGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlw
ZVN0cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJs
b2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBp
KTsKKyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25h
dHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRm
OCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52
b2NhdGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1
cmUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAg
ICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBs
eSBibG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUod2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgp
LCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNM
b2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0
dXJlOiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVy
ZSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDoo
Y29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0
CiAgICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hl
Y2tlciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAg
ICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9j
ayh3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
eworICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1
cmVCbG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1v
dGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0
aW9uKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmpl
Y3RFbmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmpl
Y3Q6aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpp
bmRleCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAt
NDEsOCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNl
TG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jh
c2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0
cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8v
Z29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAg
cmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJf
czsKKyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3Rp
Yz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0
cmluZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAg
ICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAg
aWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0p
Ci0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJv
d3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczov
L3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1
cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBs
PXNhZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1
ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBA
IC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5zeXN0
ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJf
cXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlv
blRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0
b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dl
clN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50
SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50
Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01N
YWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIp
OworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRy
aWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJlMDJl
YzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAo
ZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUg
dG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJv
dW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21h
aW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNl
ciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9H
X0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3
MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1h
bmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwg
OTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJV
KzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAg
ICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5
WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwK
LSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywg
ImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0
YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAg
IEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3Ms
CisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAg
ICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJf
cywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBi
cmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBA
IFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3Vs
ZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQ
aG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1t
CmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29uc3Qg
U3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkK
ICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRGT1JN
KE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNuJ3Qg
Z3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNv
dXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVyIHJl
dHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RBcHBD
b2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsK
KyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRU
b2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0cmlu
ZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYy
YmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3
IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQg
PSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNl
dDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAg
IHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVu
dC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0
ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/
ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVk
aWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3
ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcg
QEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3Ry
aW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGll
bnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmlu
ZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBp
bmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1Zp
ZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0
aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMz
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURh
dGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0
T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Q
cml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBV
VEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlk
ZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyAr
MTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5n
ICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamki
KTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWls
eSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0
aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4
YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NU
aHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1Ro
cmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRh
c2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9y
U2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFt
ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29w
eUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9z
KSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1
Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJl
YWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJl
bmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25z
IGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9y
U2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZD
KQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5t
bQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlh
dGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cu
anMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAg
YWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZl
dGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpA
QCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVz
cG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9
IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAg
ICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJl
c3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAg
IGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQu
cmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRo
ZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7
CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVy
dChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9
KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2Ui
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAg
ICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRB
bGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVT
VChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3Jr
ZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0g
ICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7Cisg
ICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJf
czsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIi
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIv
ZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0
byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEy
IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlh
dGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhciog
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhl
dGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsK
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0
ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIs
IHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwog
CkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVu
dGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVx
dWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19I
QVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRW
YWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01
ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9z
Y3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNo
YXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFz
ZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGlu
dGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJp
dmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50
LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VS
Q0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7
CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0
KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVs
dFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1
bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1
ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlh
dGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJl
IGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMy
NGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVT
VChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJt
aXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVu
dCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciog
bWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5
dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAt
MzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwv
c2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmlj
ZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVz
IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0
aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFp
bkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFt
ZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8v
MTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAu
MC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0
dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NE
T0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RP
Q0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygK
IDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7
CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwg
eyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9
CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxs
cHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAi
L2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRi
MTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBA
IEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3Rp
bmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEki
X3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNv
cmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0g
ICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAK
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2Ny
aXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJv
bGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAog
fQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwv
c2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2Ny
aXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3Jp
cHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
L21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVz
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0
ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkx
Myw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxs
b3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhw
ZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAg
ICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciBy
ZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVs
bG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYs
OCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdv
cmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywg
eyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAi
Q29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5
dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0
ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNz
YWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwg
Q29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwg
eyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRt
bCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0s
CiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAt
ODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9m
UFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwi
LCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9
LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVy
IHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50
LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJz
YW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
Il9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwK
ICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVu
dGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2
ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9f
V0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsy
NDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFs
KQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3ND
cmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQog
ICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYy
MmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJl
dGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2Rl
PiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9
IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUo
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsx
ODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Vmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVu
dE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAy
NCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRl
bnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRN
b2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAy
NCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVm
YXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAg
IGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlv
bkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMp
CiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAot
ICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dT
aXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0
QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3Rv
cCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRv
clVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3No
IiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJl
ZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAg
ICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1l
IGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAg
ICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9i
aWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxd
OwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFn
ZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1v
YmlsZSJdKTsK
</data>
<flag name="commit-queue"
          id="484742"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456452</attachid>
            <date>2022-04-01 23:27:08 -0700</date>
            <delta_ts>2022-04-02 10:05:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>126429</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggMWFlNjIyOTg1OGZlLi4yOWUyNTU3NjRlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJUQ1NkcFR5cGUsIFN0cmluZz4+IGZldGNoRGVzY3JpcHRp
b24oR3N0RWxlbWVudCoKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2RwU3RyaW5nKGdzdF9zZHBf
bWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsKICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHdlYnJ0Y0JpbiwgIiVzLWRlc2NyaXB0aW9uIFNEUDogJXMiLCBuYW1lLCBzZHBTdHJpbmcuZ2V0
KCkpOwotICAgIHJldHVybiB7IHsgZnJvbVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0
aW9uLmdldCgpKSwgc2RwU3RyaW5nLmdldCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZyb21TZXNz
aW9uRGVzY3JpcHRpb25UeXBlKCpkZXNjcmlwdGlvbi5nZXQoKSksIFN0cmluZyB7IHNkcFN0cmlu
Zy5nZXQoKSB9IH0gfTsKIH0KIAogc3RhdGljIEdzdFdlYlJUQ1NpZ25hbGluZ1N0YXRlIGZldGNo
U2lnbmFsaW5nU3RhdGUoR3N0RWxlbWVudCogd2VicnRjQmluKQpAQCAtNDU2LDcgKzQ1Niw3IEBA
IHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6c3RvcmVSZW1vdGVNTGluZUluZm8oR3N0U0RQ
TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9tZWRpYUZvck1pZC5zZXQoeyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAi
YXVkaW8iKSA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBtX21lZGlhRm9yTWlkLnNldChTdHJpbmcg
eyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAiYXVkaW8iX3MpID8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7
CiAKICAgICAgICAgLy8gaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9n
c3QtcGx1Z2lucy1iYWQvLS9tZXJnZV9yZXF1ZXN0cy8xOTA3CiAgICAgICAgIGlmIChzZHBNZWRp
YUhhc0F0dHJpYnV0ZUtleShtZWRpYSwgImljZS1saXRlIikpIHsKQEAgLTkyNCw3ICs5MjQsNyBA
QCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZEljZUNhbmRpZGF0ZShHU3RyZWFtZXJJ
Y2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgUAogCiAgICAgaWYgKCFjYW5kaWRhdGUuY2FuZGlkYXRl
LnN0YXJ0c1dpdGgoImNhbmRpZGF0ZToiKSkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
YXNrID0gY3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZEljZUNhbmRp
ZGF0ZUNhbGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkV4cGVjdCBs
aW5lOiBjYW5kaWRhdGU6PGNhbmRpZGF0ZS1zdHI+IiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkV4cGVjdCBsaW5lOiBjYW5kaWRhdGU6PGNh
bmRpZGF0ZS1zdHI+Il9zIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZEljZUNh
bmRpZGF0ZShHU3RyZWFtZXJJY2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgUAogICAgIGF1dG8gcGFy
c2VkQ2FuZGlkYXRlID0gcGFyc2VJY2VDYW5kaWRhdGVTRFAoY2FuZGlkYXRlLmNhbmRpZGF0ZSk7
CiAgICAgaWYgKCFwYXJzZWRDYW5kaWRhdGUpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJY2VDYW5k
aWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFcnJvciBw
cm9jZXNzaW5nIElDRSBjYW5kaWRhdGUiIH0pOworICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIl9z
IH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwODUsOSArMTA4
NSw5IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uU3VjY2VlZGVkKEdVbmlxdWVQdHI8R3N0V2ViCiAKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBzZHAoZ3N0X3NkcF9tZXNzYWdlX2FzX3RleHQoZGVzY3JpcHRpb24tPnNkcCkpOwogICAgICAg
ICBpZiAobV9pc0luaXRpYXRvcikKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNyZWF0ZU9mZmVyU3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkgfSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0
ZUFuc3dlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3JlYXRlQW5zd2VyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQoKSB9KTsKICAg
ICB9KTsKIH0KIApAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBv
aW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoR1VuaXF1ZVB0cjxHRXJyb3I+JiYK
ICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gZXhjID0gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gZXJyb3ItPm1l
c3NhZ2UgOiAiVW5rbm93biBFcnJvciIgfTsKKyAgICAgICAgYXV0byBleGMgPSBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdl
KSA6ICJVbmtub3duIEVycm9yIl9zIH07CiAgICAgICAgIGlmIChtX2lzSW5pdGlhdG9yKQogICAg
ICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJGYWlsZWQoV1RGTW92
ZShleGMpKTsKICAgICAgICAgZWxzZQpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBHU3RyZWFt
ZXJNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFyZWNl
aXZlciB8fCAhbWlkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJl
YW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JN
aWQuZ2V0KG1pZC5nZXQoKSkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdS
ZW1vdGVUcmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kPihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRpYUZvck1pZC5nZXQoU3RyaW5nIHsgbWlk
LmdldCgpIH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI1NjRlOWE0NjQ4MC4uMzBmZWYwZTAy
Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKQEAgLTU5LDQwICs1OSw0MCBAQCBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVHU3RyZWFtZXJQZWVyQwog
c3RhdGljIFJUQ1J0cENhcGFiaWxpdGllcyBnc3RyZWFtZXJSdHBDYXBhdGlibGl0aWVzKGNvbnN0
IFN0cmluZyYga2luZCkKIHsKICAgICBSVENSdHBDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzOwot
ICAgIGNhcGFiaWxpdGllcy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZCh7ICJodHRwOi8vd3d3Lmll
dGYub3JnL2lkL2RyYWZ0LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25z
LTAxIiB9KTsKKyAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0
cDovL3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2Mt
ZXh0ZW5zaW9ucy0wMSJfcyB9KTsKICAgICBpZiAoa2luZCA9PSAiYXVkaW8iX3MpIHsKICAgICAg
ICAgY2FwYWJpbGl0aWVzLmNvZGVjcy5yZXNlcnZlQ2FwYWNpdHkoNCk7Ci0gICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL09QVVMi
LAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJhdWRpby9PUFVTIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDQ4MDAwLAogICAg
ICAgICAgICAgLmNoYW5uZWxzID0gMiwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0p
OwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJhdWRpby9HNzIyIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5n
KCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1p
bWVUeXBlID0gImF1ZGlvL0c3MjIiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gODAwMCwK
ICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
IiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vUENNQSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0
cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7
IC5taW1lVHlwZSA9ICJhdWRpby9QQ01BIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgw
MDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsg
Lm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1w
dHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNVSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUg
PSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICIiIH0pOworICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9
KTsKICAgICB9IGVsc2UgewotICAgICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iIH0pOworICAgICAgICBjYXBhYmls
aXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRp
b24iX3MgfSk7CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQp
OwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJ2aWRlby9WUDgiLAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRl
ID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2Fw
YWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5
IiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAg
IGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVv
L1ZQOSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5z
ZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29k
ZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDkiLAorICAgICAgICAg
ICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MCJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5Il9zLAog
ICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gInByb2ZpbGUtaWQ9MSIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiLAorICAgICAgICAgICAgLnNkcEZt
dHBMaW5lID0gInByb2ZpbGUtaWQ9MSJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vSDI2NCJfcywKICAgICAgICAg
ICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwYWNr
ZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZiIgfSk7CisgICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00
MmUwMWYiX3MgfSk7CiAgICAgfQogICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBHU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRl
T2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYgb3B0aW9ucykKIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCiB7CiAgICAg
aWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpIHsKLSAgICAgICAgY3JlYXRlQW5zd2VyRmFp
bGVkKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gcmVtb3RlIGRlc2NyaXB0aW9u
IHNldCIgfSk7CisgICAgICAgIGNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNjcmlwdGlvbiBzZXQiX3MgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4
IDI0NDlhZTg1ZjE2ZC4uZTc3OGY2ZDRmMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU3Ry
aW5nIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6bWlkKCkKIHsKICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IG1pZDsKICAgICBnX29iamVjdF9nZXQobV9ydGNUcmFuc2NlaXZlci5nZXQo
KSwgIm1pZCIsICZtaWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgIHJldHVybiBtaWQuZ2V0KCk7
CisgICAgcmV0dXJuIFN0cmluZyB7IG1pZC5nZXQoKSB9OwogfQogCiB2b2lkIEdTdHJlYW1lclJ0
cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcCgpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR1N0cmVh
bWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9wcGVkKCkgY29uc3QKIHN0YXRpYyBpbmxpbmUg
V0FSTl9VTlVTRURfUkVUVVJOIEV4Y2VwdGlvbk9yPEdzdENhcHMqPiB0b1J0cENvZGVjQ2FwYWJp
bGl0eShjb25zdCBSVENSdHBDb2RlY0NhcGFiaWxpdHkmIGNvZGVjKQogewogICAgIGlmICghY29k
ZWMubWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikgJiYgIWNvZGVjLm1pbWVUeXBlLnN0YXJ0
c1dpdGgoImF1ZGlvLyIpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlm
aWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IGJhZCBtaW1lVHlwZSIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0
cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUiX3MgfTsKIAogICAgIGF1dG8gY29tcG9uZW50
cyA9IGNvZGVjLm1pbWVUeXBlLnNwbGl0KCcvJyk7CiAgICAgYXV0byogY2FwcyA9IGdzdF9jYXBz
X25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtcnRwIiwgIm1lZGlhIiwgR19UWVBFX1NUUklORywg
Y29tcG9uZW50c1swXS5hc2NpaSgpLmRhdGEoKSwgImVuY29kaW5nLW5hbWUiLCBHX1RZUEVfU1RS
SU5HLCBjb21wb25lbnRzWzFdLmFzY2lpKCkuZGF0YSgpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0
YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAppbmRleCBhYWE0MTM3ZDJjNjAuLmQ3
YjYzOGE0MzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9y
LmNwcApAQCAtNDMsMTUgKzQzLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDU3RhdHMo
UlRDU3RhdHNSZXBvcnQ6OlN0YXRzJiBzdGF0cywgY29uc3QgR3N0U3RydWN0dXJlCiAgICAgZG91
YmxlIHRpbWVzdGFtcDsKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZG91YmxlKHN0cnVjdHVy
ZSwgInRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQogICAgICAgICBzdGF0cy50aW1lc3RhbXAgPSB0
aW1lc3RhbXA7Ci0gICAgc3RhdHMuaWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0
dXJlLCAiaWQiKTsKKyAgICBzdGF0cy5pZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0
cmluZyhzdHJ1Y3R1cmUsICJpZCIpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRD
UlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OlJ0cFN0cmVhbVN0YXRzJiBzdGF0cywgY29u
c3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBz
dHJ1Y3R1cmUpOwogCi0gICAgc3RhdHMudHJhbnNwb3J0SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9z
dHJpbmcoc3RydWN0dXJlLCAidHJhbnNwb3J0LWlkIik7Ci0gICAgc3RhdHMuY29kZWNJZCA9IGdz
dF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJjb2RlYy1pZCIpOworICAgIHN0YXRz
LnRyYW5zcG9ydElkID0gU3RyaW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInRyYW5zcG9ydC1pZCIpIH07CisgICAgc3RhdHMuY29kZWNJZCA9IFN0cmluZyB7IGdzdF9z
dHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJjb2RlYy1pZCIpIH07CiAKICAgICB1bnNp
Z25lZCB2YWx1ZTsKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfdWludChzdHJ1Y3R1cmUsICJz
c3JjIiwgJnZhbHVlKSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmls
bE91dGJvdW5kUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6Ok91dGJvdW5kUnRwU3RyZWFt
UwogICAgICAgICBzdGF0cy5uYWNrQ291bnQgPSBuYWNrQ291bnQ7CiAKICAgICBpZiAoY29uc3Qg
Y2hhciogcmVtb3RlSWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAicmVt
b3RlLWlkIikpCi0gICAgICAgIHN0YXRzLnJlbW90ZUlkID0gcmVtb3RlSWQ7CisgICAgICAgIHN0
YXRzLnJlbW90ZUlkID0gU3RyaW5nIHsgcmVtb3RlSWQgfTsKIAogICAgIC8vIEZJWE1FCiAgICAg
Ly8gc3RhdHMudGFyZ2V0Qml0cmF0ZSA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENV
dGlscy5jcHAKaW5kZXggNTRiOTc0ZDNhNzJkLi41NWUxYjVkYjFkZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJU
Q1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmUHRyPFJU
Q0Vycm9yPiB0b1JUQ0Vycm9yKEdFcnJvciogcnRjRXJyb3IpCiAgICAgYXV0byBkZXRhaWwgPSB0
b1JUQ0Vycm9yRGV0YWlsVHlwZShzdGF0aWNfY2FzdDxHc3RXZWJSVENFcnJvcj4ocnRjRXJyb3It
PmNvZGUpKTsKICAgICBpZiAoIWRldGFpbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFJUQ0Vycm9yOjpjcmVhdGUoKmRldGFpbCwgcnRjRXJyb3ItPm1lc3NhZ2UpOworICAg
IHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIFN0cmluZzo6ZnJvbVVURjgocnRjRXJy
b3ItPm1lc3NhZ2UpKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgdG9XZWJSVENCaXRSYXRl
UHJpb3JpdHkoUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0
YXRpYyBpbmxpbmUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIHRvUlRDRW5jb2RpbmdQYXJhbWV0
ZXJzKGNvbnN0IEdzdFN0cnVjdHVyCiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQ2NChy
dGNQYXJhbWV0ZXJzLCAibWF4LWZyYW1lcmF0ZSIsICZtYXhGcmFtZXJhdGUpKQogICAgICAgICBw
YXJhbWV0ZXJzLm1heEZyYW1lcmF0ZSA9IG1heEZyYW1lcmF0ZTsKIAotICAgIHBhcmFtZXRlcnMu
cmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHJ0Y1BhcmFtZXRlcnMsICJyaWQiKTsKKyAg
ICBwYXJhbWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJz
LCAicmlkIl9zKTsKIAogICAgIGRvdWJsZSBzY2FsZVJlc29sdXRpb25Eb3duQnk7CiAgICAgaWYg
KGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShydGNQYXJhbWV0ZXJzLCAic2NhbGUtcmVzb2x1dGlv
bi1kb3duLWJ5IiwgJnNjYWxlUmVzb2x1dGlvbkRvd25CeSkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCmluZGV4IDAzOTkzNGYyOTRlYS4uYmU3ZmM0Yjg2ZWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0
ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5n
IGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7CiAgICAgV0dQVUFkYXB0ZXJQcm9w
ZXJ0aWVzIHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKGFkYXB0ZXIs
ICZwcm9wZXJ0aWVzKTsKLSAgICByZXR1cm4gcHJvcGVydGllcy5uYW1lOworICAgIHJldHVybiBT
dHJpbmcgeyBwcm9wZXJ0aWVzLm5hbWUgfTsKIH0KIAogc3RhdGljIFJlZjxTdXBwb3J0ZWRGZWF0
dXJlcz4gc3VwcG9ydGVkRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVURldmljZUltcGwuY3BwCmluZGV4IDk2OWE3YTJjYTdiOS4uOGM5NDc1YWY1MDFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQ
VURldmljZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIERl
dmljZUltcGw6OnBvcEVycm9yU2NvcGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPEVycm9yPiYmKT4mJgogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfRm9yY2UzMjoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfVmFsaWRhdGlvbjoK
LSAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKG1lc3NhZ2Up
IH0gfTsKKyAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRlKFN0
cmluZyB7IG1lc3NhZ2UgfSkgfSB9OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V0dQVUVycm9yVHlwZV9PdXRPZk1lbW9yeToKICAgICAgICAgICAgIGVycm9yID0geyB7IE91dE9m
TWVtb3J5RXJyb3I6OmNyZWF0ZSgpIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKaW5kZXggOGViNGU5MjZiOWRhLi4wZDRkNDZhMGVkOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0zNjgsNyAr
MzY4LDcgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VN
YXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYpOwog
Ci0gICAgc3RhdGljIFN0cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRp
b24pOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFY
Tm90aWZpY2F0aW9uKTsKIAogICAgIEFYVHJlZURhdGEgdHJlZURhdGEoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5k
ZXggYTQ1NjY1MTk2YzVhLi5lYTI1MjczMmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2
IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikK
ICAgICBvYmotPnNldFdyYXBwZXIod3JhcHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVj
dENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0
aW9uKQorQVNDSUlMaXRlcmFsIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAg
QVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAo
bm90aWZpY2F0aW9uKSB7CiAgICAgY2FzZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAg
IGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3Vz
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhJbWFnZU92ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAg
ICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgot
ICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0g
IkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdp
b25DcmVhdGVkOgotICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0
dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNl
IEFYVmFsdWVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
WEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQVhDdXJyZW50U3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0
RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC05OCwxNSArOTgsMTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxh
dGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAg
ICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBtdXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vz
c2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5r
ZWQgd2l0aCBVSUtpdC4gU28gYSB3b3JrYXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVy
J3MKICAgICAvLyBwb3N0Tm90aWZpY2F0aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFj
Y2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQgZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3Rp
ZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0g
ICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9u
TmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChu
b3RpZmljYXRpb25OYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0
LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRv
IG5zTm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsK
KyAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgLy8gVG8gc2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5
b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRvciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNj
ZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNj
ZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2Jq
ZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNh
dGlvbk5hbWUuZ2V0KCldOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1
ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcx
LDEyICsxNjcxLDEyIEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmls
aXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJh
Y2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFnZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJl
c3VsdCkgewotICAgICAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6
Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6
QVhQYWdlU2Nyb2xsZWQpOwotICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNh
dGlvbk5hbWVdOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246
OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVOU1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90
aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Ny
b2xsUG9zID0gW3NlbGYgX2FjY2Vzc2liaWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5T
U3RyaW5nICp0ZXN0U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9s
bCBbcG9zaXRpb246ICUuMmYgJS4yZl0iLCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAg
ICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYg
YWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVz
ZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIg
YW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQgc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0Yjhj
YWU3NjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRy
b2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVu
dCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAi
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4i
X3MpOwogICAgICAgICBTQ1JJUFRDT05UUk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcs
ICJleGVjdXRlU2NyaXB0SW5Xb3JsZDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQo
RXhjZXB0aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
bi1hcHAgYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0VkaXRvcklPUy5tbQppbmRleCA5MDBlZDVmZjg0YjkuLjMxZWZjMjgzMDUzYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJh
bCBuZXdWYWx1ZSA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIFRleHRBbGlnbk1vZGUgdGV4
dEFsaWduID0gKnZhbHVlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpTdGFydDoKQEAgLTEwMCwyMSArMTAwLDIxIEBAIHZvaWQgRWRpdG9yOjpzZXRU
ZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rp
b24gZGlyCiAgICAgICAgICAgICAvLyBuby1vcAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICBuZXdWYWx1
ZSA9ICJsZWZ0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdDoKLSAg
ICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gInJp
Z2h0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICBjYXNlIFRleHRBbGlnbk1v
ZGU6OldlYktpdExlZnQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgbmV3
VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6UmlnaHQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKLSAgICAgICAg
bmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgogICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0Q2VudGVyOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRWRpdG9yOjpz
ZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24gZGlyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghbmV3VmFsdWUpCisg
ICAgaWYgKG5ld1ZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBFbGVtZW50
KiBmb2N1c2VkRWxlbWVudCA9IG1fZG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBh
dXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsK
ICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3Igdmlh
IHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZlIG9u
ZS4KLSAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CisgICAgZGVmYXVsdFN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwg
MC4wKSJfcyk7CiAgICAgCiAgICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCB0aGUgdXNlciBj
YW4gbW9kaWZ5LCBsaWtlIGZvbnQtd2VpZ2h0LiAKICAgICAvLyBBbHNvIHJlbW92ZSBmb250LWZh
bWlseSwgcGVyIEhJIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCA0YjZkMGU1YjQ0NDcuLjAxODI4ZWY3MjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RydWN0IExvZ0FyZ3Vt
ZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhp
bXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9Q
QVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsKKyAgICAgICAgcmV0dXJuICJbdXJs
XSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCmluZGV4IDUxMjNiYjJkMGMwNC4uZDQ4NDFkZjNkZmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMjUyLDE0ICsyNTIsMTQgQEAgcHJp
dmF0ZToKICAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIEZsb2F0UmVjdCByZWN0Rm9yU2V0dGluZ0F0SW5kZXgo
dW5zaWduZWQpOwotICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYpOworICAg
IGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAgICAgICAgIAogICAgIHN0ZDo6
b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOwogCiAgICAgc3RydWN0
IFNldHRpbmcgewotICAgICAgICBTdHJpbmcga2V5OwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAg
ICAgICAgYm9vbCB2YWx1ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGtleSB7IEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpIH07CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1lIHsgQVNDSUlMaXRlcmFsOjpu
dWxsKCkgfTsKKyAgICAgICAgYm9vbCB2YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsgICAgCiAKICAg
ICBGaXhlZFZlY3RvcjxTZXR0aW5nPiBtX3NldHRpbmdzIHsKQEAgLTM3OSw3ICszNzksNyBAQCBG
bG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCiAgICAgfTsKIH0KIAotYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXk6OnZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmIG5hbWUpCitib29sIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1lKQogewogICAg
IGZvciAoY29uc3QgYXV0byYgc2V0dGluZyA6IG1fc2V0dGluZ3MpIHsKICAgICAgICAgaWYgKG5h
bWUgPT0gc2V0dGluZy5rZXkpCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LAogICAgIAogICAgIGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBpZiAo
dmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIikpIHsKKyAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJy
ZWdpb25zIl9zKSkgewogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAg
ICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCkBAIC00MzgsNyAr
NDM4LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgYXV0byByZWdpb24gPSBhY3Rp
dmVSZWdpb24oKTsKIAotICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3Ry
YWluIikpIHsKKyAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJf
cykpIHsKICAgICAgICAgYXV0byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1cykgewog
ICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwogICAgICAgICAg
ICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5h
dGVzOwpAQCAtNDUxLDEwICs0NTEsMTAgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAg
ICAgIGF1dG8gbWFrZUdyYWRpZW50ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3VuZCwgR3Jh
ZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGdyYWRp
ZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29sb3JJbnRl
cnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkIH0pOwotICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmco
Indhc2giKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAgaWYgKHJl
Z2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xp
cCJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBD
b2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7CiAgICAgICAgICAgICAg
ICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9y
KENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUp
LmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAg
ICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8fCAhdmFsdWVG
b3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjIp
IH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDApIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsK
QEAgLTQ2NiwxOCArNDY2LDE4IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3
UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfTsK
ICAgICAgICAgCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0gNTA7Ci0g
ICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOworICAgICAg
ICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpOwogICAgICAgICBW
ZWN0b3I8UGF0aD4gY2xpcFBhdGhzOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQogICAgICAg
ICAgICAgY2xpcFBhdGhzID0gcGF0aHNGb3JSZWdpb24oKnJlZ2lvbik7CiAKLSAgICAgICAgYm9v
bCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAo
IXZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKTsKKyAg
ICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJl
Z2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJj
bGlwIl9zKSk7CiAKICAgICAgICAgaWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQpIHsKICAg
ICAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1
cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6
ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6
IGRlZmF1bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BHcmFkaWVu
dCA9IEdyYWRpZW50OjpjcmVhdGUoZ3JhZGllbnREYXRhKHJhZGl1cyAqIDEuNSksIHsgQ29sb3JJ
bnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5w
cmVtdWx0aXBsaWVkIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5h
ZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4y
KSB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKQEAgLTQ5Niwx
MiArNDk2LDEyIEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdl
T3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7Ci0gICAgICAgIGlmICghc2hvdWxkVXNl
QmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciIpKQor
ICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5n
KCJjb250ZXh0dWFsQ29sb3IiX3MpKQogICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0g
cmVnaW9uLT5oYXNMaWdodEJhY2tncm91bmQ7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApIHsK
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAg
ICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUi
KSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVm
YXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRp
bmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgp
Lm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICBjb250ZXh0
LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVu
dERhdGEocmFkaXVzKSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7
CiAgICAgICAgICAgICB9CkBAIC01MjIsOSArNTIyLDkgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3Jt
TW8KIAogICAgIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAotICAgIGlmICgh
dmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiKSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vy
c29yIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0gICAgZWxzZSBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0
aW5nKCJob3ZlciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNvcigpOwog
CiAgICAgYXV0byBldmVudEluQ29udGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZpZXctPndp
bmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CkBAIC01NDQsNyArNTQ0LDcgQEAgYm9v
bCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJs
YXksIGNvbnN0IFBsYXRmb3JtTW8KICAgICBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGlu
YXRlcyA9IGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzOwogICAgIG92ZXJsYXkuc2V0TmVlZHNE
aXNwbGF5KCk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNl
TW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQor
ICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZl
bnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQppbmRleCA0Nzc0Y2UwOGE1YjguLmUwMTZmOTIxZDVl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CkBAIC02MywxNSArNjMsMTUgQEAgYm9vbCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1l
ZGlhU291cmNlRW5hYmxlZCgpCiAKIHZvaWQgU2V0dGluZ3NCYXNlOjppbml0aWFsaXplRGVmYXVs
dEZvbnRGYW1pbGllcygpCiB7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBU
QyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlBpbmdGYW5nIFNDIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElS
QUdBTkEpOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIs
IFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiLCBV
U0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQ
VF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQVF9DT01N
T04pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRf
VFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFND
Il9zLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IkhpcmFnaW5vIE1pbmNobyBQcm9OIl9zLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsK
KyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJ
UFRfSEFOR1VMKTsKKworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJ
UFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRf
Q09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1P
Tik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NP
TU1PTik7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAppbmRleCBlYmNkYjFkZDA4MTIuLjVhOTQ4OTAwOTQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVXNlckFnZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09S
RV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNp
b24gPSBlbXB0eVN0cmluZygpLCBVc2VyQWdlbnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVs
dCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNP
UkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAj
ZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4
MC4uZTYyY2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAt
NTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNv
bmRzIG1heEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQg
eSwgR0NHTHNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRUNvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQog
ewogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZv
cm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9u
IGNvbnN0cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lv
bnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hp
Y2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2Fw
YWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lk
IHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwog
CiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXpl
aSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBl
LCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1u
cywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1
ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggYjkzYmMzNGNj
NGQ0Li4xZjUxNjkxZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTM0
MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0cmluZ0Zyb21GYW1p
bHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBmYW1pbHk7CiAKICAgICBp
ZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3RhbmRh
cmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzZXJpZiI7CisgICAgICAgIHJldHVy
biAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWls
eU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2Fucy1zZXJp
ZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZh
bWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6TW9ub3NwYWNlRmFtaWx5KSkKLSAg
ICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSJfczsK
ICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6
Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAgICAgIHJldHVy
biAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFt
aWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiZmFudGFzeSI7
CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBp
ZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3lzdGVt
VWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpCiAgICAgICAgIHJl
dHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gIiI7Cisg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBGQ19WRVJTSU9OIDwgMjEzOTUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDFkNmFl
MmUxMmU3ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVD
S19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVj
X3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRp
b24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5n
IHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
WyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIyNTQxLi4xMjA3
YzM1YTExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC02MTMsNyArNjEzLDcg
QEAgc3RhdGljIGdib29sZWFuIHBhcnNlR3N0U3RydWN0dXJlVmFsdWUoR1F1YXJrIGZpZWxkSWQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIHsKICAgICBpZiAoYXV0byBqc29uVmFsdWUgPSBn
c3RTdHJ1Y3R1cmVWYWx1ZVRvSlNPTih2YWx1ZSkpIHsKICAgICAgICAgYXV0byogb2JqZWN0ID0g
cmVpbnRlcnByZXRfY2FzdDxKU09OOjpPYmplY3QqPih1c2VyRGF0YSk7Ci0gICAgICAgIG9iamVj
dC0+c2V0VmFsdWUoZ19xdWFya190b19zdHJpbmcoZmllbGRJZCksIGpzb25WYWx1ZS0+cmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoZmllbGRJZCkgfSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXIuY3BwCmluZGV4IDJkOWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENoZWNrSGFyZHdhcmVDbGFzc2lm
aWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsKICAgICAgICAgZm9yIChHTGlz
dCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0b3JpZXMgPSBnX2xpc3Rf
bmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBmYWN0b3J5ID0gcmVpbnRlcnBy
ZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0YSk7Ci0gICAgICAgICAg
ICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0
b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAgICAgICAgICBTdHJpbmcgbWV0
YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxF
TUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1dG8gY29tcG9uZW50cyA9IG1l
dGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5jb250YWlucygi
SGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdIYXJkd2FyZSA9IHRydWU7CkBA
IC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxp
emVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAKICAgICBh
dXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlw
ZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIsIEVs
ZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwotICAgIGlmICgo
bWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRp
b246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29kZXJBdmFpbGFibGUpIHsKKyAg
ICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25m
aWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29kZXJBdmFpbGFi
bGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiks
IGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4
LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBAIC00MDksNyAr
NDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVy
cyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAKLSAgICBhdWRpb01w
ZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRl
Y29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFp
bmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCJfcyk7
CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAgICBtX2RlY29kZXJNaW1lVHlw
ZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAgICAgICAgbV9kZWNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2MwZDhmNzNjNDJiLi43
ZWJiYTQzMjJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcgog
CiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2lu
aygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkg
PyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1Bs
YXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2lu
ayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGF1
ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyLm91
dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVycm9yICVkOiAl
cyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVzc2FnZTsKKyAg
ICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsKIAogICAgICAg
ICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICBpZiAo
Z19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9F
UlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQog
ICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImh0dHAt
aGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQ
cm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IHVyaSB9Owor
ICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgICAgICAgICAg
ICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAogICAgICAg
ICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnko
R3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7CiAgICAg
ICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0aXRsZSk7
CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KHRpdGxl
KTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7
CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjE2Niw3
ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3VyZURv
d25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0KGVsZW1l
bnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVsbHB0cik7
CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVkIGZpbGUgZG93
bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRlbXBsYXRlLmdl
dCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBuZXdEb3dubG9h
ZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0cmluZyBuZXdE
b3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07CiAgICAgcHVy
Z2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNlKCJYWFhYWFgi
LCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlhUGxheWVy
UAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdfb2JqZWN0X2dl
dChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwgJmRvd25s
b2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5MSUtFTFko
IUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZEZpbGUuZ2V0
KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBtZWRpYSB0ZW1w
b3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgLy8gdGhvdWdo
LiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAg
ICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAgICAgICAgVVJM
IGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7
Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOworICAgICAg
ICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9uIH0pOwogCiAg
ICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAgICAgIGdfb2Jq
ZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJpblVybFN0ci5v
dXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxheWJpblVybFN0
ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBsYXliaW5VcmxT
dHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1VybCkgewogICAg
ICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBhbHJlYWR5IGhh
bmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVybCkKIAog
ICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAgIGlmIChlbGVt
ZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIjsKKyAg
ICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0IGNoYXIqIHR5
cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygibWVkaWFzdHJl
YW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBAIEluaXRE
YXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Qcm90ZWN0
aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEgPSBudWxscHRy
OwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0KCksICZl
dmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIGluaXREYXRh
LmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAgaW5pdERhdGEu
YXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwogICAgICAgICAg
ICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShldmVudC5n
ZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChHc3RFdmVudCog
ZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0cjsKICAg
ICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRfcGFyc2VfcHJv
dGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBudWxscHRyKTsK
LSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1VVUlELCBp
bml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsgU3RyaW5nIHsg
ZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3Li4zMmVkM2Fl
OGIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgK
QEAgLTQ3MSw3ICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250
ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnko
R3N0VG9jRW50cnkqKTsKIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0
aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciJfczsgfQogICAgIGJvb2wg
ZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2F2
ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2
YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggZGNhMmMyMWZkNjMwLi4wM2VkYWM4YzhlOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTE5NSw3
ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29k
ZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAgIFN0cmluZyBsYW5ndWFn
ZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwgbGFuZ3VhZ2Up
KSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5
XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1YWdlID0gU3RyaW5nIHsg
Z3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEo
KSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sgJWQncyBsYW5ndWFnZSBj
b2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBp
ZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVlID0gbGFuZ3VhZ2U7CkBA
IC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWco
R3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMKICAgICBHVW5pcXVlT3V0
UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFn
cywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBHU1RfREVCVUcoIlRy
YWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7Ci0g
ICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZhbHVlID0gU3RyaW5nVHlw
ZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwCmluZGV4IDg5NDc1NDA1YzgwOS4uYjY5ZGExYzljMjUyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRh
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBA
IHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVudCog
ZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBwcm9iZVR5cGUs
IFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+
IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRCdWZmZXIsIG1ldGFd
ID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5GT19CVUZGRVIoaW5m
bykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9IG1vZGlmaWVkQnVm
ZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEp
IH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NLX1RJ
TUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9LCBnc3Rf
ZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM2LDcgKzEzNiw3IEBA
IHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVudCog
ZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwogCiAgICAgICAg
IGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpOwot
ICAgICAgICBhdXRvIHZhbHVlID0gbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVt
ZW50TmFtZSk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGlt
ZXMuZ2V0KFN0cmluZyB7IGVsZW1lbnROYW1lIH0pOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9j
ZXNzaW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwg
Z3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JF
X09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDMzNjg1
ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2Rl
Y191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0
aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmlu
ZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0
KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5
NjNkMzI5MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYs
MTkgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBH
TF9FWFRfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
L0dMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQi
X3MpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAg
IGlmIChuYW1lID09ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1
cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJh
eXMiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRf
YXJyYXlzIikpCi0gICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkK
KyAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9k
cmF3X2luc3RhbmNlZCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfZHJhd19pbnN0YW5jZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhU
X3NSR0IiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJf
cykpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YWdfZGVwdGgiX3MpOwogCiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VT
X3JnYjhfcmdiYTguCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEy
NywxNCArMTI3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9m
bG9hdCBvciBHTF9PRVNfdGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQK
ICAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIgYW5kIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4K
ICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVy
ZV9mbG9hdCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX3RleHR1cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9h
cnJheV9vYmplY3QKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qi
KSB7CiAjaWYgKFBMQVRGT1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlf
b2JqZWN0Il9zKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29i
amVjdCJfcyk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiX3MpOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIl9zKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewog
I2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAg
ICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lv
bnNHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXSU4pCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBv
cnRlZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVj
dCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBj
b25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2Jq
ZWN0OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmlu
ZGV4IDQ4OTY5OWM0ZWUzYy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xP
YmplY3QKICAgICBlbHNlIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZS
QUdNRU5UX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5U
OwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAog
ICAgIEhhc2hNYXA8UGxhdGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNo
YWRlclNvdXJjZUVudHJ5Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNv
dXJjZU1hcC5maW5kKHNoYWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9z
aGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291
cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0
cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJu
IHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cAppbmRleCA1NGIxNzAwMTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAg
ICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VE
QU5HTEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUiKSk7CiAgICAgICAgICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVl
OwotICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAg
ICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAg
ICAgICAgIG1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2
aXNvcjsKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJh
d0FycmF5c0luc3RhbmNlZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRSA9IDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcAppbmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBv
c2l0ZWRSZXN1bHRzKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3Qg
Y2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
IAogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lv
bihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRl
bnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmlu
ZyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24gfTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvblN0cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZv
cmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0g
dHJ1ZTsKICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmlu
ZGV4IDg0OWE3ZjVhMzkxMi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0
aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBv
cgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMg
b2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lk
IHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6
ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1
YjJmMGYxNWQ5Li43YjU0YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsK
LSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7
CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJf
cyk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAg
ICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0
LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiX3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3Jt
YXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
aW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2
MmJmNmVlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAg
LTEwNCw3ICsxMDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJP
cyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2lj
IHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1
cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0
dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAo
YXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJl
Z3VsYXIgRkJPLgogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSAr
MjQwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5j
aWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1
dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlh
cyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3Rl
eHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAg
ICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewot
ICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcg
YW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xhc3Np
YygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0gVUlB
cHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9zTmFt
ZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsKICAg
ICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkKLSAg
ICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICByZXR1
cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3RyaW5n
VmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpA
QCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxh
eWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUp
Ci0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQppbmRleCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVx
dWVzdENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91
cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06
OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAg
ICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmlj
ZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRv
IGZpbGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0
aC5pc051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6
Z2V0RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYm
IGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9w
ZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JL
ZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhl
NzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29y
ZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
YTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGlu
Z0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAg
TW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3Ry
aW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVs
bHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVz
dWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2
NzYzY2EzLi44MzU5NjliZmEzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAt
NTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046
OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9i
amVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5n
ZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRl
Z2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAg
ICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3Mp
OwogICAgIGlmICghZXJyb3JNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24u
Y3BwCmluZGV4IDA1MjQ2YmFhNjNjNS4uZDcxZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlh
bG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAg
ICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9i
amVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZh
U2NyaXB0RGlhbG9nKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVz
dWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1
cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgYXV0byBicm93c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2Jq
ZWN0KCJjb250ZXh0Iik7CisgICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAg
aWYgKCFicm93c2luZ0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVy
cm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAg
ICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAg
ICAgICAgICAgICBpZiAoIXVybCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJy
b3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lk
IFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRs
ZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHgg
JiYgeSkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVl
KCkpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkp
OworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7
CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsK
ICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdp
bmRvd09yaWdpbikpOwogICAgICAgICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsK
ICAgICAgICAgICAgIGF1dG8gd2luZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0g
ICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7
Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1
ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRo
LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3Ms
IGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6
ZSJfcywgV1RGTW92ZSh3aW5kb3dTaXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5z
ZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJl
c3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lk
IFNlc3Npb246OmVsZW1lbnRJc0ZpbGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1
bmN0aW9uPHZvaWQgKENvbW1hbgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNy
ZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJ
RCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9h
ZFNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0
ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1l
bnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0g
J2ZpbGUnKSIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAn
bXVsdGlwbGUnOiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAg
IiAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAg
ICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywg
bV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBA
IHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJh
eTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxl
bWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0
YWJsZVNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlw
dCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVt
ZW50LmRpc2FibGVkIHx8IGVsZW1lbnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1
cm4gZmFsc2U7IgpAQCAtMTg3MCw3ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNF
ZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIK
ICAgICAgICAgIiAgICAgICAgcmV0dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAg
ICIgICAgcmV0dXJuIGZhbHNlOyIKLSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAg
IGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2lu
Z0NvbnRleHQudmFsdWUoKSk7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVs
ZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBGdW5jdAogICAgICAgICAgICAgYXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElz
RmlsZVVwbG9hZFJlc3VsdChyZXN1bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxl
VXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZh
bHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8g
YW4gYXRvbS4KLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtd
ID0KKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQog
ICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAg
ICAgICAgICAgICAgIiAgICBsZXQgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1l
bnQ7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRv
Yy5hY3RpdmVFbGVtZW50OyIKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQs
IEZ1bmN0CiAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9u
UmFuZ2UoZWxlbWVudC52YWx1ZS5sZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAg
ICAgICAgICAgICAgICAgICIgICAgaWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9
PSBlbGVtZW50KSIKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdF
bGVtZW50Tm90SW50ZXJhY3RhYmxlJywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJs
ZS4nfTsiCi0gICAgICAgICAgICAgICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0i
X3M7CiAKICAgICAgICAgICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVh
dGUoKTsKICAgICAgICAgICAgICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVu
dChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0
YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lv
bjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUu
bmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFs
dWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52
YWx1ZV9vcigiLyIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29v
a2llLnBhdGgudmFsdWVfb3IoIi8iX3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygi
ZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBj
b29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9v
cihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNv
b2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9v
bGVhbigic2Vzc2lvbiJfcywgIWNvb2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0
RG91YmxlKCJleHBpcmVzIl9zLCBjb29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29r
aWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9v
cigiTm9uZSIpKTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNv
b2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmpl
Y3Q7CiB9CiAKQEAgLTI2OTEsMzggKzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0
ZSYgU2Vzc2lvbjo6aW5wdXRTb3VyY2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVy
biBtX2lucHV0U3RhdGVUYWJsZS5lbnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3Rh
dGUoKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21h
dGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFT
Q0lJTGl0ZXJhbCBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRT
b3VyY2UpCiB7CiAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0
dXJuICJOdWxsIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAg
ICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6
Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAg
IHJldHVybiAiTW91c2UiOworICAgICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAg
Y2FzZSBQb2ludGVyVHlwZTo6VG91Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBl
bjoKLSAgICAgICAgICAgIHJldHVybiAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9z
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6
OktleToKLSAgICAgICAgcmV0dXJuICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9h
cmQiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVy
biAiV2hlZWwiOworICAgICAgICByZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlv
bk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJh
bCBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoK
LSAgICAgICAgcmV0dXJuICJWaWV3cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7
CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4g
IlBvaW50ZXIiOworICAgICAgICByZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVy
T3JpZ2luOjpUeXBlOjpFbGVtZW50OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAg
ICByZXR1cm4gIkVsZW1lbnQiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2Uu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3
ZWYwYTIuLjU5MTg0NzBiODVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2
ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CkBAIC02MSw3ICs2MSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogI2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcg
dGFyZ2V0U3RyaW5nOwogICAgIGlmIChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYo
IldFQkRSSVZFUl9UQVJHRVRfQUREUiIpKQotICAgICAgICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRF
bnZWYXI7CisgICAgICAgIHRhcmdldFN0cmluZyA9IFN0cmluZyB7IHRhcmdldEVudlZhciB9Owog
I2VuZGlmCiAgICAgZm9yIChpbnQgaSA9IDEgOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGFyZyA9IGFyZ3ZbaV07CkBAIC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJT
ZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50
VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJ
TFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOwor
ICAgICAgICAgICAgcG9ydFN0cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTk3LDcgKzk3LDcgQEAgaW50IFdlYkRyaXZlclNl
cnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRV
c2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gYXJndltpXTsK
KyAgICAgICAgICAgIHRhcmdldFN0cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2Jq
ZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1
dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAg
IGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7
CiAgICAgICAgICAgICBhdXRvIHNvY2tzUHJveHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAg
ICAgICAgIGlmICghc29ja3NQcm94eSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNl
cmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAo
IXByb3h5LnNvY2tzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2Jq
ZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iKTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJz
aW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAg
ICAgICAgIGlmICghc29ja3NWZXJzaW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIApAQCAtODcyLDMwICs4NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNl
OjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwg
c3QKICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93
UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAg
ICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFs
dWVfb3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAg
ICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImRpc21pc3MiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3I6OkFjY2VwdDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3IiX3MsICJhY2NlcHQiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNt
aXNzIGFuZCBub3RpZnkiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0
IGFuZCBub3RpZnkiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImln
bm9yZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5w
YWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAg
ICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUi
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxv
YWRTdHJhdGVneSJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwi
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxv
YWRTdHJhdGVneSJfcywgIm5vcm1hbCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIi
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxv
YWRTdHJhdGVneSJfcywgImVhZ2VyIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcCBiL1NvdXJj
ZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKaW5kZXggMGY2Yzg3ODIw
MDk1Li4yYjY3MTM0OWQzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0Nh
cGFiaWxpdGllc1NvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJp
bGl0aWVzU29ja2V0LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29j
a2V0OjpwYXJzZUNhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmls
aXRpCiB7CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3Ry
aW5nIHRhcmdldEFkZHI7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNv
Y2tldDp0YXJnZXRBZGRyIiwgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFz
U3RyaW5nKHRhcmdldEFkZHIpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVl
KCJzb2NrZXQ6dGFyZ2V0QWRkciJfcywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFs
dWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRk
ciA9IHRhcmdldEFkZHI7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1
ZTsKICAgICBpbnQgdGFyZ2V0UG9ydDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRW
YWx1ZSgic29ja2V0OnRhcmdldFBvcnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRW
YWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVz
LmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJn
ZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVz
LnRhcmdldFBvcnQgPSB0YXJnZXRQb3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJp
dmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCmluZGV4IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQs
NyArOTQsNyBAQCB2b2lkIEhUVFBSZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNw
ZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhh
bmRsZXI6OlJlc3BvbnNlIHJlc3BvbnNlIHsKICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAg
ICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50
PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCIsCisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8
L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0Il9zLAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVz
cG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdl
Q29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVy
VG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQg
Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRl
eHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVm
ZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJh
dGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFu
ZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJl
JiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShz
b3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEg
dmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFW
YWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1Mjgu
LjM1ZmFiZWU1YTRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0
YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAg
ICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAg
IGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJl
dHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0
dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RM
U1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
UmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1Jl
bW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJik7Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxl
KE5TU3RyaW5nICosIE5TU3RyaW5nICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQu
LjlhNzYxMDZjYTBmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0LDE4ICs1NCwxOCBAQCBzdGF0aWMgUmVm
UHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVu
Y29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwp
Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0
cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBj
b21wYXJlOndpcmVdID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5s
ZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2ln
bmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAg
ICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxv
Y2FsLmxlbmd0aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
eworICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldOwor
ICAgICAgICBjaGFyIHdpcmVUeXBlID0gW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXTsKIAogICAg
ICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7CiAgICAgICAgICAgICAvLyBgYm9vbGAg
YW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KQEAgLTk3MCw5ICs5NzAsOCBA
QCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVj
b2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAi
SW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVN
ZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxv
Y2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0
cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAg
ICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWdu
YXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24g
Zm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBh
dGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9y
KSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5
JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3Rv
Y29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0cmlu
ZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rvciwg
TlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJpdGVk
IG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9jb2xf
Z2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7CkBA
IC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJv
dG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNTRVJU
KG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0gICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNpZ25h
dHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0TWV0
aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0TWV0
aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0luZGV4
XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9rZU1l
dGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJ
bnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcg
d2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpD
VHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmlu
ZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2ln
bmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKKyAg
ICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBz
aWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRh
dGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2lnbmF0
dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlv
bi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUuaXNO
dWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAgICAg
ICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9j
ayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUod2ly
ZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBleHBl
Y3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2coQCJf
aW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAl
QCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3Qg
V2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAg
ICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tlciA9
IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAgICBp
ZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3aXJl
QmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVn
aXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgeworICAg
ICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9j
ayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVPYmpl
Y3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7
CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNv
ZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52
b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRleCA2
YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEsOCAr
NDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9va3Vw
UmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VVUkxT
dHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpT
U0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5x
cS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJu
ICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAg
ICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9
c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmluZyBy
ZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0
dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFty
ZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAg
ICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3RwbD1z
YWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3Npbmcv
cmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51
cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0
dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFy
aSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2Nzhm
ZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0yOTcs
NyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5zeXN0ZW1QcmV2
aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2ts
b29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdn
ZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFw
cGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3Rl
bVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5T
U3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0
b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2Vy
dmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAg
ICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlv
bmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJlMDJlYzhlM2U0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
Mzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBm
cmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUt
PnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhl
Y3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRv
bWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7
CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3Jp
cHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24t
YXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9S
KExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmlu
ZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkg
QEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoi
LCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEi
X3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpS
ZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAg
QCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywK
KyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAg
ICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3Ms
CisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoK
LSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSsw
MDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAg
ICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAi
dSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAg
ICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmlu
ZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lk
VXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBP
UyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUo
eyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBs
aWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4
IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5n
JiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBp
ZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykg
JiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQs
IGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBi
dWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMg
dGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2ln
bmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAg
ICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVz
dFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikK
ICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQw
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0g
KEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5r
LmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3Jl
YXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVy
biBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5k
ZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2
YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVh
dG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1
bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVy
eVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3
Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5s
aW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmll
dywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6Omdl
dEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZl
Y3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBp
bnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
QEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
OihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJp
ZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRl
KF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3Ry
aW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29k
aW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3
IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5
bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3RE
cmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9u
dEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBw
bGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNj
cmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJh
c2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNp
emUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0
cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JT
ZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0
cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5
Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUs
IGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAK
ICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNr
LCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBp
biBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ug
c3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNp
emUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAg
IEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpp
bmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAt
MjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50
aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQo
J0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQg
fTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2
LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxw
dHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29u
c3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNl
VHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyBy
ZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dC
eXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
IiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0s
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMi
X3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0s
IGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgn
ZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAg
ICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29u
c3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29u
c3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkg
PT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJW
aWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0
YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQog
ICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwog
CiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9
LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5T
V0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJ
ZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00
NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQg
aXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIo
KSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIg
PSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNl
cnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0Nf
U1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSAr
NTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmlu
dGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFs
cycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJl
cG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02
NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVz
RGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVl
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1
ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0s
CiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJl
cXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBp
bml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0
NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
ZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZp
Y2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9u
QWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJl
Y2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5
dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0g
UiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEy
ICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0
PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVu
dGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQor
ICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1l
VGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQg
PSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAu
MC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkw
OTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8v
MTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwot
c3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJf
czsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1s
Pjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRF
U1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWlu
RnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAg
fSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBu
dWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7
Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1l
Il9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTVi
ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQK
IHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsK
ICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVy
cmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29t
LmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwog
fQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNs
ZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2Vi
Q29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5
VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRT
dGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVu
ZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0
PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlv
biBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0Pgot
KVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3Jp
cHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2
ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJl
Y2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4u
aHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5
MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZl
ZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJv
bSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2
LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAg
eyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWlu
VW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0g
fSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFS
ZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0g
IlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0K
aW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVu
dE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwx
MSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRo
ZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAK
ICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJm
b28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZl
cjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUi
LCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9y
aWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7
IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9
LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcg
QEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkK
IHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8i
LCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0p
OwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIy
Nzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9Q
cmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0
cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dp
dGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZh
dWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6
ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBA
QCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0Ns
YXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1v
ZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2Rl
TmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0g
eyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENv
bnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8g
bmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250
ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAg
ICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVy
byk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9z
IH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
IiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRo
UG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJU
ZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVk
Q29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQog
ICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1
c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1
RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVE
ZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAg
ICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJd
KTsK
</data>
<flag name="commit-queue"
          id="484744"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456461</attachid>
            <date>2022-04-02 10:05:38 -0700</date>
            <delta_ts>2022-04-02 10:52:12 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>139103</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjIzYzk5N2IzMzI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBpbnQgcmVh
ZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5n
dGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgR1JlZlB0cjxHRmlsZT4gZmlsZSA9
IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl9wYXRoKGZzRmlsZS5kYXRhKCkpKTsKICAgICBHUmVm
UHRyPEdGaWxlSW5mbz4gZmlsZUluZm8gPSBhZG9wdEdSZWYoZ19maWxlX3F1ZXJ5X2ZpbGVzeXN0
ZW1faW5mbyhmaWxlLmdldCgpLCBHX0ZJTEVfQVRUUklCVVRFX1VOSVhfREVWSUNFLCBudWxscHRy
LCBudWxscHRyKSk7CiAgICAgaWYgKCFmaWxlSW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCmluZGV4IDdmOWU4ZmMzZDBmYy4uN2Y0MjIxYjYyMDMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsOSBAQCBl
bmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGludDMy
X3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFs
PGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0
byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CiAgICAgc3RydWN0IHN0
YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEoKSwgJmZpbGVTdGF0KSA9PSAt
MSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IDJlMTMxMjE3MGI4Zi4uZjUxNDgyYTk2ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTgyLDcgKzgyLDExIEBAIHB1YmxpYzoKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyB3
aXRoIGxhdGluMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIGxhdGluMS4KKyAgICAvLyBE
ZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4K
KyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0
aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5Li45OGJmNTY2Y2UyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwCkBAIC0zOSw3ICszOSw3IEBAIFN0cmluZyBsb2dMZXZl
bFN0cmluZygpCiAgICAgV1RGTG9nQWx3YXlzKCJXRUJLSVRfREVCVUcgaXMgbm90IGVtcHR5LCBi
dXQgdGhpcyBpcyBhIHJlbGVhc2UgYnVpbGQuIE5vdGljZSB0aGF0IG1hbnkgbG9nIG1lc3NhZ2Vz
IHdpbGwgb25seSBhcHBlYXIgaW4gYSBkZWJ1ZyBidWlsZC4iKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuIGxvZ0VudjsKKyAgICByZXR1cm4gU3RyaW5nIHsgbG9nRW52IH07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4u
Y3BwIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCmluZGV4IDI4ZDFjZTVm
NmVlMS4uOTc5MTVhMjM4MWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCkBA
IC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9yeShDU0lETF9BUFBEQVRBKTsK
IH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmlu
ZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3Qg
U3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBvcGVuRmlsZShmc0ZpbGUuZGF0
YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNIYW5kbGVWYWxpZChoYW5kbGUp
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2lu
LmNwcAppbmRleCBiZjk2YjBhNTVjODguLmM5MmE3N2E4YzE2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFu
Z3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5n
dWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAg
IFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUs
ICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNP
NjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5m
byhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlO
YW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAKaW5kZXggMWFlNjIyOTg1OGZlLi4yOWUyNTU3NjRlYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFJUQ1NkcFR5cGUsIFN0cmluZz4+IGZldGNoRGVzY3JpcHRp
b24oR3N0RWxlbWVudCoKIAogICAgIEdVbmlxdWVQdHI8Y2hhcj4gc2RwU3RyaW5nKGdzdF9zZHBf
bWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsKICAgICBHU1RfVFJBQ0VfT0JKRUNU
KHdlYnJ0Y0JpbiwgIiVzLWRlc2NyaXB0aW9uIFNEUDogJXMiLCBuYW1lLCBzZHBTdHJpbmcuZ2V0
KCkpOwotICAgIHJldHVybiB7IHsgZnJvbVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0
aW9uLmdldCgpKSwgc2RwU3RyaW5nLmdldCgpIH0gfTsKKyAgICByZXR1cm4geyB7IGZyb21TZXNz
aW9uRGVzY3JpcHRpb25UeXBlKCpkZXNjcmlwdGlvbi5nZXQoKSksIFN0cmluZyB7IHNkcFN0cmlu
Zy5nZXQoKSB9IH0gfTsKIH0KIAogc3RhdGljIEdzdFdlYlJUQ1NpZ25hbGluZ1N0YXRlIGZldGNo
U2lnbmFsaW5nU3RhdGUoR3N0RWxlbWVudCogd2VicnRjQmluKQpAQCAtNDU2LDcgKzQ1Niw3IEBA
IHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6c3RvcmVSZW1vdGVNTGluZUluZm8oR3N0U0RQ
TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAg
ICAgICAgbV9tZWRpYUZvck1pZC5zZXQoeyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAi
YXVkaW8iKSA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6VmlkZW8pOworICAgICAgICBtX21lZGlhRm9yTWlkLnNldChTdHJpbmcg
eyBtaWQgfSwgZ19zdHJfZXF1YWwobWVkaWFUeXBlLCAiYXVkaW8iX3MpID8gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7
CiAKICAgICAgICAgLy8gaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9n
c3QtcGx1Z2lucy1iYWQvLS9tZXJnZV9yZXF1ZXN0cy8xOTA3CiAgICAgICAgIGlmIChzZHBNZWRp
YUhhc0F0dHJpYnV0ZUtleShtZWRpYSwgImljZS1saXRlIikpIHsKQEAgLTkyNCw3ICs5MjQsNyBA
QCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZEljZUNhbmRpZGF0ZShHU3RyZWFtZXJJ
Y2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgUAogCiAgICAgaWYgKCFjYW5kaWRhdGUuY2FuZGlkYXRl
LnN0YXJ0c1dpdGgoImNhbmRpZGF0ZToiKSkgewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
YXNrID0gY3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZEljZUNhbmRp
ZGF0ZUNhbGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkV4cGVjdCBs
aW5lOiBjYW5kaWRhdGU6PGNhbmRpZGF0ZS1zdHI+IiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkV4cGVjdCBsaW5lOiBjYW5kaWRhdGU6PGNh
bmRpZGF0ZS1zdHI+Il9zIH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFkZEljZUNh
bmRpZGF0ZShHU3RyZWFtZXJJY2VDYW5kaWRhdGUmIGNhbmRpZGF0ZSwgUAogICAgIGF1dG8gcGFy
c2VkQ2FuZGlkYXRlID0gcGFyc2VJY2VDYW5kaWRhdGVTRFAoY2FuZGlkYXRlLmNhbmRpZGF0ZSk7
CiAgICAgaWYgKCFwYXJzZWRDYW5kaWRhdGUpIHsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChb
dGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJY2VDYW5k
aWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFcnJvciBw
cm9jZXNzaW5nIElDRSBjYW5kaWRhdGUiIH0pOworICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIl9z
IH0pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwODUsOSArMTA4
NSw5IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uU3VjY2VlZGVkKEdVbmlxdWVQdHI8R3N0V2ViCiAKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFy
PiBzZHAoZ3N0X3NkcF9tZXNzYWdlX2FzX3RleHQoZGVzY3JpcHRpb24tPnNkcCkpOwogICAgICAg
ICBpZiAobV9pc0luaXRpYXRvcikKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNyZWF0ZU9mZmVyU3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkgfSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0
ZUFuc3dlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3JlYXRlQW5zd2VyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQoKSB9KTsKICAg
ICB9KTsKIH0KIApAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBv
aW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQoR1VuaXF1ZVB0cjxHRXJyb3I+JiYK
ICAgICAgICAgaWYgKGlzU3RvcHBlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gZXhjID0gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gZXJyb3ItPm1l
c3NhZ2UgOiAiVW5rbm93biBFcnJvciIgfTsKKyAgICAgICAgYXV0byBleGMgPSBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdl
KSA6ICJVbmtub3duIEVycm9yIl9zIH07CiAgICAgICAgIGlmIChtX2lzSW5pdGlhdG9yKQogICAg
ICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJGYWlsZWQoV1RGTW92
ZShleGMpKTsKICAgICAgICAgZWxzZQpAQCAtMTEyNSw3ICsxMTI1LDcgQEAgdm9pZCBHU3RyZWFt
ZXJNZWRpYUVuZHBvaW50Ojpjb2xsZWN0VHJhbnNjZWl2ZXJzKCkKICAgICAgICAgaWYgKCFyZWNl
aXZlciB8fCAhbWlkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgbV9wZWVyQ29u
bmVjdGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJl
YW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JN
aWQuZ2V0KG1pZC5nZXQoKSkpOworICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdS
ZW1vdGVUcmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kPihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRpYUZvck1pZC5nZXQoU3RyaW5nIHsgbWlk
LmdldCgpIH0pKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDI1NjRlOWE0NjQ4MC4uMzBmZWYwZTAy
Mjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKQEAgLTU5LDQwICs1OSw0MCBAQCBDcmVhdGVQZWVyQ29ubmVjdGlvbkJhY2tl
bmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVHU3RyZWFtZXJQZWVyQwog
c3RhdGljIFJUQ1J0cENhcGFiaWxpdGllcyBnc3RyZWFtZXJSdHBDYXBhdGlibGl0aWVzKGNvbnN0
IFN0cmluZyYga2luZCkKIHsKICAgICBSVENSdHBDYXBhYmlsaXRpZXMgY2FwYWJpbGl0aWVzOwot
ICAgIGNhcGFiaWxpdGllcy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZCh7ICJodHRwOi8vd3d3Lmll
dGYub3JnL2lkL2RyYWZ0LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lkZS1jYy1leHRlbnNpb25z
LTAxIiB9KTsKKyAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0
cDovL3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2Mt
ZXh0ZW5zaW9ucy0wMSJfcyB9KTsKICAgICBpZiAoa2luZCA9PSAiYXVkaW8iX3MpIHsKICAgICAg
ICAgY2FwYWJpbGl0aWVzLmNvZGVjcy5yZXNlcnZlQ2FwYWNpdHkoNCk7Ci0gICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL09QVVMi
LAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJhdWRpby9PUFVTIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDQ4MDAwLAogICAg
ICAgICAgICAgLmNoYW5uZWxzID0gMiwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0p
OwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJhdWRpby9HNzIyIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5n
KCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1p
bWVUeXBlID0gImF1ZGlvL0c3MjIiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gODAwMCwK
ICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
IiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vUENNQSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0
cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7
IC5taW1lVHlwZSA9ICJhdWRpby9QQ01BIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgw
MDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsg
Lm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1w
dHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNVSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUg
PSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICIiIH0pOworICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9
KTsKICAgICB9IGVsc2UgewotICAgICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5h
cHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iIH0pOworICAgICAgICBjYXBhYmls
aXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRp
b24iX3MgfSk7CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQp
OwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlw
ZSA9ICJ2aWRlby9WUDgiLAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRl
ID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2Fw
YWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5
IiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAg
IGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVv
L1ZQOSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5z
ZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29k
ZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDkiLAorICAgICAgICAg
ICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MCJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5Il9zLAog
ICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gInByb2ZpbGUtaWQ9MSIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiLAorICAgICAgICAgICAgLnNkcEZt
dHBMaW5lID0gInByb2ZpbGUtaWQ9MSJfcyB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vSDI2NCJfcywKICAgICAgICAg
ICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwYWNr
ZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZiIgfSk7CisgICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00
MmUwMWYiX3MgfSk7CiAgICAgfQogICAgIHJldHVybiBjYXBhYmlsaXRpZXM7CiB9CkBAIC0yMDQs
NyArMjA0LDcgQEAgdm9pZCBHU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvQ3JlYXRl
T2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYgb3B0aW9ucykKIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRpb25zJiYpCiB7CiAgICAg
aWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpIHsKLSAgICAgICAgY3JlYXRlQW5zd2VyRmFp
bGVkKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gcmVtb3RlIGRlc2NyaXB0aW9u
IHNldCIgfSk7CisgICAgICAgIGNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNjcmlwdGlvbiBzZXQiX3MgfSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3ZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4
IDI0NDlhZTg1ZjE2ZC4uZTc3OGY2ZDRmMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU3Ry
aW5nIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6bWlkKCkKIHsKICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IG1pZDsKICAgICBnX29iamVjdF9nZXQobV9ydGNUcmFuc2NlaXZlci5nZXQo
KSwgIm1pZCIsICZtaWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgIHJldHVybiBtaWQuZ2V0KCk7
CisgICAgcmV0dXJuIFN0cmluZyB7IG1pZC5nZXQoKSB9OwogfQogCiB2b2lkIEdTdHJlYW1lclJ0
cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcCgpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR1N0cmVh
bWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9wcGVkKCkgY29uc3QKIHN0YXRpYyBpbmxpbmUg
V0FSTl9VTlVTRURfUkVUVVJOIEV4Y2VwdGlvbk9yPEdzdENhcHMqPiB0b1J0cENvZGVjQ2FwYWJp
bGl0eShjb25zdCBSVENSdHBDb2RlY0NhcGFiaWxpdHkmIGNvZGVjKQogewogICAgIGlmICghY29k
ZWMubWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikgJiYgIWNvZGVjLm1pbWVUeXBlLnN0YXJ0
c1dpdGgoImF1ZGlvLyIpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlm
aWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IGJhZCBtaW1lVHlwZSIgfTsKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0
cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUiX3MgfTsKIAogICAgIGF1dG8gY29tcG9uZW50
cyA9IGNvZGVjLm1pbWVUeXBlLnNwbGl0KCcvJyk7CiAgICAgYXV0byogY2FwcyA9IGdzdF9jYXBz
X25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtcnRwIiwgIm1lZGlhIiwgR19UWVBFX1NUUklORywg
Y29tcG9uZW50c1swXS5hc2NpaSgpLmRhdGEoKSwgImVuY29kaW5nLW5hbWUiLCBHX1RZUEVfU1RS
SU5HLCBjb21wb25lbnRzWzFdLmFzY2lpKCkuZGF0YSgpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0
YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAppbmRleCBhYWE0MTM3ZDJjNjAuLmQ3
YjYzOGE0MzI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9y
LmNwcApAQCAtNDMsMTUgKzQzLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRDU3RhdHMo
UlRDU3RhdHNSZXBvcnQ6OlN0YXRzJiBzdGF0cywgY29uc3QgR3N0U3RydWN0dXJlCiAgICAgZG91
YmxlIHRpbWVzdGFtcDsKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZG91YmxlKHN0cnVjdHVy
ZSwgInRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQogICAgICAgICBzdGF0cy50aW1lc3RhbXAgPSB0
aW1lc3RhbXA7Ci0gICAgc3RhdHMuaWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0
dXJlLCAiaWQiKTsKKyAgICBzdGF0cy5pZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0
cmluZyhzdHJ1Y3R1cmUsICJpZCIpIH07CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsUlRD
UlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6OlJ0cFN0cmVhbVN0YXRzJiBzdGF0cywgY29u
c3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgZmlsbFJUQ1N0YXRzKHN0YXRzLCBz
dHJ1Y3R1cmUpOwogCi0gICAgc3RhdHMudHJhbnNwb3J0SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9z
dHJpbmcoc3RydWN0dXJlLCAidHJhbnNwb3J0LWlkIik7Ci0gICAgc3RhdHMuY29kZWNJZCA9IGdz
dF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJjb2RlYy1pZCIpOworICAgIHN0YXRz
LnRyYW5zcG9ydElkID0gU3RyaW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInRyYW5zcG9ydC1pZCIpIH07CisgICAgc3RhdHMuY29kZWNJZCA9IFN0cmluZyB7IGdzdF9z
dHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJjb2RlYy1pZCIpIH07CiAKICAgICB1bnNp
Z25lZCB2YWx1ZTsKICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfdWludChzdHJ1Y3R1cmUsICJz
c3JjIiwgJnZhbHVlKSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmls
bE91dGJvdW5kUlRQU3RyZWFtU3RhdHMoUlRDU3RhdHNSZXBvcnQ6Ok91dGJvdW5kUnRwU3RyZWFt
UwogICAgICAgICBzdGF0cy5uYWNrQ291bnQgPSBuYWNrQ291bnQ7CiAKICAgICBpZiAoY29uc3Qg
Y2hhciogcmVtb3RlSWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAicmVt
b3RlLWlkIikpCi0gICAgICAgIHN0YXRzLnJlbW90ZUlkID0gcmVtb3RlSWQ7CisgICAgICAgIHN0
YXRzLnJlbW90ZUlkID0gU3RyaW5nIHsgcmVtb3RlSWQgfTsKIAogICAgIC8vIEZJWE1FCiAgICAg
Ly8gc3RhdHMudGFyZ2V0Qml0cmF0ZSA9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENV
dGlscy5jcHAKaW5kZXggNTRiOTc0ZDNhNzJkLi42YTE2MzZjNmRkYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJU
Q1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgUmVmUHRyPFJU
Q0Vycm9yPiB0b1JUQ0Vycm9yKEdFcnJvciogcnRjRXJyb3IpCiAgICAgYXV0byBkZXRhaWwgPSB0
b1JUQ0Vycm9yRGV0YWlsVHlwZShzdGF0aWNfY2FzdDxHc3RXZWJSVENFcnJvcj4ocnRjRXJyb3It
PmNvZGUpKTsKICAgICBpZiAoIWRldGFpbCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIFJUQ0Vycm9yOjpjcmVhdGUoKmRldGFpbCwgcnRjRXJyb3ItPm1lc3NhZ2UpOworICAg
IHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIFN0cmluZzo6ZnJvbVVURjgocnRjRXJy
b3ItPm1lc3NhZ2UpKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgdG9XZWJSVENCaXRSYXRl
UHJpb3JpdHkoUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5KQpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0
YXRpYyBpbmxpbmUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIHRvUlRDRW5jb2RpbmdQYXJhbWV0
ZXJzKGNvbnN0IEdzdFN0cnVjdHVyCiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQ2NChy
dGNQYXJhbWV0ZXJzLCAibWF4LWZyYW1lcmF0ZSIsICZtYXhGcmFtZXJhdGUpKQogICAgICAgICBw
YXJhbWV0ZXJzLm1heEZyYW1lcmF0ZSA9IG1heEZyYW1lcmF0ZTsKIAotICAgIHBhcmFtZXRlcnMu
cmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHJ0Y1BhcmFtZXRlcnMsICJyaWQiKTsKKyAg
ICBwYXJhbWV0ZXJzLnJpZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQ
YXJhbWV0ZXJzLCAicmlkIikgfTsKIAogICAgIGRvdWJsZSBzY2FsZVJlc29sdXRpb25Eb3duQnk7
CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShydGNQYXJhbWV0ZXJzLCAic2NhbGUt
cmVzb2x1dGlvbi1kb3duLWJ5IiwgJnNjYWxlUmVzb2x1dGlvbkRvd25CeSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVQWRhcHRlckltcGwuY3BwCmluZGV4IDAzOTkzNGYyOTRlYS4uYmU3ZmM0Yjg2ZWY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0
aWMgU3RyaW5nIGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7CiAgICAgV0dQVUFk
YXB0ZXJQcm9wZXJ0aWVzIHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVz
KGFkYXB0ZXIsICZwcm9wZXJ0aWVzKTsKLSAgICByZXR1cm4gcHJvcGVydGllcy5uYW1lOworICAg
IHJldHVybiBTdHJpbmcgeyBwcm9wZXJ0aWVzLm5hbWUgfTsKIH0KIAogc3RhdGljIFJlZjxTdXBw
b3J0ZWRGZWF0dXJlcz4gc3VwcG9ydGVkRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCmluZGV4IDk2OWE3YTJjYTdiOS4uOGM5NDc1YWY1
MDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3Jh
cGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKQEAgLTU5Miw3ICs1OTIsNyBA
QCB2b2lkIERldmljZUltcGw6OnBvcEVycm9yU2NvcGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPEVycm9yPiYmKT4mJgogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfRm9y
Y2UzMjoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfVmFs
aWRhdGlvbjoKLSAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6Y3JlYXRl
KG1lc3NhZ2UpIH0gfTsKKyAgICAgICAgICAgIGVycm9yID0geyB7IFZhbGlkYXRpb25FcnJvcjo6
Y3JlYXRlKFN0cmluZyB7IG1lc3NhZ2UgfSkgfSB9OwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV0dQVUVycm9yVHlwZV9PdXRPZk1lbW9yeToKICAgICAgICAgICAgIGVycm9yID0g
eyB7IE91dE9mTWVtb3J5RXJyb3I6OmNyZWF0ZSgpIH0gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggOGViNGU5MjZiOWRhLi4wZDRkNDZhMGVk
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBA
IC0zNjgsNyArMzY4LDcgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gcmFuZ2VNYXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0
cmluZyYpOwogCi0gICAgc3RhdGljIFN0cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhO
b3RpZmljYXRpb24pOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90aWZpY2F0aW9uUGxhdGZv
cm1OYW1lKEFYTm90aWZpY2F0aW9uKTsKIAogICAgIEFYVHJlZURhdGEgdHJlZURhdGEoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNo
ZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJ
T1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1MjczMmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtNDIs
NDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBWENvcmVPYmpl
Y3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3JhcHBlci5nZXQoKSk7CiB9CiAKLVN0cmlu
ZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBs
YXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0gICAgU3RyaW5nIG5h
bWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKIAogICAg
IHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2FzZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFu
Z2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9
ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92ZXJsYXlDaGFuZ2VkOgotICAgICAgICBu
YW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYUGFnZVNjcm9sbGVk
OgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIjsKKyAgICAgICAgbmFtZSA9ICJBWFBh
Z2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVD
aGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRU
ZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBB
WExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQi
OworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWElu
dmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoK
ICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hh
bmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFY
Q3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFu
Z2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6
Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgsMTYgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTm90aWZp
Y2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBtdXN0IHVsdGltYXRlbHkgY2FsbCBVSUtp
dCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uLgogICAgIC8vIEJ1dCBXZWJDb3JlIGlz
IG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3JrYXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRo
ZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVt
IFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQgZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0
cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNh
dGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNFbXB0eSgpKQorICAgIGF1dG8gbm90
aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRpb24pOwor
ICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsK
KyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNT
dHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNhdGlvbjpuc05vdGlm
aWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8gc2ltdWxhdGUgQVggbm90aWZpY2F0aW9u
cyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRvciwgY2FsbAogICAgIC8vIHRoZSB3cmFw
cGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbi4KLSAgICBbb2JqZWN0LT53cmFw
cGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsK
KyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpu
c05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwg
Y29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3
Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
CkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eVNjcm9sbDooVUlB
Y2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbgogICAgIEJPT0wgcmVzdWx0ID0g
c2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFnZShzY3JvbGxEaXJlY3Rpb24pOwogCiAg
ICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlm
aWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVOU1N0cmluZygpOworICAgICAgICBbc2Vs
ZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgICAgIENH
UG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2liaWxpdHlTY3JvbGxQb3NpdGlvbl07CiAg
ICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0iLCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9z
LnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlm
aWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmluZyB9XTsKKyAgICAg
ICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1l
LmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CiAgICAgfQogCiAg
ICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQg
bm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQgc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2MzY5NjcwMWY0
NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNj
cmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29y
bGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX2ZyYW1lLmxvYWRl
cigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAg
ICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1
cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5k
IGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05UUk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9S
KExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBlZDVmZjg0YjkuLjMxZWZjMjgzMDUzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtOTAsNyArOTAsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVy
bjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOworICAgIEFT
Q0lJTGl0ZXJhbCBuZXdWYWx1ZSA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIFRleHRBbGln
bk1vZGUgdGV4dEFsaWduID0gKnZhbHVlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKQEAgLTEwMCwyMSArMTAwLDIxIEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgICAgICAgICAvLyBuby1vcAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQ6Ci0gICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRv
TGVmdDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgICAgIG5ld1Zh
bHVlID0gInJpZ2h0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdExlZnQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAg
ICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoK
LSAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgogICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQg
RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdy
aXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghbmV3
VmFsdWUpCisgICAgaWYgKG5ld1ZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IG1fZG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsK
QEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVz
KCkKICAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJs
ZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQg
Y29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5v
dCBoYXZlIG9uZS4KLSAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFj
a2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CisgICAgZGVmYXVsdFN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAy
NTUsIDI1NSwgMC4wKSJfcyk7CiAgICAgCiAgICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCB0
aGUgdXNlciBjYW4gbW9kaWZ5LCBsaWtlIGZvbnQtd2VpZ2h0LiAKICAgICAvLyBBbHNvIHJlbW92
ZSBmb250LWZhbWlseSwgcGVyIEhJIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAppbmRleCA0YjZkMGU1YjQ0NDcuLjAxODI4ZWY3MjNmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RydWN0
IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmlu
ZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsKKyAgICAgICAgcmV0
dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDUxMjNiYjJkMGMwNC4uZDQ4NDFkZjNkZmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMjUyLDE0ICsyNTIs
MTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIEZsb2F0UmVjdCByZWN0Rm9yU2V0dGlu
Z0F0SW5kZXgodW5zaWduZWQpOwotICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmlu
ZyYpOworICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAgICAgICAgIAog
ICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOwogCiAg
ICAgc3RydWN0IFNldHRpbmcgewotICAgICAgICBTdHJpbmcga2V5OwotICAgICAgICBTdHJpbmcg
bmFtZTsKLSAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGtleSB7IEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1lIHsgQVNDSUlM
aXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgYm9vbCB2YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsg
ICAgCiAKICAgICBGaXhlZFZlY3RvcjxTZXR0aW5nPiBtX3NldHRpbmdzIHsKQEAgLTM3OSw3ICsz
NzksNyBAQCBGbG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGlu
Z0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgfTsKIH0KIAotYm9vbCBJbnRlcmFjdGlvblJl
Z2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmIG5hbWUpCitib29sIElu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1l
KQogewogICAgIGZvciAoY29uc3QgYXV0byYgc2V0dGluZyA6IG1fc2V0dGluZ3MpIHsKICAgICAg
ICAgaWYgKG5hbWUgPT0gc2V0dGluZy5rZXkpCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogICAgIAogICAgIGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAK
LSAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIikpIHsKKyAgICBpZiAodmFsdWVGb3JT
ZXR0aW5nKCJyZWdpb25zIl9zKSkgewogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVz
cygyKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCkBA
IC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0
KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgYXV0byByZWdp
b24gPSBhY3RpdmVSZWdpb24oKTsKIAotICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGlu
ZygiY29uc3RyYWluIikpIHsKKyAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNv
bnN0cmFpbiJfcykpIHsKICAgICAgICAgYXV0byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJh
ZGl1cykgewogICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwog
ICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVu
dENvb3JkaW5hdGVzOwpAQCAtNDUxLDEwICs0NTEsMTAgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LAogCiAgICAgICAgIGF1dG8gbWFrZUdyYWRpZW50ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dy
b3VuZCwgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhKSB7CiAgICAgICAgICAgICBh
dXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkIH0pOwotICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZv
clNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSkgeworICAgICAgICAg
ICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0
dGluZygiY2xpcCJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7CiAgICAg
ICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3Vu
ZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xv
cjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4i
KSkgeworICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8
fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhB
bHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAx
LCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDApIH0pOwogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTQ2NiwxOCArNDY2LDE4IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAg
ICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVz
ID0gNTA7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIp
OworICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpOwog
ICAgICAgICBWZWN0b3I8UGF0aD4gY2xpcFBhdGhzOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlw
KQogICAgICAgICAgICAgY2xpcFBhdGhzID0gcGF0aHNGb3JSZWdpb24oKnJlZ2lvbik7CiAKLSAg
ICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJl
Z2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xp
cCIpKTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENs
aXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JT
ZXR0aW5nKCJjbGlwIl9zKSk7CiAKICAgICAgICAgaWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICAgICAgZm9y
IChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZs
b2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBh
dGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsK
KyAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1l
bnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFja2Ry
b3BHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoZ3JhZGllbnREYXRhKHJhZGl1cyAqIDEuNSks
IHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNh
dGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRo
QWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRk
Q29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsK
QEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3
UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfQog
CiAgICAgICAgIGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7Ci0gICAgICAgIGlmICgh
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxD
b2xvciIpKQorICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVG
b3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiX3MpKQogICAgICAgICAgICAgaGFzTGlnaHRCYWNr
Z3JvdW5kID0gcmVnaW9uLT5oYXNMaWdodEJhY2tncm91bmQ7CiAKICAgICAgICAgaWYgKHNob3Vs
ZENsaXApIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykg
ewotICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4
dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lv
bigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1
ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0
KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5k
LCBncmFkaWVudERhdGEocmFkaXVzKSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBh
dGgocGF0aCk7CiAgICAgICAgICAgICB9CkBAIC01MjIsOSArNTIyLDkgQEAgYm9vbCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0
IFBsYXRmb3JtTW8KIAogICAgIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAot
ICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiKSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0
dGluZygiY3Vyc29yIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0g
ICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1
cnNvcigpOwogCiAgICAgYXV0byBldmVudEluQ29udGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFt
ZVZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CkBAIC01NDQsNyArNTQ0
LDcgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJs
YXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8KICAgICBtX21vdXNlTG9jYXRpb25JbkNvbnRl
bnRDb29yZGluYXRlcyA9IGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzOwogICAgIG92ZXJsYXku
c2V0TmVlZHNEaXNwbGF5KCk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJo
b3ZlciIpKQorICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3Zl
ZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQppbmRleCA0Nzc0Y2UwOGE1YjguLmUw
MTZmOTIxZDVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5n
c0Jhc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFz
ZUNvY29hLm1tCkBAIC02MywxNSArNjMsMTUgQEAgYm9vbCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3Jt
RGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKIHZvaWQgU2V0dGluZ3NCYXNlOjppbml0aWFs
aXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiB7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQ
aW5nRmFuZyBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIlBpbmdGYW5nIFNDIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtB
TkFfT1JfSElSQUdBTkEpOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290
aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
VGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVy
IiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NS
SVBUX0NPTU1PTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVND
UklQVF9DT01NT04pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiX3Ms
IFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBp
bmdGYW5nIFNDIl9zLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIl9zLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJ
UkFHQU5BKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8i
X3MsIFVTQ1JJUFRfSEFOR1VMKTsKKworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMi
X3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3Ms
IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NS
SVBUX0NPTU1PTik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIl9zLCBV
U0NSSVBUX0NPTU1PTik7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCBlYmNkYjFkZDA4MTIuLjVhOTQ4OTAwOTQ5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9
OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9u
TmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnRPU1ZlcnNpb24gPSBlbXB0eVN0cmluZygpLCBVc2VyQWdlbnRUeXBlID0gVXNlckFnZW50VHlw
ZTo6RGVmYXVsdCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQo
KTsKK1dFQkNPUkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKTsKIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3Ry
aW5nKCk7CiAjZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFh
NWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0
YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3ND
b250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQg
R3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciog
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xF
Ojp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlv
dXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAg
ICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhl
IGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRl
cm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBv
biB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4K
LSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVy
YWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmli
dXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHks
IEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dM
ZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXpl
aSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5n
VG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdl
NjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApA
QCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5h
cHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tNDEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm00MiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQp
LCAnXScpOwogfQogCi1zdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitz
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXll
ckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVy
Q29sb3IuaXNWYWxpZCgpKQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRM
YXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
LCBpbnQKICAgICB9CiAKICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0g
ICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FD
RkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBw
cmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZM
YXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAv
LyBQcmludCBib3JkZXJDb2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGlu
ZGVudCArIDEsICJib3JkZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJi
b3JkZXJDb2xvciJfcywgQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAo
Ym9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggYjkzYmMzNGNjNGQ0Li4xZjUxNjkxZWY5Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAgLTM0MiwyMiArMzQyLDIyIEBAIHN0
YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0cmluZ0Zyb21GYW1pbHkoY29uc3QgU3RyaW5nJiBm
YW1pbHkpCiAgICAgICAgIHJldHVybiBmYW1pbHk7CiAKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3RhbmRhcmRGYW1pbHkpIHx8IGZhbWls
eSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlNlcmlmRmFtaWx5KSkK
LSAgICAgICAgcmV0dXJuICJzZXJpZiI7CisgICAgICAgIHJldHVybiAic2VyaWYiX3M7CiAgICAg
aWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlNhbnNT
ZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2Fucy1zZXJpZiI7CisgICAgICAgIHJldHVy
biAic2Fucy1zZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQo
RmFtaWx5TmFtZXNJbmRleDo6TW9ub3NwYWNlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJtb25v
c3BhY2UiOworICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSJfczsKICAgICBpZiAoZmFtaWx5ID09
IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6Q3Vyc2l2ZUZhbWlseSkpCi0g
ICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAgICAgIHJldHVybiAiY3Vyc2l2ZSJfczsKICAg
ICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6RmFu
dGFzeUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiZmFudGFzeSI7CisgICAgICAgIHJldHVybiAi
ZmFudGFzeSJfczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3lzdGVtVWlGYW1pbHkpIHx8IGZhbWls
eSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpCiAgICAgICAgIHJldHVybiBkZWZhdWx0R3RrU3lz
dGVtRm9udCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiB9CiAKICNpZiBGQ19WRVJTSU9OIDwgMjEzOTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDFkNmFlMmUxMmU3ZC4uZmQ5Zjc4ZTdk
MjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRl
Q29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAw
KQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21p
bWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5n
ZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsK
ICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIyNTQxLi4xMjA3YzM1YTExM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC02MTMsNyArNjEzLDcgQEAgc3RhdGljIGdib29sZWFu
IHBhcnNlR3N0U3RydWN0dXJlVmFsdWUoR1F1YXJrIGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFs
dWUsIGdwb2kKIHsKICAgICBpZiAoYXV0byBqc29uVmFsdWUgPSBnc3RTdHJ1Y3R1cmVWYWx1ZVRv
SlNPTih2YWx1ZSkpIHsKICAgICAgICAgYXV0byogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxK
U09OOjpPYmplY3QqPih1c2VyRGF0YSk7Ci0gICAgICAgIG9iamVjdC0+c2V0VmFsdWUoZ19xdWFy
a190b19zdHJpbmcoZmllbGRJZCksIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CisgICAg
ICAgIG9iamVjdC0+c2V0VmFsdWUoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZmllbGRJZCkg
fSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICB9CiAgICAgcmV0dXJuIFRSVUU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDJk
OWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVt
ZW50CiAgICAgaWYgKHNob3VsZENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyID09IENoZWNrSGFyZHdh
cmVDbGFzc2lmaWVyOjpZZXMpIHsKICAgICAgICAgZm9yIChHTGlzdCogZmFjdG9yaWVzID0gY2Fu
ZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0b3JpZXMgPSBnX2xpc3RfbmV4dChmYWN0b3JpZXMpKSB7
CiAgICAgICAgICAgICBhdXRvKiBmYWN0b3J5ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RFbGVtZW50
RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0YSk7Ci0gICAgICAgICAgICBTdHJpbmcgbWV0YWRhdGEg
PSBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9N
RVRBREFUQV9LTEFTUyk7CisgICAgICAgICAgICBTdHJpbmcgbWV0YWRhdGEgeyBnc3RfZWxlbWVu
dF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFT
UykgfTsKICAgICAgICAgICAgIGF1dG8gY29tcG9uZW50cyA9IG1ldGFkYXRhLnNwbGl0KCcvJyk7
CiAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5jb250YWlucygiSGFyZHdhcmUiKSkgewogICAg
ICAgICAgICAgICAgIGlzVXNpbmdIYXJkd2FyZSA9IHRydWU7CkBAIC0zMzEsNyArMzMxLDcgQEAg
dm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAKICAgICBhdXRvIGF2MURlY29kZXJBdmFp
bGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVz
OjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNo
ZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQg
fHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlk
ZW8vbXA0IikpICYmIGF2MURlY29kZXJBdmFpbGFibGUpIHsKKyAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9k
ZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFi
bGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJp
bmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAKLSAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXND
b250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0
Iik7CisgICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChD
b25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCJfcyk7CiAgICAgaWYgKGF1ZGlvTXBl
Z1N1cHBvcnRlZCkgewogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmlu
ZygiYXVkaW8vbXBlZyIpKTsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2MwZDhmNzNjNDJiLi43ZWJiYTQzMjJlODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2
LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0Zh
aWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgY29uc3Qg
Y2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iIDogIm11c2lj
IjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIl9z
IDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGF1ZGlvU2luayk7CiAgICAgaWYg
KCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBn
c3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyLm91dFB0cigpLCAmZGVidWcub3V0
UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVycm9yICVkOiAlcyAodXJsPSVzKSIsIGVyci0+
Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAg
ICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVzc2FnZTsKKyAgICAgICAgbV9lcnJvck1lc3Nh
Z2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsKIAogICAgICAgICBlcnJvciA9IE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVy
ci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9V
TkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBlbHNlIGlmIChn
c3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImh0dHAtaGVhZGVycyIpKSB7CiAgICAg
ICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQcm9jZXNzaW5nIEhUVFAgaGVh
ZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoY29u
c3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInVyaSIp
KSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IHVyaSB9OworICAgICAgICAgICAgICAgIFVS
TCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgICAgICAgICAgICAgIG1fb3JpZ2lucy5hZGQo
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAogICAgICAgICAgICAgICAgIGlmICh1cmwg
IT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5
CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7CiAgICAgICAgIGdzdF90YWdfbGlzdF9n
ZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0aXRsZSk7CiAgICAgICAgIGlmICh0aXRs
ZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KHRpdGxlKTsKKyAgICAgICAgICAgIGN1
ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7CiAgICAgICAgICAgICBnX2Zy
ZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3VyZURvd25sb2FkQnVmZmVyKEdzdEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRl
IiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgR1NUX0RFQlVHX09C
SkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVkIGZpbGUgZG93bmxvYWQgdGVtcGxhdGUgZnJv
bSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRlbXBsYXRlLmdldCgpLCBuZXdEb3dubG9hZFRl
bXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggPSBuZXdE
b3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGgg
eyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07CiAgICAgcHVyZ2VPbGREb3dubG9hZEZpbGVz
KG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNlKCJYWFhYWFgiLCAiIikpOwogfQogCkBAIC0y
MTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxv
YWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlhUGxheWVyUAogICAgIEdVbmlxdWVPdXRQ
dHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdfb2JqZWN0X2dldChwbGF5ZXItPm1fZG93bmxv
YWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwgJmRvd25sb2FkRmlsZS5vdXRQdHIoKSwg
bnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93
bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0
ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZEZpbGUuZ2V0KCkpKSkpIHsKICAgICAgICAg
R1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBtZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRl
ciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2Ug
dGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZh
bHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJp
X2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7Ci0gICAgICAgIFVSTCBuZXdV
cmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOworICAgICAgICBVUkwgbmV3VXJsID0gVVJM
KGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9uIH0pOwogCiAgICAgICAgIEdVbmlxdWVPdXRQ
dHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5l
LmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJpblVybFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7
Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxheWJpblVybFN0ci5nZXQoKSB9OworICAgICAg
ICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAg
ICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1VybCkgewogICAgICAgICAgICAgR1NUX0RFQlVH
X09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBhbHJlYWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24u
Iik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVybCkKIAogICAgIGF1dG8gZWxlbWVudElk
ID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQot
ICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIjsKKyAgICAgICAgZWxlbWVudElkID0g
Im1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0IGNoYXIqIHR5cGUgPSBpc01lZGlhU291cmNl
KCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygibWVkaWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVh
bS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBAIEluaXREYXRhIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Qcm90ZWN0aW9uTWVzc2FnZShHc3RNZXNz
CiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgZ3N0
X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0KCksICZldmVudEtleVN5c3RlbUlkLCAm
ZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlT
eXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHsgU3RyaW5nIHsg
ZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwogICAgICAgICAgICAgbV9oYW5kbGVkUHJvdGVj
dGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShldmVudC5nZXQoKSkpOwogICAgICAgICB9
CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChHc3RFdmVudCogZXZlbnQpCiAgICAgY29uc3Qg
Y2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0cjsKICAgICBHc3RCdWZmZXIqIGluaXRE
YXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVjdGlvbihldmVudCwgJmV2
ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBudWxscHRyKTsKLSAgICBpbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1VVUlELCBpbml0RGF0YX0pOworICAgIGlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlE
IH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3Li4zMmVkM2FlOGIyOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTQ3MSw3ICs0NzEsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7
CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAot
ICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJH
U3RyZWFtZXIiOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gIkdTdHJlYW1lciJfczsgfQogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3ND
aGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAKaW5kZXggZGNhMmMyMWZkNjMwLi4wM2VkYWM4YzhlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFRy
YWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29kZShHc3RUYWdMaXN0KiB0YWdz
LCBBdG9tU3RyaW5nJiB2YQogewogICAgIFN0cmluZyBsYW5ndWFnZTsKICAgICBpZiAoZ2V0VGFn
KHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwgbGFuZ3VhZ2UpKSB7Ci0gICAgICAgIGxhbmd1
YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGxhbmd1YWdlID0gU3RyaW5nIHsgZ3N0X3RhZ19nZXRfbGFuZ3Vh
Z2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSkgfTsKICAgICAgICAgR1NU
X0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sgJWQncyBsYW5ndWFnZSBjb2RlIHRvICVzLiIsIG1faW5k
ZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdmFs
dWUpIHsKICAgICAgICAgICAgIHZhbHVlID0gbGFuZ3VhZ2U7CkBAIC0yMTEsNyArMjExLDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywg
Y29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMKICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1
ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1Zh
bHVlLm91dFB0cigpKSkgewogICAgICAgICBHU1RfREVCVUcoIlRyYWNrICVkIGdvdCAlcyAlcy4i
LCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7Ci0gICAgICAgIHZhbHVlID0gdGFn
VmFsdWUuZ2V0KCk7CisgICAgICAgIHZhbHVlID0gU3RyaW5nVHlwZSB7IHRhZ1ZhbHVlLmdldCgp
IH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCmluZGV4IDg5NDc1
NDA1YzgwOS4uZDdiZTgwNTE4ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1l
dGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgd2Via2l0R3N0VHJh
Y2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICBnc3Rf
cGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBwcm9iZVR5cGUsIFtdKEdzdFBhZCosIEdzdFBh
ZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJu
IHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRCdWZmZXIsIG1ldGFdID0gZW5zdXJlVmlkZW9GcmFt
ZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5GT19CVUZGRVIoaW5mbykpOwogICAgICAgICBHU1Rf
UEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9IG1vZGlmaWVkQnVmZmVyOwotICAgICAgICBtZXRh
LT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJE
YXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tf
VElNRV9OT05FKSk7CisgICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoU3Ry
aW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH0sIHN0ZDo6bWFrZV9wYWly
KGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpOwogICAgICAg
ICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9LCBnc3RfZWxlbWVudF9nZXRfbmFtZShl
bGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgd2Via2l0R3N0VHJh
Y2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICAgICAg
aWYgKCFtZXRhKQogICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAKLSAgICAg
ICAgYXV0byogZWxlbWVudE5hbWUgPSByZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSk7
CisgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVz
ZXJEYXRhKSB9OwogICAgICAgICBhdXRvIHZhbHVlID0gbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1Rp
bWVzLmdldChlbGVtZW50TmFtZSk7CiAgICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1l
cy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6bWFrZV9wYWlyKHZhbHVlLmZpcnN0LCBnc3RfdXRpbF9n
ZXRfdGltZXN0YW1wKCkpKTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0MzM2ODVl
MjMzOTUuLmQ2NDA0YzEyMGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVD
S19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVj
X3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRp
b24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5n
IHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
WyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVjYjMzLi45MTk2
M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwx
OSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQg
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1w
bGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdM
X0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUv
R0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FO
R0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCJf
cyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikK
LSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAg
aWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAgICAgIHJldHVy
biAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5
cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3MpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpKQor
ICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2Ry
YXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRf
c1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYmIChtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9z
KSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOwor
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNf
cmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3
LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zs
b2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAog
ICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgog
ICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VT
X3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGlu
ZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJl
X2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIp
IHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9v
YmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhU
X3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlz
b3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290
cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAj
aWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAg
ICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9y
dGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0
ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgc3RhdGljIGNv
bnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVy
dGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4QXJyYXlPYmpl
Y3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9i
amVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJB
R01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7
CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAg
ICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hh
ZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291
cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3No
YWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3Vy
Y2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3Ry
aW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4g
dHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3Bw
CmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVT
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdM
RFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURB
TkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFycmF5cyA9IHRydWU7
Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpICYmIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYgbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKSkgewogICAgICAg
ICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZp
c29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9z
aXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBj
aGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwog
CiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9u
KHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVu
c2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5n
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxl
ZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAgICAgICAgLy8gRm9y
Y2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0
cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5k
ZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRp
Y3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9y
CiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBv
ZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURl
cHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAg
IHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQg
cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdD
R0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVp
IGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXpl
aSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzVi
MmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewot
ICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsK
KyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9z
KTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgICAgIEV4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAg
ICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQu
Ci0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1h
dCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBp
bnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjNhZTYy
YmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAt
MTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9z
KGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMg
d2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3Vw
cG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0
cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChh
dHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAvLyBSZXNpemUgcmVn
dWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAtMjQwLDExICsy
NDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51
bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNp
bCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5j
aWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRvIGF0dHJpYnV0
ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFz
ICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4
dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVu
c2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykpIHsKICAgICAg
ICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJp
YnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcgKzY4
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQ
b2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7Ci0g
ICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJhZyBh
bmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4g
UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJB
Z2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAg
c3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFzc2lj
KCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFw
cGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1l
Rm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewogICAg
IGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAg
ICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVy
biAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdW
aWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4
IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBA
IC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBw
bGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChwbGF5
ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkK
LSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdl
ZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0cmlu
ZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1
MTY5MDQ1YzcwNWYuLjJkYzI3MTY2M2EzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTAyLDE1ICsxMDIs
MTUgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKIAogICAgIENGU3Ry
aW5nUmVmIGRvbWFpbiA9IENGRXJyb3JHZXREb21haW4obV9wbGF0Zm9ybUVycm9yLmdldCgpKTsK
ICAgICBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluTWFjaCB8fCBkb21haW4gPT0ga0NGRXJy
b3JEb21haW5Db2NvYSkKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYg
KGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykKLSAgICAgICAgbV9kb21haW4gPSAi
Q0ZVUkxFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JEb21haW4i
X3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluUE9TSVgpCi0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
UE9TSVhFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21h
aW5PU1N0YXR1cykKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgIGVsc2Ug
aWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbldpblNvY2spCi0gICAgICAgIG1fZG9tYWluID0g
ImtDRkVycm9yRG9tYWluV2luU29jayI7CisgICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9t
YWluV2luU29jayJfczsKICAgICBlbHNlCiAgICAgICAgIG1fZG9tYWluID0gZG9tYWluOwogCkBA
IC0xOTAsMTMgKzE5MCwxMyBAQCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpCiAKICAgICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7CiAgICAgY2FzZSBrQ0ZT
dHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
UE9TSVhFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJy
b3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4
IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
QEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX3VybC5pc0xvY2FsRmls
ZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVw
RmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3Rl
bTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBt
X3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNl
SWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJl
ciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVx
dWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3Jk
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJl
Z2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lz
dHJ5V2luLmNwcAppbmRleCBiNmIwNzYzN2NkNTYuLjI4YjU0ZWY0N2ExYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcApAQCAt
NzQsMzQgKzc0LDM0IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVu
c2lvbihTdHJpbmdWaWV3IHN0cmluZykKICAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gbWltZXR5cGVNYXA7CiAgICAgaWYgKG1pbWV0eXBlTWFwLmlzRW1wdHkoKSkgewogICAgICAg
ICAvL2ZpbGwgd2l0aCBpbml0aWFsIHZhbHVlcwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4
dCIsICJ0ZXh0L3BsYWluIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicGRmIiwgImFwcGxp
Y2F0aW9uL3BkZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIiwgImFwcGxpY2F0aW9u
L3Bvc3RzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiLCAidGV4dC9jc3Mi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1sIiwgInRleHQvaHRtbCIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImh0bSIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ4bWwiLCAidGV4dC94bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4c2wi
LCAidGV4dC94c2wiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyIsICJhcHBsaWNhdGlv
bi94LWphdmFzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiLCAiYXBwbGlj
YXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0bWwiLCAiYXBw
bGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIiwgImFw
cGxpY2F0aW9uL3Jzcyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZl
IiwgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InN2ZyIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiIs
ICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIiwgImltYWdl
L2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGVnIiwgImltYWdlL2pwZWciKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciLCAiaW1hZ2UvcG5nIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgidGlmIiwgImltYWdlL3RpZmYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0aWZmIiwgImltYWdlL3RpZmYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28i
LCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIiwgImltYWdlL2lj
byIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJtcCIsICJpbWFnZS9ibXAiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbGMiLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIiwgImF1ZGlvL3gtbTRhIik7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgidHh0Il9zLCAidGV4dC9wbGFpbiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgicGRmIl9zLCAiYXBwbGljYXRpb24vcGRmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJwcyJfcywgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImNzcyJfcywgInRleHQvY3NzIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJodG1sIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0i
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCJfcywgInRl
eHQveG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4c2wiX3MsICJ0ZXh0L3hzbCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiX3MsICJhcHBsaWNhdGlvbi94LWphdmFz
Y3JpcHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0bWwiX3MsICJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyJfcywg
ImFwcGxpY2F0aW9uL3Jzcyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFy
Y2hpdmUiX3MsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInN2ZyJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInN2Z3oiX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqcGciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJq
cGVnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIl9z
LCAiaW1hZ2UvcG5nIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiX3MsICJpbWFn
ZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWZmIl9zLCAiaW1hZ2UvdGlm
ZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIl9zLCAiaW1hZ2UvaWNvIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImJtcCJfcywgImltYWdlL2JtcCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sIl9zLCAidGV4dC92bmQud2FwLndtbCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sYyJfcywgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIl9zLCAiYXVkaW8veC1tNGEiX3MpOwogI2lmIFVTRShK
UEVHWEwpCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhsIiwgImltYWdlL2p4bCIpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCJfcywgImltYWdlL2p4bCJfcyk7CiAjZW5kaWYKICAg
ICB9CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1pbWV0eXBlTWFwLmdldChleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDBiMjVmZjZjMzhj
OC4uNjY4NWVkOTkzNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCkBAIC0yNDAsOSArMjQwLDkgQEAgYm9vbCBQYXN0ZWJvYXJkOjpoYXNEYXRh
KCkKIHN0YXRpYyB2b2lkIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChMaXN0SGFzaFNldDxTdHJpbmc+
JiByZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmIGZvcm1hdCkKIHsKICAgICBpZiAoZm9ybWF0LmNm
Rm9ybWF0ID09IHVybEZvcm1hdCgpLT5jZkZvcm1hdCB8fCBmb3JtYXQuY2ZGb3JtYXQgPT0gdXJs
V0Zvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvdXJpLWxpc3Qi
KTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOwogICAgIGlmIChmb3Jt
YXQuY2ZGb3JtYXQgPT0gcGxhaW5UZXh0V0Zvcm1hdCgpLT5jZkZvcm1hdCB8fCBmb3JtYXQuY2ZG
b3JtYXQgPT0gcGxhaW5UZXh0Rm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFk
ZCgidGV4dC9wbGFpbiIpOworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC9wbGFpbiJfcyk7CiB9
CiAKIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IFBhc3RlYm9hcmQ6OnJlYWRQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YSgpCkBAIC0yNzUsOSArMjc1LDkgQEAgVmVjdG9yPFN0cmluZz4g
UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MoY29uc3QgU3RyaW5nJiBvcmlnaW4pCiAg
ICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwogICAgIH0KIAotICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4
dC9odG1sIik7CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiJfcyk7Cisg
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CisgICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCgidGV4dC9odG1sIl9zKTsKIAogICAgIHJldHVybiBjb3B5VG9WZWN0
b3IoZG9tUGFzdGVib2FyZFR5cGVzKTsKIH0KQEAgLTMyNyw3ICszMjcsNyBAQCBTdHJpbmcgUGFz
dGVib2FyZDo6cmVhZE9yaWdpbigpCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25z
dCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYgbV9kcmFnRGF0YU1h
cC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSBkYXRhVHlwZSA9IGNsaXBib2FyZFR5cGVG
cm9tTUlNRVR5cGUodHlwZSk7CiAgICAgaWYgKGRhdGFUeXBlID09IENsaXBib2FyZERhdGFUeXBl
VGV4dCkKQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhj
b25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBtX2RhdGFPYmplY3QgPyBnZXRDRkhU
TUwobV9kYXRhT2JqZWN0LmdldCgpKSA6IGdldENGSFRNTCgmbV9kcmFnRGF0YU1hcCk7CiAgICAg
fQogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBTdHJp
bmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBTdHJpbmcmIHR5cGUp
CkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NEYXRhT2JqZWN0ICpk
YXRhLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdGgKIAogICAgIGlmICh3
aXRoSFRNTCkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gY2ZodG1sRGF0YTsKLSAgICAgICAgbWFy
a3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksICIiLCBjZmh0bWxEYXRhKTsKKyAg
ICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksIGVtcHR5U3RyaW5n
KCksIGNmaHRtbERhdGEpOwogICAgICAgICBtZWRpdW0uaEdsb2JhbCA9IGNyZWF0ZUdsb2JhbERh
dGEoY2ZodG1sRGF0YSk7CiAgICAgICAgIGlmIChtZWRpdW0uaEdsb2JhbCAmJiBGQUlMRUQoZGF0
YS0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKICAgICAgICAgICAgIDo6
R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC02OTIsNyArNjkyLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGVTdHIpCiAgICAgU3RyaW5nIHVybCA9IGt1cmwuc3RyaW5nKCk7CiAgICAgQVNTRVJU
KHVybC5pc0FsbEFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygpIGlzIFVSTCBlbmNvZGVkLgogCi0g
ICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCB0aXRs
ZVN0ciwgIi5VUkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhG
cm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCJfcywgdHJ1ZSk7CiAgICAgU3RyaW5n
IGNvbnRlbnRTdHJpbmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiArIHVybCArICJcclxu
Iik7CiAgICAgQ1N0cmluZyBjb250ZW50ID0gY29udGVudFN0cmluZy5sYXRpbjEoKTsKIApAQCAt
NzYwLDcgKzc2MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVS
TCYgcGFzdGVib2FyZFVSTCkKICAgICAvLyB3cml0ZSB0byBjbGlwYm9hcmQgaW4gZm9ybWF0IENG
X0hUTUwgdG8gYmUgYWJsZSB0byBwYXN0ZSBpbnRvIGNvbnRlbnRlZGl0YWJsZSBhcmVhcyBhcyBh
IGxpbmsKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIFZlY3Rv
cjxjaGFyPiBkYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0ZWJv
YXJkVVJMLnVybCwgdGl0bGUpLCAiIiwgZGF0YSk7CisgICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVy
bFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksIGVtcHR5U3RyaW5nKCksIGRhdGEp
OwogICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEoZGF0YSk7CiAgICAg
ICAgIGlmICghOjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlwYm9hcmRGb3JtYXQsIGNiRGF0YSkp
CiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKQEAgLTg0MCw3ICs4NDAsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0
VVJMUmVhZGluZ1BvbGljeSwgc3RkOgogICAgIGlmICg6OklzQ2xpcGJvYXJkRm9ybWF0QXZhaWxh
YmxlKENGX1RFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBpZiAo
SEFORExFIGNiRGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShDRl9URVhUKSkgewogICAgICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgdHJlYXRzIHRoZSBjaGFyYWN0ZXJzIGFzIExhdGluLTEsIG5vdCBV
VEYtOCBvciBldmVuIFdpbmRvd3MgTGF0aW4tMS4gSXMgdGhhdCB0aGUgcmlnaHQgZW5jb2Rpbmc/
Ci0gICAgICAgICAgICB0ZXh0LnRleHQgPSBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayhj
YkRhdGEpKTsKKyAgICAgICAgICAgIHRleHQudGV4dCA9IFN0cmluZyB7IHN0YXRpY19jYXN0PGNo
YXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpIH07CiAgICAgICAgICAgICBHbG9iYWxVbmxvY2soY2JE
YXRhKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZp
bGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIEds
b2JhbEZyZWUobWVtT2JqKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGV4dGVuc2lv
bi5pbnNlcnQoIi4iLCAwKTsKKyAgICBleHRlbnNpb24uaW5zZXJ0KCIuIl9zLCAwKTsKICAgICBm
c1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgcHJlZmVycmVkVGl0bGUs
IGV4dGVuc2lvbiwgZmFsc2UpOwogCiAgICAgaWYgKGZzUGF0aC5sZW5ndGgoKSA8PSAwKSB7CkBA
IC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9Xcml0YWJsZURh
dGFPYmplY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAogdm9pZCBQYXN0ZWJv
YXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1cCkKIHsKICAgICBWZWN0b3I8Y2hh
cj4gZGF0YTsKLSAgICBtYXJrdXBUb0NGSFRNTChtYXJrdXAsICIiLCBkYXRhKTsKKyAgICBtYXJr
dXBUb0NGSFRNTChtYXJrdXAsIGVtcHR5U3RyaW5nKCksIGRhdGEpOwogCiAgICAgU1RHTUVESVVN
IG1lZGl1bSB7IH07CiAgICAgbWVkaXVtLnR5bWVkID0gVFlNRURfSEdMT0JBTDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRk
YTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNz
IERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWdu
YXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wg
bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uOWE3NjEwNmNhMGZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpA
QCAtNTQsMTggKzU0LDE4IEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVF
bmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmlu
ZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9j
YWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGNvbXBhcmU6d2lyZV0gPT0gIE5TT3JkZXJlZFNh
bWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0aCgpICE9IHdp
cmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwubGVuZ3RoKCk7
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGNo
YXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUgPSB3aXJlW2ld
OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50
ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNoYXIgbG9jYWxUeXBlID0g
W2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV07CisgICAgICAgIGNoYXIgd2lyZVR5cGUgPSBbd2ly
ZSBjaGFyYWN0ZXJBdEluZGV4OmldOwogCiAgICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5
cGUpIHsKICAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJj
aGFuZ2VhYmxlLgpAQCAtOTcwLDkgKzk3MCw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29k
ZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlw
ZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2
ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25h
dHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1
cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2Nh
dGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFX
ZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVy
ZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25h
dHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYg
KCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxv
Y2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1l
dGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNl
bGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAg
IGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQu
LjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0g
KFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAg
cmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlC
bG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdl
ciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3Rv
Y29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAg
ICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1l
dGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9j
b2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBT
dHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBp
ZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUg
PSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5j
b2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFy
Z2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJs
b2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3
ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9i
amVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRo
b2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0
dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0s
IGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2ln
bmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJ
bmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAg
TlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtp
bnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBp
ZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVj
dGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDog
RmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQg
bG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRo
b2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxv
Y2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxl
ZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxp
ZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJl
LCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVw
bHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVh
dGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNp
YWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgp
LCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJ
bnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFr
ZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0
cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2Vy
XShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9
IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJy
b3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJu
aW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2Fy
ZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4g
cmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1
bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAg
IHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmki
OwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGlj
P3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20v
Y2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29t
L3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAt
NjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VM
b29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNl
VVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJp
bmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxz
ZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczov
L3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOwor
ICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90
cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJv
d3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
CiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlv
bigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1Q
cmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBh
Z2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJf
YXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JU
ZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90
IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1
Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwog
ICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5h
ZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgi
Y29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJp
dmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNl
cHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0
aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRh
aWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91
bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAg
ICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IEln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgog
ICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJf
cywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9z
LCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAg
ICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJf
cywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZh
Y2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBA
IlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAor
ICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAg
ImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisg
ICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToK
LSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSsw
MDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAg
ICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50
KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChk
b2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05h
bWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0
dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3Mp
OwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpA
QCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBD
b2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
ICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2Vy
IG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBj
b2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1h
Y3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAg
ICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpp
bmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAog
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlh
UXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJD
b250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2Ny
ZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJW
aWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7
CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwg
ZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6
IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxp
bmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlz
c3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tH
cmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+
JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1
ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQp
X3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5n
ICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJy
aWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2
ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1
bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYK
ICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFi
bGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJp
dmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMo
dHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRG
YW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAg
ICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmlu
ZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBA
IFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VR
KDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRl
ZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwog
CiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwog
CiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBB
U1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTIt
MCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFT
U0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwx
MiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMg
dG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBs
YW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJU
X0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwot
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0y
IikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykp
OwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVj
dG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhk
MThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fw
cFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1h
aW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5
dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQs
NyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3Nj
cmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3Bv
bnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRl
ZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBy
dW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5p
dGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
IAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBB
U0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVs
bHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5
cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2Io
Wyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBl
OiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
bmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+
J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0
ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9u
c2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2Zl
dGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1s
JykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAo
ZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7
Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBA
IC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmll
d3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcv
ZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNo
KCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQg
PSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBt
YWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIv
ZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8
L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNB
cHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlv
bkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0Owot
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihb
JzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6
ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVz
cG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAg
ICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
ICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7
IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwK
KyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAi
L3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQ
b3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBz
b2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAg
ICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsg
Ii8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNv
bnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAg
ICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwg
anMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBO
U011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyAr
NTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFw
cEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhj
ZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNF
Il9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUg
PSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAo
ZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNv
dXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5
bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5p
dGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRp
YXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMg
U3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRW
YWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAg
eyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1s
Il9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9z
LCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0s
IHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2Vi
VmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
CmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0K
QEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRp
b25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9X
S19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAK
IGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0
UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVT
T1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250
ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVz
IH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsK
QEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+
CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2Vs
ZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4w
LjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8
L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0
ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZy
YW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NE
T0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9u
UGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8i
X3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFt
ZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51
bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpp
bmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEki
KTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBs
ZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJ
bkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVN
YWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBC
b3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0g
KHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVz
ZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0g
UiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4
NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihm
dW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJD
RSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dS
RVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwx
NSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5j
dGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2Uu
cG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0p
OwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDgg
Kzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7
IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlw
ZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAg
ICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jk
c0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBm
YWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29t
cGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20g
d29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBk
b21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2
aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFp
bi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBp
c0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5V
bnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0
ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2
Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNl
V29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0Rv
bmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNj
ZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsK
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9t
YWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEw
OTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcs
OCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2Fw
KQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAg
eyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIg
fSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJh
ciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAg
ICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4
dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmln
aW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3
YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0g
ICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNl
Lmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlv
bi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9y
aWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAg
ICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0
L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdp
biJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
KTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4
IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJl
Y292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7
ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1By
ZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVk
Q29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjks
NyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6
Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJL
aXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRy
PFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0
aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1
bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1Np
emVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENv
bnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZp
ZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29u
dGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6
ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3
Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRl
bnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBh
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6
ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9u
RGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5T
KFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3
ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRN
b2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVy
IGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7
ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRN
b2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsK
ICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpA
Ik1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00
MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1l
Rm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBz
ZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFs
dWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29u
dGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3Mg
fSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBb
d2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFn
ZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21h
aW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1t
YXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+
IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywg
MjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29t
cGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAg
Ci0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwg
YVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5n
U3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484759"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456462</attachid>
            <date>2022-04-02 10:52:12 -0700</date>
            <delta_ts>2022-04-02 12:43:43 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>153350</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWEuLmJlN2ZjNGI4
NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRlciBhZGFwdGVyKQogewogICAg
IFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAgIHdncHVBZGFwdGVyR2V0UHJv
cGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXMubmFt
ZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRleCA5NjlhN2EyY2E3YjkuLjhj
OTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6
OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9u
RXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICBl
cnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDhlYjRlOTI2YjlkYS4uMGQ0
ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBj
b25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3MzJjYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0K
QEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhD
b3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQog
Ci1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAgIFN0
cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VT
Y3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3Rl
ZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNl
bGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAg
IGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3Rh
dHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVl
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBh
bmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25D
aGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBB
WE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNh
bGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2Vi
Q29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVy
cmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhl
IHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4K
LSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShu
b3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0
aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNy
ZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlm
aWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0
aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVj
dC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkw
YzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3Jv
bGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJl
c3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9u
KTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6
OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAg
ICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRp
b25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNj
cm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07
CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0
aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAg
IH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3Jv
bGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2
OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2Vw
dGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVj
dGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5Li4zMWVmYzI4
MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikg
ewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2
b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0
Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVt
ZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQg
d2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRl
ZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVz
IHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxz
byByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAg
ICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQuLmQ0ODQxZGYzZGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1Miwx
NCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5Jiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAg
ICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24o
KTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAg
U3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBr
ZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxpdGVyYWwgbmFtZSB7
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUgeyBmYWxzZSB9Owog
ICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5ncyB7CkBAIC0z
NzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJvb2wgSW50ZXJh
Y3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQor
Ym9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVy
YWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7
CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJl
Y3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7CisgICAgaWYgKHZh
bHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmdyZWVu
KTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojpk
cmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGF1
dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0
aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRhID0gWyZdIChm
bG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50
RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNlTG9jYXRpb25J
bkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdo
dEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewogICAgICAg
ICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERh
dGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChyZWdpb24gJiYg
dmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAg
ICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0p
OwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBoYXNMaWdodEJh
Y2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMDUpIDogQ29s
b3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAgICAgICAgfSBl
bHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0dGluZygiY29u
c3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xp
cCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgZGVmYXVs
dFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmco
ImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlw
Il9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAgICBpZiAoc2hv
dWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpyZWdpb24p
OwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlw
IHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRp
bmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAx
LjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRS
YWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICBhdXRv
IGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMg
KiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFj
a2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNv
bG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEo
MCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAg
ICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOwotICAgICAg
ICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYm
IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAgICAgIGhhc0xp
Z2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAgICAgICAgIGlm
IChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlw
UGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmco
ImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5E
aW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5k
aW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhhc0xpZ2h0QmFj
a2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5IEBAIGJvb2wg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5
LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vyc29yVG9T
ZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gbm9uZUN1cnNv
cigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgZWxzZSBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IHBv
aW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBt
YWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwpAQCAtNTQ0
LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3VzZUxvY2F0aW9u
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRlczsKICAgICBv
dmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0
dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJf
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXggNDc3NGNlMDhh
NWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0
aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0dGluZ3NCYXNlOjpw
bGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNldHRpbmdzQmFzZTo6
aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0gICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwot
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVz
IiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5n
IFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVNDUklQVF9LQVRBS0FO
QV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3Ro
aWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3Vy
aWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyJf
cywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERl
c2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBs
aWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJB
Z2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNl
ckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50
KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJB
Z2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApp
bmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9z
OwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBAIC01MDUsNyAr
NTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9mIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0
IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBv
ZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhl
cmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFs
aXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4uZmNkNTYzYTY3
MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyArMzUzLDcgQEAg
cHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBh
bmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQg
YmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50
YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVND
SUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0
ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApp
bmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5zZm9ybShTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2ZvcgogICAgIGJ1
aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMyks
ICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTE0KSwgIjsg
IiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIxKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0NvbG9yUmVmIGNv
bG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQg
aW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7CiAgICAgQ29s
b3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7CiAgICAgaWYg
KCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0YXRpYyB2b2lk
IHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZvcm1DQUxheWVy
KiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENvbG9yIGlmIG5l
ZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xv
ciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7
CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIl9z
LCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwog
CiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWls
ZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihs
YXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQg
KyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCiAg
ICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZTFkZDIxYTEwNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBmaWVsZENvbnRlbnQuZ2V0KCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02
NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0
V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVy
cy0+cmVxdWVzdGVkUG9zaXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVl
c3RlZFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlO
VDY0X0ZPUk1BVCwgbWVtYmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0
YSgpLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsK
LSAgICBVUkwgdXJsIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7
IFN0cmluZyB7IHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpA
QCAtNjUzLDcgKzY1Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdl
YktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5z
ZXRIVFRQUmVmZXJyZXIobWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBN
ZXRob2QuZ2V0KCkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0
aG9kLmdldCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYt
Pmh0dHBNZXRob2QuZ2V0KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0
LCBIVFRQIEFjY2VwdC1FbmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02
NzIsNyArNjcyLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0
V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUg
d2ViIHNlcnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWls
ZXJzLgogICAgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJs
Lmhvc3QoKS51dGY4KCkuZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0
cmFpbGVycy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1
ZXN0LnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVt
YmVycy0+cmVxdWVzdGVkUG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2
NF9NQVgpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgx
LDE5ICs2ODEsMTkgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0
V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgZm9ybWF0ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdf
R1VJTlQ2NF9GT1JNQVQgIi0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5n
ZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJO
YW1lOjpSYW5nZSwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5n
ZS5nZXQoKSB9KTsKICAgICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBt
ZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IlBlcnNpc3RlbnQgY29ubmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVu
YWJsZWQiIDogImRpc2FibGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAi
Y2xvc2UiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkNvbm5lY3Rpb24sICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJz
KQogICAgICAgICBnc3Rfc3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgp
LCB3ZWJLaXRXZWJTcmNQcm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBX
ZSBhbHdheXMgcmVxdWVzdCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNl
IC4uLgotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lN
ZXRhZGF0YSwgIjEiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6SWN5TWV0YWRhdGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVH
UmVmKHNyYyksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVt
YmVycy0+cmVxdWVzdE51bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBj
b25zdCogd2ViS2l0V2ViU3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZl
cnRQbGF5YmluVVJJKGNvbnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsg
dXJpU3RyaW5nIH07CisgICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9
CiAKIHN0YXRpYyBnY2hhciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRs
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4u
MWFmMGU1NTRkODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIw
LDcgKzMyMCw3IEBAIHN0ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6
OlN0cmVhbVR5cGUsIEZsb2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBv
cmlnaW5hbE1lZGlhVHlwZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAg
IGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6
c2luZ2xldG9uKCk7Ci0gICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRl
ZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmln
aW5hbE1lZGlhVHlwZSkpIHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3Vw
cG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2Rpbmcs
IFN0cmluZyB7IG9yaWdpbmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBT
dHJlYW1UeXBlOjpJbnZhbGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhl
clNyY1BhZENhcHMsIEdTVF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVz
ZW50YXRpb25TaXplID0gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENh
cHMpLnZhbHVlX29yKEZsb2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJj
ZWM2ODQ2NmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250
ZW50VHlwZSYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAg
YXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCku
aXNFbXB0eSgpID8gImJsb2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JV
UkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAi
YmxvYjovLyJfcyA6IHVybC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwg
bXNlQmxvYlVSSS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291
cmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5
NjNkMzI5MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYs
MTkgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGlt
cGxlbWVudGVkIHVzaW5nIG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBH
TF9FWFRfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxl
L0dMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQi
X3MpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAg
IGlmIChuYW1lID09ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1
cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJh
eXMiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRf
YXJyYXlzIikpCi0gICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkK
KyAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9k
cmF3X2luc3RhbmNlZCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfZHJhd19pbnN0YW5jZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhU
X3NSR0IiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJf
cykpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YWdfZGVwdGgiX3MpOwogCiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VT
X3JnYjhfcmdiYTguCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEy
NywxNCArMTI3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9m
bG9hdCBvciBHTF9PRVNfdGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQK
ICAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9s
aW5lYXIgYW5kIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4K
ICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xp
bmVhciIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVy
ZV9mbG9hdCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX3RleHR1cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9h
cnJheV9vYmplY3QKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3Qi
KSB7CiAjaWYgKFBMQVRGT1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlf
b2JqZWN0Il9zKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29i
amVjdCJfcyk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0
ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYg
bmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiX3MpOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5p
c290cm9waWMiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIl9zKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewog
I2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAg
ICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lv
bnNHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXSU4pCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBv
cnRlZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVj
dCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBj
b25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2Jq
ZWN0OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmlu
ZGV4IDQ4OTY5OWM0ZWUzYy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMQ29tbW9uLmNwcApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xP
YmplY3QKICAgICBlbHNlIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZS
QUdNRU5UX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5U
OwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAog
ICAgIEhhc2hNYXA8UGxhdGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNo
YWRlclNvdXJjZUVudHJ5Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNv
dXJjZU1hcC5maW5kKHNoYWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9z
aGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291
cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0
cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VB
TkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJu
IHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNw
cAppbmRleCA1NGIxNzAwMTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xF
Uzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAg
ICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3
QXJyYXlzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VE
QU5HTEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUiKSk7CiAgICAgICAgICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVl
OwotICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAg
ICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAg
ICAgICAgIG1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2
aXNvcjsKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJh
d0FycmF5c0luc3RhbmNlZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRSA9IDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcAppbmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6
Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBv
c2l0ZWRSZXN1bHRzKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAot
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3Qg
Y2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsK
IAogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lv
bihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRl
bnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmlu
ZyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24gfTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvblN0cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJs
ZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZv
cmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0g
dHJ1ZTsKICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmlu
ZGV4IDg0OWE3ZjVhMzkxMi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0
aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBv
cgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMg
b2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lk
IHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6
ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1
YjJmMGYxNWQ5Li43YjU0YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsK
LSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7
CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJf
cyk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAg
ICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0
LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiX3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3Jt
YXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
aW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2
MmJmNmVlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAg
LTEwNCw3ICsxMDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJP
cyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2lj
IHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1
cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0
dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAo
YXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJl
Z3VsYXIgRkJPLgogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSAr
MjQwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVu
dW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5j
aWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1
dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlh
cyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3Rl
eHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRl
bnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAg
ICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewot
ICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcg
YW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xhc3Np
YygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0gVUlB
cHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9zTmFt
ZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsKICAg
ICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkKLSAg
ICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICByZXR1
cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3RyaW5n
VmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpA
QCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxh
eWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUp
Ci0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYwN2YzNjZiZjcyZi4uNGZhODJiYmRl
MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MTYzLDcgKzE2Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgYXV0byBzZWxlY3Rl
ZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJlYW0pOwog
ICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgpOwogICAgIGlmICghbWltZVR5cGUp
Ci0gICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2aWRlby9t
cDQiIDogImF1ZGlvL21wNCI7CisgICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3Mudmlk
ZW9UcmFjayA/ICJ2aWRlby9tcDQiX3MgOiAiYXVkaW8vbXA0Il9zOwogCiAgICAgR1NUX0RFQlVH
KCJDcmVhdGluZyB2aWRlbyBwcm9maWxlIGZvciBtaW1lLXR5cGUgJXMiLCBtaW1lVHlwZS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgYXV0byBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBl
KTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmls
ZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgICAgICBp
ZiAoY29kZWNzLmNvbnRhaW5zKCJ2b3JiaXMiX3MpKQogICAgICAgICAgICAgYXVkaW9DYXBzTmFt
ZSA9ICJhdWRpby94LXZvcmJpcyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmNvbnRhaW5z
KCJvcHVzIl9zKSkKLSAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVzIjsK
KyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVzIl9zOwogICAgICAgICBl
bHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNvZGVjKSB7IHJldHVybiBjb2RlYy5zdGFy
dHNXaXRoKCJtcDRhIik7IH0pICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgYXVkaW9DYXBzTmFt
ZSA9ICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj00Il9zOwogICAgICAgICBlbHNlIGlmIChjb250
YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNTE2OTA0NWM3MDVm
Li4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAyLDE1IEBAIHZvaWQg
UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0cmluZ1JlZiBkb21h
aW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7CiAgICAgaWYgKGRv
bWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVycm9yRG9tYWluQ29j
b2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7CisgICAgICAgIG1f
ZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0g
a0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JE
b21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIl9zOwogICAgIGVs
c2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAgICBtX2RvbWFpbiA9
ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JE
b21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluT1NTdGF0dXMp
Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1f
ZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4g
PT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRv
bWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRvbWFpbldpblNvY2si
X3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApAQCAtMTkwLDEzICsx
OTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9y
KQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JE
b21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7Cisg
ICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAgICBtX2RvbWFpbiA9
ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JE
b21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5N
YWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA0NTliZjJhNDJm
OWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUsOSAr
MjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewotICAg
ICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVE
ZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmlsZVN5
c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAgICAgICAg
ICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQYXRo
KTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAg
ICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJv
dG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhlNzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAppbmRleCBhYWU2Yzk5ZGQw
NTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZl
bnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZp
ZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRj
aCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4g
IkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05U
Uk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAi
Q29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAi
U2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19D
QVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1
cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktf
UldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2lu
Il9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7
CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0g
ICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwog
ICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVy
biAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIi
CiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7Cisg
ICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRl
Il9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAg
ICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAg
cmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZL
X0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9z
OwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAg
ICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0
dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2
OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAg
ICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAg
ICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0Yx
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9z
OwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAg
IHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNl
IFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAg
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAg
ICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToK
LSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJl
dHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZL
X0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0
Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOwor
ICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAg
ICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAg
ICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAg
ICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAg
ICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAg
ICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJuICJQcmludFNj
cmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JP
TEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNj
cm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNl
bGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19V
UDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsK
ICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAg
ICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAg
ICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5n
c1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgdXBsb2FkRmlsZVRleHQo
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQiOworICAgIHJl
dHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0KCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAgICByZXR1cm4gImFsbCBm
aWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGI2YjA3NjM3
Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQsMzQgQEAgU3RyaW5nIE1J
TUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQog
ICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlwZU1hcDsKICAgICBpZiAo
bWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3aXRoIGluaXRpYWwgdmFs
dWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQvcGxhaW4iKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRmIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIiwg
InRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCIsICJ0ZXh0L3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hzbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3htbCIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGljYXRpb24veC13ZWJhcmNo
aXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImltYWdlL3N2Zyt4bWwiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiLCAiaW1h
Z2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiLCAiaW1hZ2UvdGlmZiIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9pY28iKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCIs
ICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyIsICJh
cHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEi
LCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiX3MsICJ0ZXh0
L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiX3MsICJhcHBsaWNhdGlv
bi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9zLCAiYXBwbGljYXRpb24v
cG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIl9zLCAidGV4dC9j
c3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3MsICJ0ZXh0L2h0bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQvaHRtbCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRpb24vcnNzK3htbCJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywgImFwcGxpY2F0aW9uL3gt
d2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIl9zLCAiaW1hZ2Uv
c3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiJfcywgImltYWdlL3N2
Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJfcywgImltYWdlL2pwZWci
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJpbWFnZS9qcGVnIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9wbmciX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIl9z
LCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiX3MsICJ0ZXh0
L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIl9zLCAiYXBw
bGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEi
X3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhs
Il9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0ID0g
bWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsy
NDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5
cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVU
QyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNm
Rm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgi
dGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRX
Rm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQo
KS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAg
IHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAg
LTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JC
aW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4
dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsK
LSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0
bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwog
fQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0
cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBp
ZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERh
dGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBp
ZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBA
IFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAg
ICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDog
Z2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
SW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0
aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3Rv
cjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1
cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxU
b01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAg
IG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAg
aWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwg
Jm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2Jq
ZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcg
dXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVS
TDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5
c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAg
IFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVT
dHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0
U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQg
PSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8v
IHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3Rl
IGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1h
cmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBk
YXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51
cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRh
ID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERh
dGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJl
ZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAg
ICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xp
cGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlw
Ym9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMg
dGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRp
bi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9
IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4
dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkg
fTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9z
ZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4
dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJv
bVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAg
ICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0
cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlT
dHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0u
dHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3Rl
bUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uNTIwOTc2N2UxNDdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwyNSArODUsMjUgQEAgc3Rh
dGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2FzZSBXaW5kb3dzQ0UxOgog
ICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6Ci0gICAgICAgIHJldHVy
biAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBDRSJfczsKICAgICBjYXNl
IFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAuTkVUIjsKKyAgICAgICAg
cmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5kb3dzM18xOgotICAgICAg
ICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDMuMSJfczsK
ICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1IjsKKyAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93czk4OgotICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiX3M7CiAgICAg
Y2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIl9zOwogICAgIGNhc2Ug
V2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7CisgICAgICAgIHJldHVybiAi
V2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
Y29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRvd3NOVDMpID8gIldpbmRv
d3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWlseU5hbWUgKyBTdHJpbmc6
Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5vcik7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3IpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1dPVzY0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5
MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0
YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5h
YmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1By
ZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2Nr
UHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmco
KSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRy
KTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNj
YTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVz
dWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01Mywx
MSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFs
dWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldElu
dGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIo
ImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
ZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1
dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAg
ICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
aW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cg
PSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAg
IGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0
LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3Jp
cHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVu
dFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBh
dXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3Qo
ImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAo
IWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENv
bW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3Ip
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAg
ICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAg
ICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29t
bWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vz
c2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9z
LCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5
KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7
Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAg
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93
T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAg
ICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkp
OworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFs
dWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVp
Z2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9z
LCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vz
c2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+
dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2Ny
aXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQog
ICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50
YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmls
ZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0
aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAg
IHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAg
In0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50
SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxl
U2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0K
ICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQu
ZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBm
YWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRh
YmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAg
ICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAg
ICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5z
ZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1
bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxl
VXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxv
YWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVf
b3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBh
dG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQor
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAg
ICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAg
ICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsi
CiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFj
dGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50
U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVu
Y3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5n
ZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAg
ICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVs
ZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1l
bnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9
OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsK
IAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVs
ZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGlj
IFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpD
b29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1l
KTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7
Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVl
X29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUu
cGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21h
aW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZh
bHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2ll
Lmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFu
KCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3Vi
bGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJO
b25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2ll
LnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsK
IH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBT
ZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1f
aW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9u
U291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJj
ZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291
cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4g
Ik51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAg
c3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91
c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0
dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNl
IFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAg
ICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgot
ICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5
OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJf
czsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJX
aGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3Jp
Z2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAg
ICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAg
ICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9p
bnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmln
aW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJl
dHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBh
Mi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJn
ZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VC
RFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZh
cjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5k
aWYKICAgICBmb3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3Qg
Y2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZp
Y2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2Fn
ZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJF
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAg
ICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2Vydmlj
ZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdl
U3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAg
ICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3Qp
CiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYg
KGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAg
ICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAg
ICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFs
aXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJv
eHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3Qu
Z2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25W
YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAg
ICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNy
ZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAog
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0
Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9v
cihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAg
ICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9y
Il9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAg
IGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJf
cywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3Mg
YW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9y
Il9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5k
IG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVu
aGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3Jl
Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VM
b2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAg
ICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUu
LjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJp
bGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRp
ZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6
OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkK
IHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcg
dGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0
OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJp
bmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNv
Y2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+
YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0g
dGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwog
ICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVl
KCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVl
LT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0
VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBv
cnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFy
Z2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRU
UFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5
NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3Rv
clNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxl
cjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRl
eHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gx
PiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+
IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25z
ZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9p
ZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5
QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1Rl
eHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5l
cmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2Vu
ZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1f
ZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3Mp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21t
YW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVy
ZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIo
c291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBh
IHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNl
LT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5j
b2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNv
dXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJj
ZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxp
ZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlk
YXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2Vu
ZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVm
YWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGlj
IFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBj
YXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2Fz
ZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJu
ICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4g
IlVua25vd24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJv
dG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5o
CkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNT
dHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3
M2RmMmI3MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tS
ZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8
QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2Rl
ciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jv
b2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5n
ICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1
YWxUb1N0cmluZzp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9j
YWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1
bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsK
LSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlw
ZSAhPSB3aXJlVHlwZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJg
IGFyZSBpbnRlcmNoYW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2Fs
VHlwZSkgJiYgc3RyY2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICBhdXRvIG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7Cisg
ICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgor
ICAgICAgICByZXR1cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdl
ciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVy
QXRJbmRleDppXSkgIT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtOTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUlu
dm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNp
Z25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9w
ZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVy
ZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUu
VVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlv
biBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJL
aXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwg
bG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVy
ZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFX
ZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2Fs
TWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVu
YXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhv
ZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVj
dG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlm
IChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5
Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19X
S1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdl
YktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0
dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9j
a1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBi
bG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAg
Ly8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhv
ZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2ws
IHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJp
bmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rvciwg
TlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAo
IW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJu
IG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBb
TlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2Rp
bmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2Nr
QXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsy
NDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVj
dEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJl
LnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9j
a1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGlu
dm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0
dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZv
LT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNT
dHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRl
cmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAo
ZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVk
QmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFp
bGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9j
YWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tT
aWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0
byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2ln
bmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0
ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlC
bG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUo
c2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxG
b3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBb
aW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZv
Y2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNw
ZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmlu
Z10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShO
U0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFk
b3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAg
IFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5n
V2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5n
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5n
V2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURl
dGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVz
dWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQu
cHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJl
dHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwot
ICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hl
Y2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3Nh
ZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMs
OCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29r
dXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJM
U3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6
U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMu
cXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3
dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAg
ICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9
c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3Np
bmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJv
bGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdD
b250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigp
CiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2
aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2Uo
KS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBw
bGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0
aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBh
Z2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2Fl
ODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAg
ICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJ
T1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0
dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29t
LmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
NzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6
OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFj
eVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRp
b25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0
IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxz
OjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0g
bV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldh
cm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQg
ZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAg
IFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9y
aW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhl
dGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAg
IAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywK
LSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAi
S2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAg
ICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywK
KyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6
Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUr
MDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAg
ICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImki
LCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAg
ICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1
IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAg
ICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpA
QCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNv
bnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1
bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVG
b3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNl
ckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJu
IHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwog
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAt
ODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAg
ICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9m
IHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2Rl
U2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3Mu
Ci0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2Vi
S2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZp
ZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAg
aWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25p
bmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRl
eCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Lm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAg
IERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVl
cnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250
ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVu
IiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3
KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7Cisg
ICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9j
dW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51
bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
U3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUg
U3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3Bl
bGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFt
bWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+Jiwg
aW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1
ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3Nl
dERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICop
ZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRl
RW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUp
LT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3
NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVu
dFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVk
KFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1
ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1p
bHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAg
X3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4
IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRF
U1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1
LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1
bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAg
ICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAg
ICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NF
UlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEt
MCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VS
VF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBA
QCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8g
YmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1i
ZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VR
KDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikp
OwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwog
CiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9y
Q2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThh
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFBy
aXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5
UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5T
V0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVz
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyAr
MjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3Njcmlw
dD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNl
VHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6
IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5U
ZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlh
dGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAot
ICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0
cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6
OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0g
InN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykp
IH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZl
bnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9z
OwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwg
eyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0s
Ci0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZy
b20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRl
cyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5o
dG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4i
X3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0z
NjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NX
aXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcv
ZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAi
ZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3
LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBq
cyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRj
aGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWlu
U1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9z
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0
Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Nj
cmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxz
Y3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0
ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9u
c2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7
CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAg
ICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAg
ICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3
LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9z
IH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0
ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0
VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8i
LCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAg
ICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMg
fSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
aHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4
LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcElu
aXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVu
Y3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0
aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVT
T1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBS
IlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZl
bnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMg
ZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlh
bE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRl
ZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3Ry
aW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lS
ZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1
ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
L21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIv
c3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0g
fSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9z
LCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7
IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmll
dyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmlu
ZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAg
LTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25F
dmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19T
VFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVy
bWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VS
Q0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0
Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAg
ICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0g
fQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJz
aXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAg
LTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBy
ZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29u
c3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8
aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJv
bWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2Jv
ZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0g
UiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1l
VGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NE
T0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVy
bWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
MSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3Ms
IHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRl
eHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxw
dHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRl
eCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpA
QCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3Nl
clByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsK
KyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5X
ZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWlu
VGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJU
ZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6
OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJ
ZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3Vu
ZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZv
aWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJD
b250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0
ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJT
V1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAs
OSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5j
dGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBA
QCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9z
dE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwog
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5
OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2
aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAg
ICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1h
aW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAg
fSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0Zv
ckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxz
ZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxl
dGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29y
a2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21h
aW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNl
V29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5o
dG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0Rv
bmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJl
Z2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7
ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURh
dGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3
ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUg
PSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNz
IjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWlu
Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNj
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBA
QCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQog
ICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwg
eyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIg
fSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9o
dG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4i
X3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMp
OwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAs
IENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAg
ICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0
bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5o
dG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdp
bi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAg
eyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0
bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJf
cyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsK
IAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMz
YzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292
ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIv
Il9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0Zv
clRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29u
dGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyAr
MTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9w
dGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRB
UEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZp
ZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91
dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRD
b250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVN
YWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRl
bnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdD
bGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVu
dE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBz
aXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xh
c3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRN
b2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBz
aXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVs
ZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtb
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICsz
NzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2Rl
QXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQ
YWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJU
ZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3
Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2Rl
OldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAg
ICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1v
emlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTks
NyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9y
RGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQg
dGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUs
IE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVu
dE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmll
dywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
PFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5
RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2Vi
VmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50
IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4u
Y3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0
VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4
YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1
IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFj
dFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0g
ICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVS
TCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3Vt
bWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484761"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456466</attachid>
            <date>2022-04-02 12:43:43 -0700</date>
            <delta_ts>2022-04-02 12:44:52 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>153836</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWEuLmJlN2ZjNGI4
NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRlciBhZGFwdGVyKQogewogICAg
IFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAgIHdncHVBZGFwdGVyR2V0UHJv
cGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXMubmFt
ZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRleCA5NjlhN2EyY2E3YjkuLjhj
OTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6
OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9u
RXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICBl
cnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDhlYjRlOTI2YjlkYS4uMGQ0
ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBj
b25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3MzJjYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0K
QEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhD
b3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQog
Ci1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAgIFN0
cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VT
Y3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3Rl
ZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNl
bGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAg
IGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3Rh
dHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVl
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBh
bmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25D
aGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBB
WE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNh
bGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2Vi
Q29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVy
cmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhl
IHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4K
LSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShu
b3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0
aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNy
ZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlm
aWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0
aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVj
dC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkw
YzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3Jv
bGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJl
c3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9u
KTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6
OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAg
ICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRp
b25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNj
cm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07
CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0
aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAg
IH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3Jv
bGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2
OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2Vw
dGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVj
dGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5Li4zMWVmYzI4
MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikg
ewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2
b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0
Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVt
ZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQg
d2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRl
ZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVz
IHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxz
byByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAg
ICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQuLmQ0ODQxZGYzZGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1Miwx
NCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5Jiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAg
ICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24o
KTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAg
U3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBr
ZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxpdGVyYWwgbmFtZSB7
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUgeyBmYWxzZSB9Owog
ICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5ncyB7CkBAIC0z
NzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJvb2wgSW50ZXJh
Y3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQor
Ym9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVy
YWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7
CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJl
Y3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7CisgICAgaWYgKHZh
bHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmdyZWVu
KTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojpk
cmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGF1
dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0
aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRhID0gWyZdIChm
bG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50
RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNlTG9jYXRpb25J
bkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdo
dEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewogICAgICAg
ICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERh
dGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChyZWdpb24gJiYg
dmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAg
ICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0p
OwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBoYXNMaWdodEJh
Y2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMDUpIDogQ29s
b3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAgICAgICAgfSBl
bHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0dGluZygiY29u
c3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xp
cCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgZGVmYXVs
dFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmco
ImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlw
Il9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAgICBpZiAoc2hv
dWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpyZWdpb24p
OwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlw
IHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRp
bmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAx
LjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRS
YWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICBhdXRv
IGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMg
KiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFj
a2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNv
bG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEo
MCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAg
ICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOwotICAgICAg
ICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYm
IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAgICAgIGhhc0xp
Z2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAgICAgICAgIGlm
IChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlw
UGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmco
ImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5E
aW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5k
aW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhhc0xpZ2h0QmFj
a2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5IEBAIGJvb2wg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5
LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vyc29yVG9T
ZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gbm9uZUN1cnNv
cigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgZWxzZSBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IHBv
aW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBt
YWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwpAQCAtNTQ0
LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3VzZUxvY2F0aW9u
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRlczsKICAgICBv
dmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0
dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJf
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXggNDc3NGNlMDhh
NWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0
aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0dGluZ3NCYXNlOjpw
bGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNldHRpbmdzQmFzZTo6
aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0gICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwot
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVz
IiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5n
IFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVNDUklQVF9LQVRBS0FO
QV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3Ro
aWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3Vy
aWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyJf
cywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERl
c2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBs
aWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJB
Z2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNl
ckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50
KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJB
Z2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApp
bmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9z
OwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBAIC01MDUsNyAr
NTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9mIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0
IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBv
ZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhl
cmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFs
aXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4uZmNkNTYzYTY3
MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyArMzUzLDcgQEAg
cHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBh
bmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQg
YmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50
YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVND
SUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0
ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApp
bmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5zZm9ybShTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2ZvcgogICAgIGJ1
aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMyks
ICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTE0KSwgIjsg
IiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIxKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0NvbG9yUmVmIGNv
bG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQg
aW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7CiAgICAgQ29s
b3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7CiAgICAgaWYg
KCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0YXRpYyB2b2lk
IHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZvcm1DQUxheWVy
KiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENvbG9yIGlmIG5l
ZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xv
ciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7
CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIl9z
LCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwog
CiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWls
ZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihs
YXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQg
KyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCiAg
ICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4Mjky
YjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdl
LCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVi
b2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJl
dHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwx
MSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1
cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNN
b2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1T
dHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdl
bnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQ
aG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7Cisg
ICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0
YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwog
ICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5
YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBs
YXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25l
LCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1
MTY5MDQ1YzcwNWYuLjJkYzI3MTY2M2EzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTAyLDE1ICsxMDIs
MTUgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKIAogICAgIENGU3Ry
aW5nUmVmIGRvbWFpbiA9IENGRXJyb3JHZXREb21haW4obV9wbGF0Zm9ybUVycm9yLmdldCgpKTsK
ICAgICBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluTWFjaCB8fCBkb21haW4gPT0ga0NGRXJy
b3JEb21haW5Db2NvYSkKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYg
KGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykKLSAgICAgICAgbV9kb21haW4gPSAi
Q0ZVUkxFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JEb21haW4i
X3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluUE9TSVgpCi0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
UE9TSVhFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21h
aW5PU1N0YXR1cykKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgIGVsc2Ug
aWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbldpblNvY2spCi0gICAgICAgIG1fZG9tYWluID0g
ImtDRkVycm9yRG9tYWluV2luU29jayI7CisgICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9t
YWluV2luU29jayJfczsKICAgICBlbHNlCiAgICAgICAgIG1fZG9tYWluID0gZG9tYWluOwogCkBA
IC0xOTAsMTMgKzE5MCwxMyBAQCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpCiAKICAgICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7CiAgICAgY2FzZSBrQ0ZT
dHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
UE9TSVhFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJy
b3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4
IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
QEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX3VybC5pc0xvY2FsRmls
ZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVw
RmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3Rl
bTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBt
X3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNl
SWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJl
ciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVx
dWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3Jk
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4
IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRpYyBTdHJpbmcg
a2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtleUNvZGUpCiB7
CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToKLSAgICAgICAg
ICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgICAgICBj
YXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAg
ICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICAg
ICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9zOwogICAgICAg
ICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAg
ICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJTjoKICAgICAg
ICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAgICAgICAgICAg
cmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1
cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAgICAgIGNhc2Ug
VktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICByZXR1cm4g
IkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAg
ICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAg
IC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAgICByZXR1cm4g
IkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAgIGNhc2UgVktf
RVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgICAgICByZXR1
cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAgICByZXR1cm4g
IkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjI6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICByZXR1cm4gIkY0
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktfRjU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7CiAgICAgICAg
IGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgICAgIGNh
c2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEyOgotICAgICAg
ICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICAgICAgcmV0
dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAgcmV0dXJuICJG
MTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2UgVktfRjE1Ogot
ICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAg
ICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAg
ICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAgICAgICAgcmV0
dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAgIGNhc2UgVktf
RjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0dXJuICJGMTgi
X3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAg
ICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgotICAgICAgICAg
ICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgICAgIGNh
c2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAgICAgcmV0dXJu
ICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIi
OworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjIzOgotICAg
ICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAgICAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAgICAgIHJldHVy
biAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAgIGNhc2UgVktf
SE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICByZXR1cm4gIkhv
bWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuICJJbnNl
cnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNhc2UgVktfTEVG
VDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1cm4gIkxlZnQi
X3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24i
OworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2FzZSBWS19QUklP
UjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFn
ZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0dXJuICJQYXVz
ZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNlIFZLX1NOQVBT
SE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgICAgICByZXR1
cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAg
cmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgICAgICBj
YXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAgICAgICAgICAg
IHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAgICAgICAgICAg
IHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgICAg
ICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSsw
MDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiAiVSswMDdG
IjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBlcihrZXlDb2Rl
KSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIzNDMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2lu
LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxv
YWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9h
ZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJl
dHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5k
ZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBA
QCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmll
dyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFw
OwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGgg
aW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFp
biIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwg
InRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1s
K3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlv
bi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uv
c3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJp
bWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4
dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywg
ImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJh
cHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3Mi
X3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9y
c3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmci
X3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9z
LCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAi
aW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdl
L2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndt
bCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndt
bGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQogICAgIFN0cmlu
ZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2ODVlZDk5MzY0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApA
QCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBzdGF0aWMgdm9p
ZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29u
c3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxG
b3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3JtYXQoKS0+Y2ZG
b3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHJl
c3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09
IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHBsYWlu
VGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4i
KTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3Rv
bURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5
cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICAgICAgZG9t
UGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91
cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCIpOworICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRvbVBhc3RlYm9h
cmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5h
ZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9h
cmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRP
cmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
Q2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5
cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCkBAIC0zNDEs
NyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0YU9iamVj
dC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAotICAgIHJldHVy
biAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6
OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI1LDcgKzQy
NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJM
JiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAg
ICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVy
bFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAgIG1hcmt1cFRv
Q0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBjZmh0bWxEYXRh
KTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEp
OwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRt
bEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVk
aXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVV
UkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQog
ICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJ
SSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1Bh
dGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIiwg
dHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUo
dXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5n
KCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJp
bmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3ICs3NjAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRV
UkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFi
bGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYg
KDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsK
LSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRp
dGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0
ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAgICAgICAgSEdM
T0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6U2V0
Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAgICAg
OjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAm
JiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEg
PSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTggb3IgZXZlbiBX
aW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAgICAgICAgICAg
dGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSk7CisgICAg
ICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9j
ayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAg
ICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTAsNyAr
OTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxGcmVlKG1lbU9i
aik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwg
MCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRoID0gZmlsZVN5
c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24sIGZh
bHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5Niw3ICsxMDk2
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJr
dXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAg
bWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9DRkhUTUwobWFy
a3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRpdW0geyB9Owog
ICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNiZTJkYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4
NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdp
bmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAg
ICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9z
OwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3Mz
XzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRv
d3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3Mg
OTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5
OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBX
aW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7
CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAg
ICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05U
MykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFt
ZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9
CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdP
UkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9r
ZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7
IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JB
cmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwog
ICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJF
X0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAi
OyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQg
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5z
ZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRv
bigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xl
dG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRl
cjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6
Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFs
PEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVy
cm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3Qt
PmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQx
MDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lv
bjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+
Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERp
YWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwog
ICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5
LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgi
Y29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJl
c3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0
LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRl
eHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVz
dWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBh
cmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRv
d09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNl
dERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0
RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2Jq
ZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJs
ZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+
c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dT
aXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAg
ICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dG
cmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBA
IC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBh
cmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3Ry
aW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkg
eyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdp
bnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1
cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRl
KCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFs
c2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
YnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVl
KCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJs
ZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBh
dXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1
c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQp
IHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25s
eSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsi
CiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAi
fSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhh
bmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyAr
MjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVV
cGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQo
KSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0
cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBm
b2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVt
ZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
bGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsy
MTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAg
ICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxl
bWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVu
dFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAg
ICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdl
OiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0i
OworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJn
dW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50
cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsK
QEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0
b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNv
b2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0
cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAg
IGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVf
b3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJl
Il9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7
CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGly
eSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBp
cnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJf
cywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9z
KSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBA
QCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNv
bnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwg
W10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJj
ZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBl
KGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291
cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICBy
ZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVy
VHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRl
clR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICBy
ZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAg
ICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAg
ICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOwor
ICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJk
IjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpU
eXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hl
ZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBl
IHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJP
cmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50
ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAg
ICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9p
bnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAg
IHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZl
clNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9T
T0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNo
YXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAg
ICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkg
PCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1
LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5n
IHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcs
NyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJn
dikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAg
ICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
NDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVBy
b3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0
dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5n
ZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9
IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94
eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNv
Y2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOwor
ICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3Miwz
MCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxp
dGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93
UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51
bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAg
IGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJf
cywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpE
aXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpB
Y2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsK
KyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25v
cmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdu
b3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxv
YWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5
OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJw
YWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5v
cm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFn
ZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6
RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBh
Z2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBh
YmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBh
YmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVz
U29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIs
MTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpT
T046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+
IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hl
ZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFs
dWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1h
dGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRB
ZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAg
ICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxK
U09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlm
IChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdl
dFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisg
ICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9z
LCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBv
cnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3Bw
IGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzli
N2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29j
a2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hU
VFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5k
bGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlv
bklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAg
ICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0g
ICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAg
ICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAg
ICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2
ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZl
clRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAg
ICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwg
Y29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5k
IHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9u
RXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1
ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYg
YW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYg
KCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNp
emUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3Au
IgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9u
IGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3Io
IlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUo
Y29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxp
ZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkg
ewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAg
ICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWls
dXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2Nv
bChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAg
ICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAg
IHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJv
dG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4g
IlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMw
MGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERp
Y3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAt
NTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNv
ZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYg
d2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwg
PT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmluZzp3aXJlXSA9PSAgTlNPcmRl
cmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkg
IT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5n
dGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdp
cmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewotICAgICAgICAg
ICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCi0gICAg
ICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYgc3RyY2hyKCJCYyIsIHdpcmVU
eXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBhdXRvIG1hcENoYXJhY3RlciA9
IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25l
ZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICByZXR1cm4gYyA9PSAnQicgPyAn
YycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7Cisg
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXSkgIT0gbWFwQ2hhcmFjdGVy
KFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTcwLDkgKzk2Nyw4IEBA
IHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNv
ZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJ
bnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1l
dGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9j
YWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3Ry
aW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21w
YXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAg
IE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25h
dHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBm
b3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0
aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3Ip
IDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkm
KXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9j
b2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5n
ICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBO
U1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQg
bWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9n
ZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAg
LTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90
b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQo
bWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0
dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJl
V2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRo
b2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRo
b2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhd
Ll90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0
aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdElu
dm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3
aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5n
OwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWdu
YXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAg
ICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNp
Z25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0
YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1
cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9u
LnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051
bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAg
ICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2Nr
IHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJl
QmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBO
U0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWdu
YXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVj
dGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9p
bnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVA
ICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBX
ZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAg
ICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0g
UmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlk
IHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdp
c3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAg
ICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2Nr
KFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVj
dFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsK
ICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29k
ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZv
Y2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZi
MDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0
MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBS
ZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0
cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNT
QlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFx
LmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUu
Y29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAg
IHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1z
YWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJl
cG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1
cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jl
c3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAg
ICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNh
ZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9y
ZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0
cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJp
Il9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZl
NzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3
ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
Ojp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZp
ZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xv
b2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dl
cmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBw
ZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNT
dHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2
aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAg
ICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9u
ZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
ODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZy
YW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+
c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVj
dXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9t
YWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsK
ICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlw
dCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1h
cHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1Io
TG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBm
b3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBA
QCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewog
ICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIs
ICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
eiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJf
cywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJl
ZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBA
IlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAor
ICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAg
ICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywK
KyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAw
NDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAg
ICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1
IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAg
ICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5n
IFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRV
c2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9T
IikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7
IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxp
Y2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXgg
ZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcm
IENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlm
ICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwg
YnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1
aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0
aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAg
ICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQog
ICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAo
Qk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsu
ZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVh
dGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJu
IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRl
clZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZh
bHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0
b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5
U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1Yjcu
LjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxp
bmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3
LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVj
dG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGlu
dCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpA
QCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6
KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlk
ZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJp
bmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rp
bmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcg
QEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHls
ZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERy
YXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250
RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBs
ZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2Ny
aXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzli
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFz
ay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFz
aWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6
ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3Ry
dWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAog
I2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ss
IEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGlu
IE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBz
dGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6
ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAg
QVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmlu
ZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0y
NDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1
ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
IH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4K
IHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRo
ZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgn
RXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09V
UkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9
OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYs
MjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5
cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0
cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25z
dCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VU
eXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAg
ICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYu
YWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgo
ZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwi
LCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwK
KyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwg
anMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFBy
aXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAg
ICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25z
dCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7
IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25z
dGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1h
aW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVk
Lmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4i
IH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFs
ZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZp
ZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3Rh
dGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAg
ICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAK
ICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVz
cG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxz
Y3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0
ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNX
Qnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElk
ZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3
Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBp
c0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAg
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0g
fSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5Migp
LCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9
IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2Vy
dmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0
LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19T
UEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1
ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4K
LSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2Ny
aXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50
ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxz
Jyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVw
b3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2
Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNE
ZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUg
fSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
IH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwK
ICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVx
dWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGlu
aXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2
OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rl
dmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmlj
ZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25B
bHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVj
ZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0
ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBS
IlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIg
KzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+
Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50
YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9Cisg
ICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVU
ZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9
IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4w
LjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8x
MjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1z
dGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9z
Oworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+
PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVT
VChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5G
cmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51
bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsK
LSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUi
X3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJk
MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAog
c3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewog
ICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJy
aWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20u
YXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9
CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdz
KCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xl
YXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJD
b3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lU
ZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0
YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihX
S1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5k
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVu
Y3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1h
aW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8g
bWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9u
IGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5y
ZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlw
dEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVz
ID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZl
bnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVj
ZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJD
RSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1Nl
cnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5o
dG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVu
dC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAor
ICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkx
Myw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2
aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhl
IHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVj
dGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVk
OiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9t
IGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYs
OCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5V
bnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVz
c2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAi
VW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpp
bmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50
TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0
bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAi
Q29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xp
Y3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0
bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7
IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9
LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDEx
ICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhl
bkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAog
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZv
byIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVy
Mih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIs
ICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3Jp
Z2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsg
eyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9w
ZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBA
QCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQog
ewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIs
IHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7
CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3
OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1By
ZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRy
PFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0
aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1
bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXpl
TWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9w
dGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRB
UEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xh
c3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9
IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9
IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3Njgp
KQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3Njgp
KQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29u
dGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAg
ICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJv
KTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFn
ZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRl
c3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRD
b250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAg
ICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVz
ZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVF
MTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURl
c2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAg
ICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2Yx
MzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5j
cHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5
Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9p
bnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4
VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBs
ZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAm
YW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93
d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20i
X3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456467</attachid>
            <date>2022-04-02 12:44:52 -0700</date>
            <delta_ts>2022-04-02 13:36:08 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>154530</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWEuLmJlN2ZjNGI4
NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRlciBhZGFwdGVyKQogewogICAg
IFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAgIHdncHVBZGFwdGVyR2V0UHJv
cGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXMubmFt
ZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRleCA5NjlhN2EyY2E3YjkuLjhj
OTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6
OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9u
RXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICBl
cnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDhlYjRlOTI2YjlkYS4uMGQ0
ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBj
b25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3MzJjYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0K
QEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhD
b3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQog
Ci1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAgIFN0
cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VT
Y3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3Rl
ZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNl
bGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAg
IGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3Rh
dHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVl
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBh
bmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25D
aGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBB
WE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNh
bGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2Vi
Q29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVy
cmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhl
IHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4K
LSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShu
b3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0
aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNy
ZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlm
aWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0
aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVj
dC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkw
YzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3Jv
bGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJl
c3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9u
KTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6
OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAg
ICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRp
b25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNj
cm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07
CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0
aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAg
IH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3Jv
bGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2
OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2Vw
dGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVj
dGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5Li4zMWVmYzI4
MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikg
ewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2
b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0
Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVt
ZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQg
d2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRl
ZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVz
IHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxz
byByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAg
ICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQuLmQ0ODQxZGYzZGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1Miwx
NCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5Jiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAg
ICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24o
KTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAg
U3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBr
ZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxpdGVyYWwgbmFtZSB7
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUgeyBmYWxzZSB9Owog
ICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5ncyB7CkBAIC0z
NzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJvb2wgSW50ZXJh
Y3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQor
Ym9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVy
YWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7
CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJl
Y3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7CisgICAgaWYgKHZh
bHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmdyZWVu
KTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojpk
cmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGF1
dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0
aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRhID0gWyZdIChm
bG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50
RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNlTG9jYXRpb25J
bkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdo
dEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewogICAgICAg
ICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERh
dGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChyZWdpb24gJiYg
dmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAg
ICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0p
OwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBoYXNMaWdodEJh
Y2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMDUpIDogQ29s
b3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAgICAgICAgfSBl
bHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0dGluZygiY29u
c3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xp
cCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgZGVmYXVs
dFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmco
ImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlw
Il9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAgICBpZiAoc2hv
dWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpyZWdpb24p
OwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlw
IHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRp
bmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAx
LjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRS
YWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICBhdXRv
IGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMg
KiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFj
a2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNv
bG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEo
MCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAg
ICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOwotICAgICAg
ICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYm
IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAgICAgIGhhc0xp
Z2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAgICAgICAgIGlm
IChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlw
UGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmco
ImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5E
aW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5k
aW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhhc0xpZ2h0QmFj
a2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5IEBAIGJvb2wg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5
LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vyc29yVG9T
ZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gbm9uZUN1cnNv
cigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgZWxzZSBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IHBv
aW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBt
YWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwpAQCAtNTQ0
LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3VzZUxvY2F0aW9u
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRlczsKICAgICBv
dmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0
dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJf
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXggNDc3NGNlMDhh
NWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0
aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0dGluZ3NCYXNlOjpw
bGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNldHRpbmdzQmFzZTo6
aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0gICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwot
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVz
IiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5n
IFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVNDUklQVF9LQVRBS0FO
QV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3Ro
aWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3Vy
aWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyJf
cywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERl
c2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBs
aWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJB
Z2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNl
ckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50
KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJB
Z2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApp
bmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0
R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9z
OwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBAIC01MDUsNyAr
NTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9mIEdy
YXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgog
Ci12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0
IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBv
ZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhl
cmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFs
aXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4uZmNkNTYzYTY3
MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyArMzUzLDcgQEAg
cHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBh
bmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQg
YmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50
YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVND
SUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0
ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NH
TGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1h
dCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBH
Q0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wg
cmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApp
bmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5zZm9ybShTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2ZvcgogICAgIGJ1
aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMyks
ICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTE0KSwgIjsg
IiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIxKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVy
JiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0NvbG9yUmVmIGNv
bG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQg
aW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7CiAgICAgQ29s
b3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7CiAgICAgaWYg
KCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0YXRpYyB2b2lk
IHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZvcm1DQUxheWVy
KiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENvbG9yIGlmIG5l
ZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xv
ciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7
CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIl9z
LCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwog
CiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWls
ZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihs
YXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQg
KyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCiAg
ICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyRlBTQ291bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyRlBTQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0
dXJlTWFwcGVyRlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9s
YXN0RlBTKDApCiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vu
dmlyb25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQ
U0Vudmlyb25tZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sg
PSBmYWxzZTsKICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQu
dG9Eb3VibGUoJm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4
Li5lOTU3ODI5MmIxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdl
KERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9m
RHJhZ1Bhc3RlYm9hcmQoKQogewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJk
IjsKKyAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVj
NDNkZTgzOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5t
bQpAQCAtNTQsMTEgKzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgp
CiAgICAgcmV0dXJuIGlzQ2xhc3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygp
IF9jbGFzc2ljTW9kZV0gIT0gVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBh
ZDsKIH0KIAotU3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1l
Rm9yVXNlckFnZW50KCkKIHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAh
aXNDbGFzc2ljUGhvbmUoKSkKLSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhv
bmUgT1MiOworICAgICAgICByZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9z
OwogfQogCiBzdGF0aWMgU3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQppbmRleCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Ojp+VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdl
YkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRy
b2xsZXIoKTsKICAgICBpZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4
dGVybmFsUGxheWJhY2tBY3RpdmUpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZh
bHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAg
ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJn
ZXRUeXBlTm9uZSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwpCiAgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYw
N2YzNjZiZjcyZi4uNGZhODJiYmRlMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdD
b250YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVy
UHJvCiAgICAgYXV0byBzZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxl
Y3RUcmFja3MobV9zdHJlYW0pOwogICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgp
OwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3Mu
dmlkZW9UcmFjayA/ICJ2aWRlby9tcDQiIDogImF1ZGlvL21wNCI7CisgICAgICAgIG1pbWVUeXBl
ID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2aWRlby9tcDQiX3MgOiAiYXVkaW8vbXA0
Il9zOwogCiAgICAgR1NUX0RFQlVHKCJDcmVhdGluZyB2aWRlbyBwcm9maWxlIGZvciBtaW1lLXR5
cGUgJXMiLCBtaW1lVHlwZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgYXV0byBjb250ZW50VHlwZSA9
IENvbnRlbnRUeXBlKG1pbWVUeXBlKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBHUmVmUHRyPEdzdEVu
Y29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNv
bnRhaW5lclBybwogICAgICAgICBpZiAoY29kZWNzLmNvbnRhaW5zKCJ2b3JiaXMiX3MpKQogICAg
ICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LXZvcmJpcyJfczsKICAgICAgICAgZWxz
ZSBpZiAoY29kZWNzLmNvbnRhaW5zKCJvcHVzIl9zKSkKLSAgICAgICAgICAgIGF1ZGlvQ2Fwc05h
bWUgPSAiYXVkaW8veC1vcHVzIjsKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
eC1vcHVzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNvZGVj
KSB7IHJldHVybiBjb2RlYy5zdGFydHNXaXRoKCJtcDRhIik7IH0pICE9IG5vdEZvdW5kKQogICAg
ICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj00Il9zOwog
ICAgICAgICBlbHNlIGlmIChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAKaW5kZXggNTE2OTA0NWM3MDVmLi4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEw
MiwxNSArMTAyLDE1IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAK
ICAgICBDRlN0cmluZ1JlZiBkb21haW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJv
ci5nZXQoKSk7CiAgICAgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ29jb2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJv
ckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1f
ZG9tYWluID0gIkNGVVJMRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lY
KQotICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2Rv
bWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtD
RkVycm9yRG9tYWluT1NTdGF0dXMpCi0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJv
ckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsK
ICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBt
X2RvbWFpbiA9ICJrQ0ZFcnJvckRvbWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJr
Q0ZFcnJvckRvbWFpbldpblNvY2siX3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRv
bWFpbjsKIApAQCAtMTkwLDEzICsxOTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJv
cihDRlN0cmVhbUVycm9yIGVycm9yKQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAg
IGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlND
dXN0b21FcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFp
biJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lY
OgotICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2Rv
bWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
a0NGU3RyZWFtRXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNP
U1N0YXR1c0Vycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9y
RG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbQppbmRleCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVz
dENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBk
YXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwu
aXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAg
aWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9
IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZp
bGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5p
c051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0
RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZp
bGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0
eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6
QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2
aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhlNzIx
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVu
dHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVz
dFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVl
c3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
S2V5RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2lu
LmNwcAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0
aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBr
ZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6
Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsK
ICAgICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsK
KyAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoK
LSAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJf
czsKICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9j
ayI7CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xX
SU46CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAg
ICAgICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAg
ICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAg
ICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAg
ICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VO
RDoKLSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9z
OwogICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAg
ICAgcmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAg
ICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAg
ICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAg
ICAgcmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNl
IFZLX0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYy
Il9zOwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAg
ICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAg
cmV0dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZL
X0Y1OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9z
OwogICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAg
ICAgICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0
dXJuICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4
OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAg
ICByZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVy
biAiRjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0Yx
MjoKLSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9z
OwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAg
IHJldHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNl
IFZLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE1Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAg
ICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAg
ICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAi
RjE5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoK
LSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJl
dHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZL
X0YyMzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIz
Il9zOwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAg
ICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAg
ICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAg
cmV0dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJl
dHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBj
YXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0
dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNh
c2UgVktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICBy
ZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJl
dHVybiAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2Fz
ZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAg
ICAgICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsK
ICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7Cisg
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJf
czsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAg
ICAgICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBi
ZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1
cm4gIlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBw
ZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcy
MzQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRT
dHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVk
U3RyaW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBT
dHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmls
ZXNUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVz
IjsKKyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0
cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwz
NCArNzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9u
KFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBt
aW1ldHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
ZmlsbCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0Iiwg
InRleHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRp
b24vcGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9z
dHNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoInhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0
ZXh0L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gt
amF2YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNh
dGlvbi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGlj
YXRpb24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAi
YXBwbGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3Zn
IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImlt
YWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBl
ZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InRpZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJp
bWFnZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJwZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBzIl9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0
bWwiX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywg
InRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94
bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlw
dCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0
bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0
aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBw
bGljYXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2
ZSJfcywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImpwZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWci
X3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJp
bWFnZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3Rp
ZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdY
TCkKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0K
ICAgICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42
Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQog
c3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJl
c3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3Jt
YXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9y
bWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOwor
ICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5j
ZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1h
dCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0
ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAog
c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3Rl
Ym9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAg
ICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5h
ZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0
bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihk
b21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJv
YXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21N
SU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0
KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTCht
X2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAK
LSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAg
LTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEs
IGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhI
VE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBU
b0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAg
ICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwg
Y2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShj
Zmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5T
ZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9i
YWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0
aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJs
LmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBT
dHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3Ry
LCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21V
UkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29u
dGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsK
ICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAs
NyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBw
YXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRN
TCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGlu
awogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNo
YXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRV
UkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9N
YXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAg
ICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAg
aWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAg
ICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUo
Q0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5E
TEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04
IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAg
ICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0
YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+
KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEp
OwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURl
c2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFs
RnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmlu
c2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0
aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0
ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEw
OTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9i
amVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBk
YXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRv
Q0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVk
aXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMz
YmUyZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAg
ICAgY2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRv
d3NDRTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2lu
ZG93cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyBDRSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2Fz
ZSBXaW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0
dXJuICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2Ug
V2luZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4g
IldpbmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2lu
ZG93cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5
eCA0LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQu
MCI7CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49
IFdpbmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJu
IGZhbWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJl
cihtaW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywg
bWlub3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBA
IHN0YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hp
dGVjdHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAg
IHJldHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAo
cHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkK
LSAgICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7
IHg2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FS
Q0hJVEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAg
ICByZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4
MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYs
NyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQog
ICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZh
bHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50
OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGll
bnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1h
bmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3Rk
OjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7Cisg
ICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBp
ZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVy
cm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9
IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNz
YWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNj
NS4uZDcxZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1
bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVz
dWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1
bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
NTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRl
eHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAg
ICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5n
ZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWls
KENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dz
aW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJv
d3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBpZiAoIXVybCkg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwo
Q29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1Jl
Y3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAog
ICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dz
aW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAgICAgICAgICAg
YXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAg
d2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAgICAgICAgd2lu
ZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93
T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRl
cnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gd2lu
ZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXpl
LT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dT
aXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOworICAgICAgICAg
ICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dT
aXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgi
c2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11
dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0Zp
bGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgog
ICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50
cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsK
IAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9u
KGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAg
ICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhh
c0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVw
bG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5z
ZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJn
dW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5n
KCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlv
bihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1l
bnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3
ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0
dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIK
LSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2lu
Z0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBA
IC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAg
YXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1
bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmls
aXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAgICAgICAgICAi
ZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQg
ZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAg
ICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAg
LTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAg
ICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5s
ZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
aWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAg
ICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxl
JywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAg
ICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAg
ICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05T
dHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0
PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAg
ICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29va2llT2Jq
ZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8i
X3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9t
YWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xl
YW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9v
cihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNv
b2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBj
b29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygi
c2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29r
aWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9v
cigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzgg
KzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3Vy
Y2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5l
bnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3Qg
SW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9u
U291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNo
IChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToK
LSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNh
c2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3Vy
Y2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewogICAgICAgICBj
YXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91c2UiOworICAg
ICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91
Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJldHVybiAiVG91
Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVy
biAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJu
ICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOworICAgICAgICBy
ZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9y
aWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlw
ZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3
cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3Jp
Z2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOworICAgICAgICBy
ZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50
OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7
CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTIuLjU5MTg0NzBiODVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGlu
dCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIFVTRShJ
TlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlm
IChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQURE
UiIpKQotICAgICAgICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRFbnZWYXI7CisgICAgICAgIHRhcmdl
dFN0cmluZyA9IFN0cmluZyB7IHRhcmdldEVudlZhciB9OwogI2VuZGlmCiAgICAgZm9yIChpbnQg
aSA9IDEgOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3Zb
aV07CkBAIC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlsw
XSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgcG9ydFN0cmlu
ZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKQEAgLTk3LDcgKzk3LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBd
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHRhcmdldFN0
cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVz
ZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYg
KCFwcm94eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJv
eHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNv
Y2tzUHJveHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICghc29ja3NQcm94
eSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9i
amVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAg
ICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Zl
cnNpb24iKTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJz
aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcy
LDMwICs4NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3Rv
cjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVz
LnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChjYXBh
YmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsK
KyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFu
ZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQg
bm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVl
X29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxv
YWRTdHJhdGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUi
X3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0
cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1h
bCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2Fk
U3RyYXRlZ3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2Vy
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICghY2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0Nh
cGFiaWxpdGllc1NvY2tldC5jcHAKaW5kZXggMGY2Yzg3ODIwMDk1Li4yYjY3MTM0OWQzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAt
MzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGll
cyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpT
T046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAg
aWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFy
Z2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQor
ICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJf
cywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFk
ZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAg
ICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9y
dDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBv
cnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFy
Z2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdl
cih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQ
b3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVy
U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3Bw
CmluZGV4IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUVFBS
ZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYs
IENvbm5lY3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJlc3Bv
bnNlIHsKICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiLAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZv
cm1hdCIsCisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9y
bWF0Il9zLAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNwb25z
ZSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6
OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBj
b25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0
aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVz
dGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9u
IGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAg
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVk
IgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
IGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJl
VG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAg
IGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBj
b3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQg
c3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9y
U1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wx
MzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxs
OgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNh
c2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAg
ICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVk
OgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5k
ZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBA
QCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5n
ICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0KQEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4g
Y3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25z
dCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAg
aWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0g
PT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2Fs
Lmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJl
Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
bG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2ly
ZVR5cGUgPSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsK
LSAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2Vh
YmxlLgotICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigi
QmMiLCB3aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBD
aGFyYWN0ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAg
YW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMg
PT0gJ0InID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwu
bGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1h
cENoYXJhY3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5
ICs5NjcsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3Rl
T2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24g
Zm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmlu
ZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAg
U3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0
dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBt
ZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWdu
YXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkp
CiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25F
eGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUg
bm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1l
KHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVj
dFJlZ2lzdHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9j
b2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRp
YyBOU1N0cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBz
ZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24t
aW5oZXJpdGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBf
cHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwg
dHJ1ZSk7CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWdu
YXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAg
ICAgQVNTRVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2Rp
bmcpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01l
dGhvZFNpZ25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJl
IHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQo
dGFyZ2V0TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkK
LSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBb
dGFyZ2V0TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpi
bG9ja0luZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQp
X2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1v
dGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5f
dHlwZVN0cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBs
eUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9y
LCBpKTsKKyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNp
Z25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUu
dXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJs
b2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwg
aW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWdu
YXR1cmUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7
CiAgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSBy
ZXBseSBibG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUod2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAg
ICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkg
YmxvY2sgc2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0
YSgpLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhv
ZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZv
Y2F0CiAgICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4g
Y2hlY2tlciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwot
ICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVC
bG9jayh3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3Rl
T2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlv
bikgeworICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0Nh
cHR1cmVCbG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCBy
ZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVP
YmplY3RFbmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5t
bQppbmRleCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpA
QCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2
aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWls
c0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxU
b1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3
LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBz
Oi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAg
ICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFy
aSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25v
c3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGlj
IFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQp
CiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5o
dG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZl
YnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICBy
ZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/
dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRl
eCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5z
eXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVf
YXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0Fj
dGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19i
dXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJp
Z2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVt
ZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEz
MDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQ
Q01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2Vydmlj
ZSIpOworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRh
dHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJl
MDJlYzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBp
ZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFi
bGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBw
LWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmRE
b21haW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3Jpbmcg
dXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9u
IGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0Vf
TE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5
ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNv
bW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVB
IiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAg
ICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywK
LSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAi
S2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJi
IiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJf
cywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywg
NjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2ds
ZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAg
ICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUki
X3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAot
ICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAi
dSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3
IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNo
b3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0g
ImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNh
dGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29u
c3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
KCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNu
J3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVu
IHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVy
IHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
IjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5X
ZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVk
aXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5h
MjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcx
Niw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1l
bnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVy
eVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwot
ICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1
bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVs
bHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXco
KSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUo
bWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIw
MTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1
LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmco
U3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JD
bGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
CiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmlu
Z1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxv
Y2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJl
YTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJj
ZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClf
c2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAg
dG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGlu
ZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYs
NyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3Ry
aW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlz
cGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1v
amkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZh
bWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5n
cygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZh
NjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9z
c1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVh
ZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVj
dG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwg
bmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwg
Y29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBj
b3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0w
Il9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NU
aHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZm
ZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rp
b25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVj
dG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykp
OworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0y
Il9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihN
U1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJl
cG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5p
dGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgK
IDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcv
c3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAg
ICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMs
IEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9
OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUg
cmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBq
cyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2gg
KHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5h
bGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRt
bCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9u
c2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0
ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwg
eyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0
Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3Jp
cHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7
ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlw
dD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAg
VEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VX
b3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
Ci0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7
CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9
KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2
ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7
ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicp
PC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAi
PHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAg
YXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUy
LDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5p
dGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
LmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hh
cioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
IjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNX
Qnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9z
LCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAg
ICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxw
dHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgp
OwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9
IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWlu
U1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlw
ZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJ
ZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAq
cmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4x
OiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJp
dmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBX
S19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1
ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1
bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBA
IC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQog
PC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0
IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYg
KCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05v
IGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBw
UHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVT
T1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3Nh
Z2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIu
Z2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNv
bnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0Rl
ZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlw
ZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRW
YWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5p
dGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRv
IGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYu
LjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAg
VEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQ
ZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1l
dmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hh
ciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFp
bkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpA
QCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAK
IDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERl
dmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5
dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtX
S1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBA
QCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVu
dGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciog
bWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5G
cmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBz
Oi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3
LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVy
Omh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NE
T0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURP
Q0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RP
QygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0Mi
X3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkK
IHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIv
IiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQg
fSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBu
dWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAg
eyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5m
NmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0
IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRp
bmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRl
c3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRB
UEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdl
YkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7
Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9
CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2Vy
U2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29u
dHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIg
ZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAK
IDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0Pgog
CiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwv
c2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBz
Y3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNl
V29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21h
aW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAg
eyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5
dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAg
LTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWlu
QWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8g
RXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4K
LSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtl
ciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3Rl
ZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDog
SGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05
NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJf
cywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlw
dEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBl
eHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRN
ZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dh
cCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
L3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAi
L3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24u
aHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9z
cy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9
IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpA
QCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2Fz
ZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0
bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3Mg
fSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2Vy
dmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250
ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIs
ICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5o
dG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3Nz
LU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0g
fSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3
MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3
ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50
aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nl
c3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0g
fQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4
IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4K
LVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRN
b2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6
ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdh
dGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0s
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJU
ZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQog
ewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3
ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29u
dGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2Uo
MTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENv
bnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRl
bnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2Uo
MTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4o
ZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwog
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVm
ZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0
aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsK
IAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwg
Q0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2Vi
S2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVz
a3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmln
YXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50
b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1Qo
UHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQp
CiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBu
YW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4Lgot
ICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAi
TW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29u
dGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpu
aWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNl
ckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpA
Ik1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWlu
LmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1
MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAg
Q29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50
ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQ
b2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1w
bGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwg
Imh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4
YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsK
IH0K
</data>
<flag name="commit-queue"
          id="484770"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456470</attachid>
            <date>2022-04-02 13:36:08 -0700</date>
            <delta_ts>2022-04-02 14:35:10 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>174239</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWEuLmJlN2ZjNGI4
NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRlciBhZGFwdGVyKQogewogICAg
IFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAgIHdncHVBZGFwdGVyR2V0UHJv
cGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXMubmFt
ZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRleCA5NjlhN2EyY2E3YjkuLjhj
OTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6
OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9u
RXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICBl
cnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDhlYjRlOTI2YjlkYS4uMGQ0
ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBj
b25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3MzJjYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0K
QEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhD
b3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQog
Ci1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAgIFN0
cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VT
Y3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3Rl
ZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNl
bGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAg
IGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3Rh
dHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVl
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBh
bmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25D
aGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBB
WE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNh
bGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2Vi
Q29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVy
cmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhl
IHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4K
LSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShu
b3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0
aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNy
ZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlm
aWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0
aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVj
dC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkw
YzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3Jv
bGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJl
c3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9u
KTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6
OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAg
ICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRp
b25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNj
cm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07
CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0
aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAg
IH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3Jv
bGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2
OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2Vw
dGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVj
dGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5Li4zMWVmYzI4
MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikg
ewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2
b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0
Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVt
ZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQg
d2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRl
ZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVz
IHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxz
byByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAg
ICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQuLmQ0ODQxZGYzZGZm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1Miwx
NCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5Jiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25z
dCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAg
ICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24o
KTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAg
U3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBr
ZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxpdGVyYWwgbmFtZSB7
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUgeyBmYWxzZSB9Owog
ICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5ncyB7CkBAIC0z
NzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZv
clNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJvb2wgSW50ZXJh
Y3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQor
Ym9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVy
YWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7
CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJl
Y3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7CisgICAgaWYgKHZh
bHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmdyZWVu
KTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojpk
cmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGF1
dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0
aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRhID0gWyZdIChm
bG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50
RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNlTG9jYXRpb25J
bkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYg
Y29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdo
dEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewogICAgICAg
ICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERh
dGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlw
bGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChyZWdpb24gJiYg
dmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAg
ICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0p
OwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBoYXNMaWdodEJh
Y2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMDUpIDogQ29s
b3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAgICAgICAgfSBl
bHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0dGluZygiY29u
c3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xp
cCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29s
b3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgZGVmYXVs
dFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmco
ImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlw
Il9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAgICBpZiAoc2hv
dWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpyZWdpb24p
OwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlw
IHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRp
bmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZh
bHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAx
LjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRS
YWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICBhdXRv
IGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMg
KiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVs
dGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFj
a2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNv
bG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEo
MCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAg
ICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOwotICAgICAg
ICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYm
IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAgICAgIGhhc0xp
Z2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAgICAgICAgIGlm
IChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlw
UGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmco
ImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5E
aW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5k
aW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhhc0xpZ2h0QmFj
a2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0
LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5IEBAIGJvb2wg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5
LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vyc29yVG9T
ZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gbm9uZUN1cnNv
cigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgZWxzZSBp
ZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IHBv
aW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBt
YWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwpAQCAtNTQ0
LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3VzZUxvY2F0aW9u
SW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRlczsKICAgICBv
dmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0
dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1v
dXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJf
cykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXggNDc3NGNlMDhh
NWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
U2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0
aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0dGluZ3NCYXNlOjpw
bGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNldHRpbmdzQmFzZTo6
aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0gICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOwot
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVkRm9udEZhbWlseSgi
Q291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVz
IiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5n
IFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVNDUklQVF9LQVRBS0FO
QV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3Ro
aWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3Vy
aWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyJf
cywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhlbHZldGlj
YSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERl
c2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBs
aWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJB
Z2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNl
ckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50
KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJB
Z2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIuY3BwCmluZGV4IGU0NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJh
Y2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXco
V0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAi
YnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBB
dWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQ
dHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2lj
Iik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1
ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5r
OwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNy
ZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRpb24gPSA1X3M7
CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRu
UGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiAvLyBUaGUg
Y29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3csIHBvcnRlZCB0
byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwg
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGUg
Y29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBpbml0
aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUgY29udGV4dCwg
YWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3NDE4
M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1
Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFu
ZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBu
b3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAg
ICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0
IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURl
cHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAg
ICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwg
R0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNp
emVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9p
ZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIHByaW50
VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNmb3JtM0QmIHRy
YW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNp
b24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0
cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5z
Zm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9y
bS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0y
MiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIzKSwg
JyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQpLCAiOyAi
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpLCAnICcsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMiksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAnLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1zdGF0aWMgdm9pZCBwcmludENvbG9y
KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0cmluZyYgbGFiZWws
IENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dDb2xvclJlZiBjb2xv
cikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3koY29s
b3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgpKQpAQCAtNzYyLDEwICs3NjIsMTAg
QEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAKICAgICAvLyBQcmludCBiYWNrZ3Jv
dW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAi
YmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJiYWNr
Z3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZv
cm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJDb2xvciBpZiBuZWVkZWQKLSAgICBw
cmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciIsIENBQ0ZMYXllckdl
dEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1
aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywgQ0FDRkxheWVyR2V0Qm9yZGVyQ29s
b3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbWFza3NUb0JvdW5k
cyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBsYXllci0+bWFz
a3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXggYjkzYmMz
NGNjNGQ0Li4xZjUxNjkxZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKQEAg
LTM0MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0cmluZ0Zyb21G
YW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBmYW1pbHk7CiAKICAg
ICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3Rh
bmRhcmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVz
SW5kZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzZXJpZiI7CisgICAgICAgIHJl
dHVybiAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZh
bWlseU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2Fucy1z
ZXJpZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09
IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6TW9ub3NwYWNlRmFtaWx5KSkK
LSAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSJf
czsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRl
eDo6Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAgICAgIHJl
dHVybiAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQo
RmFtaWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiZmFudGFz
eSI7CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U3lz
dGVtVWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpCiAgICAgICAg
IHJldHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gIiI7
CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBGQ19WRVJTSU9OIDwgMjEzOTUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9B
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDFk
NmFlMmUxMmU3ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9D
SEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2Nv
ZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3Ry
aW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdh
aXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIyNTQxLi4x
MjA3YzM1YTExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC02MTMsNyArNjEz
LDcgQEAgc3RhdGljIGdib29sZWFuIHBhcnNlR3N0U3RydWN0dXJlVmFsdWUoR1F1YXJrIGZpZWxk
SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIHsKICAgICBpZiAoYXV0byBqc29uVmFsdWUg
PSBnc3RTdHJ1Y3R1cmVWYWx1ZVRvSlNPTih2YWx1ZSkpIHsKICAgICAgICAgYXV0byogb2JqZWN0
ID0gcmVpbnRlcnByZXRfY2FzdDxKU09OOjpPYmplY3QqPih1c2VyRGF0YSk7Ci0gICAgICAgIG9i
amVjdC0+c2V0VmFsdWUoZ19xdWFya190b19zdHJpbmcoZmllbGRJZCksIGpzb25WYWx1ZS0+cmVs
ZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoU3RyaW5nIHsgZ19xdWFy
a190b19zdHJpbmcoZmllbGRJZCkgfSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKICAg
ICB9CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwCmluZGV4IDJkOWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBA
IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENoZWNrSGFyZHdhcmVDbGFz
c2lmaWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsKICAgICAgICAgZm9yIChH
TGlzdCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0b3JpZXMgPSBnX2xp
c3RfbmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBmYWN0b3J5ID0gcmVpbnRl
cnByZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0YSk7Ci0gICAgICAg
ICAgICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShm
YWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAgICAgICAgICBTdHJpbmcg
bWV0YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0b3J5LCBHU1Rf
RUxFTUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1dG8gY29tcG9uZW50cyA9
IG1ldGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5jb250YWlu
cygiSGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdIYXJkd2FyZSA9IHRydWU7
CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRp
YWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9CiAKICAg
ICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZvck1lZGlh
VHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94LWF2MSIs
IEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwotICAgIGlm
ICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3Vy
YXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29kZXJBdmFpbGFibGUpIHsK
KyAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChD
b25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29kZXJBdmFp
bGFibGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MDEq
IiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNv
ZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlz
VXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5n
KCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBAIC00MDks
NyArNDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNv
ZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAgICAgbV9kZWNvZGVyTWlt
ZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAKLSAgICBhdWRp
b01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246
OkRlY29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29u
dGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCJf
cyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAgICBtX2RlY29kZXJNaW1l
VHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2MwZDhmNzNjNDJi
Li43ZWJiYTQzMjJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdv
cgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlv
U2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVy
KCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+aXNWaWRl
b1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlv
U2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0VfQVNTRVJU
KGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdl
KiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJy
Lm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVycm9yICVk
OiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVzc2FnZTsK
KyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsKIAogICAg
ICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICBp
ZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVB
TV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdl
KQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImh0
dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3Ry
aW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IHVyaSB9
OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgICAgICAg
ICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAogICAg
ICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50
cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7CiAg
ICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0aXRs
ZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KHRp
dGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4KHRpdGxl
KSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjE2
Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3Vy
ZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0KGVs
ZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVsbHB0
cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVkIGZpbGUg
ZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRlbXBsYXRl
LmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBuZXdEb3du
bG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0cmluZyBu
ZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07CiAgICAg
cHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNlKCJYWFhY
WFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlhUGxh
eWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdfb2JqZWN0
X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwgJmRv
d25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5MSUtF
TFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZEZpbGUu
Z2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBtZWRpYSB0
ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgLy8gdGhv
dWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAg
ICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAgICAgICAg
VVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91
cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOworICAg
ICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9uIH0pOwog
CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAgICAgIGdf
b2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJpblVybFN0
ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxheWJpblVy
bFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBsYXliaW5V
cmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1VybCkgewog
ICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBhbHJlYWR5
IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVybCkK
IAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAgIGlmIChl
bGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIjsK
KyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0IGNoYXIq
IHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygibWVkaWFz
dHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBAIElu
aXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Qcm90
ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEgPSBudWxs
cHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0KCks
ICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIGluaXRE
YXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAgaW5pdERh
dGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwogICAgICAg
ICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShldmVu
dC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChHc3RFdmVu
dCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0cjsK
ICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRfcGFyc2Vf
cHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBudWxscHRy
KTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1VVUlE
LCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsgU3RyaW5n
IHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3Li4zMmVk
M2FlOGIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKQEAgLTQ3MSw3ICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZD
b250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50
cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CisgICAgU3RyaW5nIGVuZ2luZURlc2Ny
aXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciJfczsgfQogICAgIGJv
b2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgY2Fu
U2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggZGNhMmMyMWZkNjMwLi4wM2VkYWM4YzhlOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9U
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKQEAgLTE5
NSw3ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdl
Q29kZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAgIFN0cmluZyBsYW5n
dWFnZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwgbGFuZ3Vh
Z2UpKSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29f
NjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1YWdlID0gU3RyaW5n
IHsgZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRh
dGEoKSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sgJWQncyBsYW5ndWFn
ZSBjb2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwogICAgICAg
ICBpZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVlID0gbGFuZ3VhZ2U7
CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRU
YWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMKICAgICBHVW5pcXVl
T3V0UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmco
dGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBHU1RfREVCVUco
IlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5nZXQoKSk7
Ci0gICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZhbHVlID0gU3RyaW5n
VHlwZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3Ry
ZWFtZXIuY3BwCmluZGV4IDg5NDc1NDA1YzgwOS4uZDdiZTgwNTE4ZWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFk
YXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVu
dCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBwcm9iZVR5
cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEp
IC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRCdWZmZXIsIG1l
dGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5GT19CVUZGRVIo
aW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9IG1vZGlmaWVk
QnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3Rp
bWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1ldGEtPnByaXYtPnBy
b2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRh
dGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NL
X1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9LCBn
c3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVu
dCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQogICAgICAgICAgICAgcmV0dXJuIEdTVF9Q
QURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9OwogICAgICAgICBhdXRvIHZhbHVlID0gbWV0
YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVtZW50TmFtZSk7CiAgICAgICAgIG1ldGEt
PnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6bWFrZV9wYWlyKHZh
bHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCkpKTsKICAgICAgICAgcmV0dXJuIEdT
VF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUuLmQ2NDA0YzEyMGNhOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAg
dm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21D
YXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8
Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQo
KSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1
cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2Fs
bE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAKaW5kZXggNzU0YjNmZjQ4MzkwLi5kMGFkNjcyZDcxMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJT
b3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01OTYsNyArNTk2LDcg
QEAgc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoR1F1YXJrIGZpZWxkSWQs
IGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIAogICAgIEdTVF9ERUJVRygiQXBwZW5kaW5nIGV4
dHJhIGhlYWRlcjogXCIlczogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250ZW50LmdldCgpKTsK
ICAgICBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVJlcXVl
c3QqPih1c2VyRGF0YSk7Ci0gICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKGZpZWxkTmFt
ZSwgZmllbGRDb250ZW50LmdldCgpKTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQo
U3RyaW5nIHsgZmllbGROYW1lIH0sIFN0cmluZyB7IGZpZWxkQ29udGVudC5nZXQoKSB9KTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2Vi
S2l0V2ViCiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uICE9IG1lbWJlcnMt
PnN0b3BQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBvc3RpbmcgdGFz
ayB0byByZXF1ZXN0IFIldSAlcyByZXF1ZXN0ZWRQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFU
ICIgc3RvcFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbWJlcnMtPnJlcXVlc3ROdW1i
ZXIsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSwgbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24s
IG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7Ci0gICAgVVJMIHVybCB7IHByaXYtPm9yaWdpbmFsVVJJ
LmRhdGEoKSB9OworICAgIFVSTCB1cmwgeyBTdHJpbmcgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRh
KCkgfSB9OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICByZXF1ZXN0
LnNldEFsbG93Q29va2llcyh0cnVlKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBzdGF0aWMgdm9pZCB3
ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2Vy
PFdlYktpdFdlYgogICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1lbWJlcnMtPnJlZmVycmVy
KTsKIAogICAgIGlmIChwcml2LT5odHRwTWV0aG9kLmdldCgpKQotICAgICAgICByZXF1ZXN0LnNl
dEhUVFBNZXRob2QocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZChTdHJpbmcgeyBwcml2LT5odHRwTWV0aG9kLmdldCgpIH0pOwogCiAjaWYgVVNF
KFNPVVApCiAgICAgLy8gQnkgZGVmYXVsdCwgSFRUUCBBY2NlcHQtRW5jb2RpbmcgaXMgZGlzYWJs
ZWQgaGVyZSBhcyB3ZSBkb24ndApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2Vi
S2l0V2ViCiAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2FudCB0byBhY2Nl
c3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KICAgICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNt
cCgibW92aWVzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkKICAgICAgICAg
fHwgIWdfYXNjaWlfc3RyY2FzZWNtcCgidHJhaWxlcnMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51
dGY4KCkuZGF0YSgpKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KCJRdWlja3Rp
bWUvNy42LjYiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KCJRdWlja3RpbWUv
Ny42LjYiX3MpOwogCiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uIHx8IG1lbWJl
cnMtPnN0b3BQb3NpdGlvbiAhPSBVSU5UNjRfTUFYKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hh
cj4gZm9ybWF0ZWRSYW5nZTsKQEAgLTY4MSwxOSArNjgxLDE5IEBAIHN0YXRpYyB2b2lkIHdlYktp
dFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2Vi
S2l0V2ViCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvcm1hdGVkUmFuZ2UucmVzZXQoZ19z
dHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgbWVtYmVycy0+cmVx
dWVzdGVkUG9zaXRpb24pKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJSYW5nZSBy
ZXF1ZXN0OiAlcyIsIGZvcm1hdGVkUmFuZ2UuZ2V0KCkpOwotICAgICAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFuZ2UsIGZvcm1hdGVkUmFuZ2UuZ2V0KCkp
OworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFu
Z2UsIFN0cmluZyB7IGZvcm1hdGVkUmFuZ2UuZ2V0KCkgfSk7CiAgICAgfQogICAgIEFTU0VSVCht
ZW1iZXJzLT5yZWFkUG9zaXRpb24gPT0gbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24pOwogCiAg
ICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQZXJzaXN0ZW50IGNvbm5lY3Rpb24gc3VwcG9ydCAl
cyIsIHByaXYtPmtlZXBBbGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwogICAgIGlmICgh
cHJpdi0+a2VlcEFsaXZlKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiX3MpOwogCiAg
ICAgaWYgKHByaXYtPmV4dHJhSGVhZGVycykKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9mb3JlYWNo
KHByaXYtPmV4dHJhSGVhZGVycy5nZXQoKSwgd2ViS2l0V2ViU3JjUHJvY2Vzc0V4dHJhSGVhZGVy
cywgJnJlcXVlc3QpOwogCiAgICAgLy8gV2UgYWx3YXlzIHJlcXVlc3QgSWNlY2FzdC9TaG91dGNh
c3QgbWV0YWRhdGEsIGp1c3QgaW4gY2FzZSAuLi4KLSAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRhdGEsICIxIik7CisgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSJfcyk7CiAKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3Byb3RlY3RvciA9IFdURjo6ZW5zdXJlR1JlZihzcmMpLCByZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgcmVxdWVzdE51bWJlciA9IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJdIHsKQEAgLTg4MSw3
ICs4ODEsNyBAQCBjb25zdCBnY2hhciogY29uc3QqIHdlYktpdFdlYlNyY0dldFByb3RvY29scyhH
VHlwZSkKIAogc3RhdGljIFVSTCBjb252ZXJ0UGxheWJpblVSSShjb25zdCBjaGFyKiB1cmlTdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIFVSTCB7IHVyaVN0cmluZyB9OworICAgIHJldHVybiBVUkwgeyBT
dHJpbmcgeyB1cmlTdHJpbmcgfSB9OwogfQogCiBzdGF0aWMgZ2NoYXIqIHdlYktpdFdlYlNyY0dl
dFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5l
LmNwcAppbmRleCBmZTQ3OWQ2YmI1MjcuLjFhZjBlNTU0ZDgyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGQ6OnR1cGxlPEdSZWZQdHI8
R3N0Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBlLCBGbG9hdFNpemU+IEFwcGVuZFBp
cGVsaQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBjYXBzTWVkaWFUeXBl
KGRlbXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNjYW5uZXIgPSBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigpOwotICAgIGlmICghZ3N0UmVnaXN0
cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25m
aWd1cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5cGUpKSB7CisgICAgaWYgKCFnc3RS
ZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBvcmlnaW5hbE1lZGlhVHlwZSB9KSkg
ewogICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6SW52YWxpZDsKICAgICB9IGVsc2Ug
aWYgKGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzLCBHU1RfVklERU9fQ0FQU19UWVBF
X1BSRUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6ZSA9IGdldFZpZGVvUmVzb2x1dGlv
bkZyb21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKaW5kZXggODMxYzJiMmM2ZWZiLi4yY2VjNjg0NjZmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAgLTEyNSw3
ICsxMjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bG9hZChjb25z
dCBTdHJpbmcmKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bG9hZChj
b25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmLCBNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQqIG1lZGlhU291cmNlKQogewotICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1l
ZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIiA6IHVybC5zdHJp
bmcoKSk7CisgICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1
cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iX3MgOiB1cmwuc3RyaW5nKCkpOwogICAg
IEdTVF9ERUJVRygiTG9hZGluZyAlcyIsIG1zZUJsb2JVUkkuYXNjaWkoKS5kYXRhKCkpOwogICAg
IG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNw
cAppbmRleCA3M2UyNDg0NWNiMzMuLjkxOTYzZDMyOTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKQEAgLTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpw
bGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAgIC8vIGV4
dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0VY
VF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZS4KICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpCi0gICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZl
cl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsKKyAgICAg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfaW5zdGFuY2Vk
X2FycmF5cyIpIHsKLSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAgICAgJiYgKG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIikgfHwgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiKSk7Cisg
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfaW5zdGFuY2VkX2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8IG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSk7CiAgICAgfQog
CiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIpICYmIChtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIikgfHwgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiIpKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3Rl
eHR1cmVfc1JHQiJfcykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2ZyYW1lYnVmZmVyX3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRf
ZnJhZ19kZXB0aCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAgIC8vIERlc2t0b3Ag
R0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlmIChuYW1lID09ICJH
TF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29sIEV4dGVuc2lvbnNH
TE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgLy8gSWYgR0xfQVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1cmVfZmxvYXQgaXMg
YXZhaWxhYmxlIHRoZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCwgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0X2xpbmVhciBhcyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU190ZXh0dXJl
X2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiB8fCBuYW1lID09
ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0Il9zKSB8fCBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Il9zKTsK
IAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5hbWUgPT0gIkdM
X09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShHVEspKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2Fy
cmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQotICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlf
b2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAgICAgfQogCkBAIC0x
NDcsMTQgKzE0NywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikKLSAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0
dXJlX2xvZCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBpZiAobmFtZSA9PSAi
R0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJv
cGljIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBpZiAobmFtZSA9PSAi
R0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2Ry
YXdfYnVmZmVycyJfcyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHN1cHBv
cnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjMxLDcg
KzIzMSw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6
OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRpYyBjb25zdCBib29s
IHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJh
eV9vYmplY3QiKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2Jq
ZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICAgICByZXR1
cm4gc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMwNDBjZWJkYTlhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3NCwxMiArMTc0
LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xzaGFkZXJUeXBl
ID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5
cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAiIjsg
Ly8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8v
IEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xPYmplY3QsIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3Vs
dCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogCiAgICAgaWYg
KHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7
CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpn
ZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIH0KIAog
ICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1Li5iOTExMTAyNTk4
MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjY0LDcgKzI2NCw3IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DID4o
ZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAg
ICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJn
bERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAgbV9zdXBwb3J0c0FO
R0xFaW5zdGFuY2VkQXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChtYWpvclZlcnNp
b24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0
YW5jZWRfYXJyYXlzIikgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
ZHJhd19pbnN0YW5jZWQiKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtYWpvclZlcnNpb24oKSA+
PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRf
YXJyYXlzIl9zKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCJfcykpKSB7CiAgICAgICAgICAgICBtX2dsVmVydGV4QXR0cmliRGl2aXNvckFO
R0xFID0gOjpnbFZlcnRleEF0dHJpYkRpdmlzb3I7CiAgICAgICAgICAgICBtX2dsRHJhd0FycmF5
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdBcnJheXNJbnN0YW5jZWQ7CiAgICAgICAgICAgICBt
X2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0VsZW1lbnRzSW5zdGFuY2Vk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggY2FhYWI2ZmM1OThi
Li4wYTZhODhjZjFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApA
QCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJlYWRS
ZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZh
bGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
bikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFT
Q0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgYXV0byBhdHRy
cyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewotICAg
ICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkg
ewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3Ry
aW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlmIChzdXBwb3J0
c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7CisgICAgICAg
ICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUuCiAg
ICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTIuLmFmNzVlMGQwOTk5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3ICs0MzMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFu
ZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBi
YXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRh
dGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJ
SUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRl
QXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dM
aW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0
LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdD
R0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCBy
ZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwCmluZGV4IGMzNWIyZjBmMTVkOS4uN2I1NGEwMWYzZTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtODYsNyArODYsNyBA
QCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVh
ZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9F
WFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA4LDcgKzEwOCw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNp
emUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRlbnNpb25z
ID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGggYnVmZmVy
IHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9y
dHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAoZXh0ZW5zaW9u
cy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSkKICAgICAgICAgICAg
IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9FWFQ7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xf
REVQVEhfQ09NUE9ORU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
CmluZGV4IDgzYjliODZjNTMyNy4uM2FlNjJiZjZlZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIC8v
IFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBk
ZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0g
KGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFj
a2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVz
LmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3Jl
RkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQog
ewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAg
ICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdf
bXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5h
bnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRl
cl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNl
OwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3YTFj
MjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0zNCw3
ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRl
cigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAgIFN0
cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOworICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpIH07
CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNob3dG
UFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRlcnZh
bCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRl
eCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBk
cm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9z
OwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9y
RHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDEx
ZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlz
Q2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBs
aWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2lj
TW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJ
TGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2Fw
YWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAg
ICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJu
ICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2Vy
QWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUx
ZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhp
cy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXll
ckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5
YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwg
IiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNz
aW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJmLi40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0
cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpjb250YWluZXJQcm8KICAgICBhdXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRl
clByaXZhdGU6OnNlbGVjdFRyYWNrcyhtX3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRo
aXMtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBz
ZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAg
ICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJf
cyA6ICJhdWRpby9tcDQiX3M7CiAKICAgICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2Zp
bGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRv
IGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBA
IEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZv
cmJpcyJfcykpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9z
OwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAg
ICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBz
TmFtZSA9ICJhdWRpby94LW9wdXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYo
W10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0g
bm90Rm91bmQpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2
ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndl
Ym0iKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcAppbmRleCA1MTY5MDQ1YzcwNWYuLjJkYzI3MTY2M2EzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcApAQCAtMTAyLDE1ICsxMDIsMTUgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9y
bUxhenlJbml0KCkKIAogICAgIENGU3RyaW5nUmVmIGRvbWFpbiA9IENGRXJyb3JHZXREb21haW4o
bV9wbGF0Zm9ybUVycm9yLmdldCgpKTsKICAgICBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWlu
TWFjaCB8fCBkb21haW4gPT0ga0NGRXJyb3JEb21haW5Db2NvYSkKLSAgICAgICAgbV9kb21haW4g
PSJOU0N1c3RvbUVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9y
RG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNGTmV0d29y
aykKLSAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9t
YWluID0gIkNGVVJMRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVy
cm9yRG9tYWluUE9TSVgpCi0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5PU1N0YXR1cykKLSAgICAgICAgbV9kb21haW4gPSAi
TlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbldpblNv
Y2spCi0gICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9tYWluV2luU29jayI7CisgICAgICAg
IG1fZG9tYWluID0gImtDRkVycm9yRG9tYWluV2luU29jayJfczsKICAgICBlbHNlCiAgICAgICAg
IG1fZG9tYWluID0gZG9tYWluOwogCkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBSZXNvdXJjZUVycm9y
OjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpCiAKICAgICBzd2l0Y2goZXJyb3Iu
ZG9tYWluKSB7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAgICAgICAg
bV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1
c3RvbUVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluUE9TSVg6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAgICAgICBt
X2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVx
dWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGlmIChtX3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0g
RmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRo
KCkpOwotICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0
byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7Cisg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBtX3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBp
ZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBG
aWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZp
bGVEZXZpY2UgJiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVl
c3QgX3NldFByb3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZh
bHVlKCldIGZvcktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAppbmRleCBlMGVlZjY4ODBmMmIuLjA3
MWJiMWE0N2JlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcApAQCAtNDcsNyArNDcsNyBAQCBD
ZXJ0aWZpY2F0ZUluZm8gQ2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAogCiBT
dHJpbmcgQ2VydGlmaWNhdGVJbmZvOjp2ZXJpZmljYXRpb25FcnJvckRlc2NyaXB0aW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmlj
YXRpb25FcnJvcik7CisgICAgcmV0dXJuIFN0cmluZyB7IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jf
c3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpIH07CiB9CiAKIENlcnRpZmljYXRlSW5mbzo6Q2Vy
dGlmaWNhdGUgQ2VydGlmaWNhdGVJbmZvOjptYWtlQ2VydGlmaWNhdGUoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDYxMzY1MzFiNWIxYy4uNmIxNmZjMzRk
ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJEQi5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxD
b29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
CiAKICAgICBTdHJpbmcgcmVxdWVzdFBhdGggPSByZXF1ZXN0VXJsLnBhdGgoKS50b1N0cmluZygp
OwogICAgIGlmIChyZXF1ZXN0UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlcXVlc3RQYXRoID0g
Ii8iOworICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIl9zOwogCiAgICAgUmVnaXN0cmFibGVEb21h
aW4gcmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0VXJsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA2ZDM0Njhl
NDIyMjUuLjA0ZTY0Y2QyYzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAgU3RyaW5n
IGRlZmF1bHRQYXRoRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgU3RyaW5nIHBhdGggPSB1
cmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8ICFwYXRoLnN0
YXJ0c1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9z
OwogCiAgICAgYXV0byBsYXN0U2xhc2hQb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsK
ICAgICBpZiAoIWxhc3RTbGFzaFBvc2l0aW9uKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAg
ICByZXR1cm4gIi8iX3M7CiAKICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNo
UG9zaXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggN2I0Njg1NWEwNTE1Li5hN2ExNTI3Yzg2
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIEN1cmxDYWNoZUVudHJ5OjpD
dXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29u
c3QgU3RyCiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIAogICAgIG1f
aGVhZGVyRmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1faGVhZGVyRmlsZW5hbWUu
YXBwZW5kKCIuaGVhZGVyIik7CisgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIi
X3MpOwogCiAgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1f
Y29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiKTsKKyAgICBtX2NvbnRlbnRGaWxlbmFt
ZS5hcHBlbmQoIi5jb250ZW50Il9zKTsKIH0KIAogQ3VybENhY2hlRW50cnk6On5DdXJsQ2FjaGVF
bnRyeSgpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3Bv
bnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCku
ZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBTdHJpbmcgaGVhZGVyRmll
bGQgPSBpdC0+a2V5OwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIik7CisgICAgICAg
IGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiX3MpOwogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQo
aXQtPnZhbHVlKTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOworICAgICAgICBo
ZWFkZXJGaWVsZC5hcHBlbmQoIlxuIl9zKTsKICAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExh
dGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRv
RmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0
aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmll
bGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzYmQyY2M3NDI4
NmUuLjcwMmM1YjMxYTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtODUsNyArODUsNyBAQCB2
b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jYWNoZURpci5hcHBlbmQoIi8iKTsK
KyAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyJfcyk7CiAKICAgICBtX2Rpc2FibGVkID0gZmFsc2U7
CiAgICAgbG9hZEluZGV4KCk7CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5h
Z2VyOjpzYXZlSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGlyKTsKLSAgICBpbmRleEZpbGVQYXRo
LmFwcGVuZCgiaW5kZXguZGF0Iik7CisgICAgYXV0byBpbmRleEZpbGVQYXRoID0gbWFrZVN0cmlu
ZyhtX2NhY2hlRGlyLCAiaW5kZXguZGF0Il9zKTsKIAogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoaW5kZXhGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGlu
ZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBhYWYwYzhkOTQwNzAuLmIwOTI1
NmIxOTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEN1cmxEb3dubG9h
ZDo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAg
ICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0g
ICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9k
eShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMy
MGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bh
c3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9LZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwCmluZGV4IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAx
IEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVk
IHNob3J0IGtleUNvZGUpCiB7CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2Ug
VktfTUVOVToKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAi
QWx0Il9zOwogICAgICAgICBjYXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNv
bnRyb2wiOworICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZL
X1NISUZUOgotICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4g
IlNoaWZ0Il9zOwogICAgICAgICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4g
IkNhcHNMb2NrIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNh
c2UgVktfTFdJTjoKICAgICAgICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJX
aW4iOworICAgICAgICAgICAgcmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6
Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIi
X3M7CiAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7Cisg
ICAgICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNh
c2UgVktfRU5EOgotICAgICAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJu
ICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0g
ICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7
CiAgICAgICAgIGNhc2UgVktfRVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7
CisgICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYz
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAg
IGNhc2UgVktfRjU6Ci0gICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjUiX3M7CiAgICAgICAgIGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNh
c2UgVktfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjgiX3M7CiAgICAgICAgIGNhc2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAg
ICAgcmV0dXJuICJGMTEiOworICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNh
c2UgVktfRjEyOgotICAgICAgICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTIiX3M7CiAgICAgICAgIGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMi
OworICAgICAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjE1OgotICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAg
cmV0dXJuICJGMTUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTYiOworICAgICAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3
OgotICAgICAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7
CiAgICAgICAgIGNhc2UgVktfRjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAg
cmV0dXJuICJGMTkiOworICAgICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjIwOgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJG
MjAiX3M7CiAgICAgICAgIGNhc2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjIzOgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0
dXJuICJGMjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJG
MjQiOworICAgICAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoK
LSAgICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7
CiAgICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAg
ICAgICAgICByZXR1cm4gIkhvbWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAg
ICAgICAgcmV0dXJuICJJbnNlcnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAg
ICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAg
IHJldHVybiAiUGFnZURvd24iOworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAg
ICAgICAgY2FzZSBWS19QUklPUjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAg
ICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAg
ICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAg
ICAgICBjYXNlIFZLX1NOQVBTSE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7
CisgICAgICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJ
R0hUOgotICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJp
Z2h0Il9zOwogICAgICAgICBjYXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Ny
b2xsIjsKKyAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NF
TEVDVDoKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAi
U2VsZWN0Il9zOwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7
CisgICAgICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRo
YXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRv
QVNDSUlVcHBlcihrZXlDb2RlKSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2Eu
LjgwN2Q1NzIzNDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xv
Y2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmlu
ZyBhbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJh
bGwgZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5
cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAK
QEAgLTc0LDM0ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JF
eHRlbnNpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1pbWV0eXBlTWFwOwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy9maWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ0eHQiLCAidGV4dC9wbGFpbiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJh
cHBsaWNhdGlvbi9wZGYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNh
dGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQv
Y3NzIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieG1sIiwgInRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
eHNsIiwgInRleHQveHNsIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGlj
YXRpb24veC1qYXZhc2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFw
cGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwg
ImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIs
ICJhcHBsaWNhdGlvbi9yc3MreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJj
aGl2ZSIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2
Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJp
bWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVn
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgidGlmZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aWNvIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInR4dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInBkZiJfcywgImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiaHRtbCJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aHRtIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3Ms
ICJ0ZXh0L3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94
c2wiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNh
dGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAi
YXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3Mi
X3MsICJhcHBsaWNhdGlvbi9yc3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3
ZWJhcmNoaXZlIl9zLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJzdmciX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgianBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgianBlZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBu
ZyJfcywgImltYWdlL3BuZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAi
aW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdl
L3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBV
U0UoSlBFR1hMKQotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlm
CiAgICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2
YzM4YzguLjY2ODVlZDk5MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcApAQCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFz
RGF0YSgpCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3Ry
aW5nPiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1h
dC5jZkZvcm1hdCA9PSB1cmxGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09
IHVybFdGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1s
aXN0Iik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAo
Zm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0
LmNmRm9ybWF0ID09IHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0
cy5hZGQoInRleHQvcGxhaW4iKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3Mp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpy
ZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvaHRtbCIpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3Mp
OworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRv
VmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlYWRPcmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0Rh
dGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRU
eXBlRnJvbU1JTUVUeXBlKHR5cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRh
VHlwZVRleHQpCkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0
Q0ZIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwog
ICAgIH0KIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAog
U3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVj
dCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBp
ZiAod2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAg
IG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7
CisgICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0
cmluZygpLCBjZmh0bWxEYXRhKTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9i
YWxEYXRhKGNmaHRtbERhdGEpOwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVE
KGRhdGEtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAg
ICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlU3RyKQogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFT
U0VSVCh1cmwuaXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4K
IAotICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwg
dGl0bGVTdHIsICIuVVJMIiwgdHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1Q
YXRoRnJvbVVSTE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0
cmluZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAi
XHJcbiIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAK
QEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1h
dCBDRl9IVE1MIHRvIGJlIGFibGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMg
YXMgYSBsaW5rCiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBW
ZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFz
dGVib2FyZFVSTC51cmwsIHRpdGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRN
TCh1cmxUb01hcmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBk
YXRhKTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwog
ICAgICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRh
dGEpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2
YWlsYWJsZShDRl9URVhUKSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAg
aWYgKEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBu
b3QgVVRGLTggb3IgZXZlbiBXaW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29k
aW5nPwotICAgICAgICAgICAgdGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExv
Y2soY2JEYXRhKSk7CisgICAgICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2Fz
dDxjaGFyKj4oR2xvYmFsTG9jayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1h
Z2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAg
ICBHbG9iYWxGcmVlKG1lbU9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRl
bnNpb24uaW5zZXJ0KCIuIiwgMCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAg
ICAgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRp
dGxlLCBleHRlbnNpb24sIGZhbHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkg
ewpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFi
bGVEYXRhT2JqZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAg
bWFya3VwVG9DRkhUTUwobWFya3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01F
RElVTSBtZWRpdW0geyB9OwogICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJk
Li5lMTY1MzNiZTJkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
eXN0ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5m
by5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1i
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3Ry
aW5nKCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNh
c2UgV2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0
dXJuICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsK
ICAgICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAg
ICAgICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAg
ICByZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAg
ICAgY2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAg
IHJldHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0
dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5
ODsgV2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4g
Ildpbk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZl
cnNpb24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAg
ICByZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmlu
Zzo6bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpv
ciwgJy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsx
NTMsMTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJp
bmcgYXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkK
LSAgICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwog
ICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJF
X0FNRDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAi
OyBXaW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9D
RVNTT1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7
CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMu
LjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2
LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2Um
IHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRl
c3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2Fk
ZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xv
YWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAg
TGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2
OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEg
QEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNv
ZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3Mp
OwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JN
ZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFl
cnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUy
NDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25z
ZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNT
aG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29s
ZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cp
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29t
bWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dz
aW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQi
KTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5n
Q29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJs
ID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1
cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlm
ICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0
V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAg
ICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAg
ICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAg
ICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAg
IHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAg
YXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAg
IHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAg
ICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVl
KCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3Zl
KHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAg
YXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3Ry
aW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAi
ZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRv
TG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAg
ICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVs
ZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7
ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAK
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
ICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pT
T05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10g
PQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAg
ImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQg
fHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBA
IC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAg
ICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4g
ZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1
ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlz
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAg
ICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVz
dWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8
IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2Up
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAi
ICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAg
ICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1l
bnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAg
ICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50
LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAg
ICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgog
ICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRl
cmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAg
ICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCkt
PnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNv
b2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29v
a2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikp
OworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1
ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNv
b2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5
LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9u
Il9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGly
ZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRl
LnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAt
MjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjpp
bnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0
ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlw
ZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAg
ICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBl
OjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChp
bnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAg
ICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3Vz
ZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJU
eXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0
dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAg
ICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAg
ICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBj
YXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7Cisg
ICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQ
b2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25P
cmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1
cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7Cisg
ICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxl
bWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3
MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAj
aWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7
CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RB
UkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAg
ICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBm
b3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJn
ID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVu
dChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBw
b3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50
KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAg
dGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFs
dWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAg
IGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAs
NyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHko
SlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NV
UkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUo
InNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Np
b24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBh
YmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0
Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlz
bWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2Vw
dCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRp
c21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNj
ZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRl
Z3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2Fz
ZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
UGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5
ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2Fw
YWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRk
cjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFk
ZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0
QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJn
ZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmco
dGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRk
cjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0
YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6
dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVn
ZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNv
Y2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+
YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9
IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hU
VFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNv
Y2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9u
c2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlk
IEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQg
SFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVu
Y29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5k
RW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBz
b3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291
cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZh
bGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5n
ZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNl
LCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5z
YXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29w
eVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28K
ICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2Zp
ZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVy
cm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJv
cigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBz
dHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQ
cm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJv
dG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7
CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24i
OworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhT
dXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1
ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
Ym9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwg
TlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0
aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9k
U2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkK
IHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmlu
Zzp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
ZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3Ro
ICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAg
Y2hhciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJl
VHlwZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRl
cmNoYW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYg
c3RyY2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBh
dXRvIG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8v
IGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICBy
ZXR1cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDpp
XSkgIT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtOTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24o
V0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4
Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0g
ICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmlu
ZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RT
aWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRo
b2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZv
Y2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1l
dGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2ln
bmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9w
ZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1
cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2Vs
X2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5
QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVt
b3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVt
b3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVy
ZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4
KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2Nv
bCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWly
ZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNv
ZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9y
LCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlC
bG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdl
ciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5
cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAg
IEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2ln
bmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
cmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVu
dEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVy
ZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24u
c2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05T
TWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1Np
Z25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4
cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJv
dG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWdu
YXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZh
bGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0
dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUp
KSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0
ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0
ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJs
b2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52
b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9i
amVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxD
aGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVw
bHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5n
Q2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNl
LCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3
YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRl
cmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRp
b24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tX
S1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fybmlu
Z0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdh
cmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIg
aXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0
cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVy
biAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmki
OworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90
cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBA
QCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQg
KnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwog
I2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlk
ZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2Nv
bXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUu
Y29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1
cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9z
OworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0
X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
OjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAg
cGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywg
Il9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1Q
cmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVp
Y2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2
NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQu
LmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAg
ICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9u
ZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNh
YTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxz
IHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBp
biBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpB
cHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIp
OworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0Vf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBA
IC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3
aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpV
bmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAg
QCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywK
KyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJL
ZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAg
InkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSsw
MDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJf
cywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9z
LCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUi
LCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUi
X3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3
ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVp
cmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdl
bnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0
aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYs
NyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lk
ZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8g
VGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hk
IGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lk
ZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAg
IG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29t
LmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hv
c3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBj
Mjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03
MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50
JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBN
ZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3Vt
ZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1l
bnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxl
KCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJu
IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVu
ZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5l
dmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3
NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdl
YkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRH
cmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQu
LmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFp
blJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
ICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcK
IHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
W2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXIt
PnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZh
Mzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHls
ZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJl
bmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAg
X3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxl
Q29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEz
IEBAIFdlYlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVS
TCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVz
b3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0K
IAogV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJS
ZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBk
YXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4u
ZGYwNzgxZjQxMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3Jp
cHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVj
dC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmpl
Y3QoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9i
amVjdCJfcyk7CiB9CiAKIFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlw
dE9iamVjdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0
Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2NyaXB0V29ybGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIGlubGluZSBXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdy
YXBwZXJXb3JsZD4mJiB3b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwg
dGhpcyk7CiAKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdv
cmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3
ICs1Niw3IEBAIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxk
cygpLnJlbW92ZShtX3dvcmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCog
V2ViU2NyaXB0V29ybGQ6OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBA
IC00OSwxMyArNDksMTMgQEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2Vj
dXJpdHlPcmlnaW4pCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZWN1cml0eU9yaWdpbiJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJp
dHlPcmlnaW4oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1Zh
bHVlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNw
cAppbmRleCA4YmI4MGEyZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlh
bGl6ZWRKU1ZhbHVlKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6
On5XZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0
cjxXZWJTZXJpYWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3Rh
bmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4
IDYyMDdiNTZhN2Y2Ny4uMDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlRleHRSZW5kZXJlci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIq
IFdlYlRleHRSZW5kZXJlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJU
ZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJl
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4
dFJlbmRlcmVyIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuY3BwCmluZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAg
ICAsIG1fc2VuZGVyKHNlbmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0K
IAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0
NWVkNjkzYy4uNTA5OWJhMGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBA
IC00MiwxMyArNDIsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6Oldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQo
bV9jbGllbnQpOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQog
CiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIq
IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1
MzFkMTA2OTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3Jl
ZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlh
bC5jcHAKQEAgLTM3LDEzICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50
aWFsKGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3Jl
ZGVudGlhbCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMQ3JlZGVudGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
Q3JlZGVudGlhbCJfcyk7CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFs
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMQ3JlZGVudGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJM
Q3JlZGVudGlhbCJfcyk7CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6
OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFByb3RlY3Rpb25TcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAK
QEAgLTM3LDEzICszNywxMyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rp
b25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90
ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVS
TFByb3RlY3Rpb25TcGFjZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25T
cGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNw
YWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2U6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3Bv
bnNlLmNwcAppbmRleCBhNWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3Rh
dGljIFN0cmluZyBsb2NhbGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3Rh
dHVzQ29kZSkKIFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVS
TFJlc3BvbnNlOjp+V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25z
ZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25z
ZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAg
cmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0g
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwg
Imh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwg
MCwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFu
Y2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAppbmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CkBAIC0zNSwxMyArMzUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAg
ICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50
VVJMUGF0dGVybiJfcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJD
b250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09N
UHRyPFdlYlVzZXJDb250ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJk
YzY1NTkzNC4uZTU1YTI0MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApA
QCAtNDQ2LDcgKzQ0Niw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZp
ZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJW
aWV3Ojp+V2ViVmlldygpCkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQog
CiAgICAgV2ViVmlld0NvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBA
IC0xOTk1LDExICsxOTk1LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQ
YXJhbSwgTFBBUkFNIC8qbFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3
UGFyYW0pKSB7CiAgICAgICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZy
YW1lLmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAg
IHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsK
ICAgICAgICAgY2FzZSBVbmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuY29tbWFuZCgiVW5kbyJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVj
dXRlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBA
IGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYg
ZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50
ICYmIGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsK
IAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24p
IHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJv
dXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBl
eGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcg
QEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJD
b3B5IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJl
dHVybiBTX09LOwogfQogCkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1
dChfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29t
bWFuZCgiQ3V0Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMs
NyArNDc0Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8q
c2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VM
VCBXZWJWaWV3Ojpjb3B5VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RS
VG9LVVJMKHVybCksICIiKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9L
VVJMKHVybCksIGVtcHR5U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00Nzcz
LDcgKzQ3NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24q
IC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcyku
ZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFl
MDhlNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJp
dmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUu
Y3BwCkBAIC05MCwxMSArOTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2
YXRlOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZh
dGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJXb3JrZXJzUHJpdmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vy
c1ByaXZhdGUiX3MpOwogfQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldv
cmtlcnNQcml2YXRlIl9zKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2su
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5j
cHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMp
CiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0
b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0
b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lm
ICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNp
emUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJh
c2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1T
VkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6
Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgp
KTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJs
b2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykp
OworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
Mi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNT
RVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4
IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQs
NyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0
V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0K
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRy
eSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4o
ZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhj
ZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNF
Il9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9Owog
ZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQg
KzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUs
IElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBl
KSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3Bv
bnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAg
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhl
dGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9z
OwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0
Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZl
dGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVz
IH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7
ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAg
ICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMg
fSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRj
aGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZh
Y3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBj
aGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2
ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4
cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7
IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0g
fSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9
fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0
KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcx
ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGlj
IHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAg
d2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAg
ICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9u
c2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0g
ICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0
ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3Ms
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50
aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4
ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0Fw
cEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAg
ICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwK
KyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBz
ZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtO
U011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVy
Mi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBX
ZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkK
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODks
OSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlT
V1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0
Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8g
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJu
YWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7
CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0
VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dS
RVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4
ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZh
dWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAg
ICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVz
dC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRp
YXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGVi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9y
aWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJl
YWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2
ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMg
PSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRF
U1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMz
MiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0p
VEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRp
b24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAg
ICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFT
dG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0
ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIi
RE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtn
eXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcu
MC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0
aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOwor
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJv
ZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChX
ZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFt
ZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxw
dHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAg
ICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3Ms
IHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3Rh
dGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAg
IFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRl
KCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBw
bGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAK
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkK
IHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0
SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0
KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29u
c3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5y
ZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5V
bnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFp
blVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxv
Zyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0g
UiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQp
ID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2
ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZp
Y2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1s
IiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNl
cnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBI
ZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJN
ZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFu
IGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIv
c3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0g
fSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJl
Z2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAog
ICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29y
ZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5y
ZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRl
eCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9k
ZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwi
LCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3ki
LCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwi
X3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4
Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNv
b3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAg
IEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIg
fSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwg
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7
Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0
ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2lu
IiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7
ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5l
ci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdl
YkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsg
IkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAK
ICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5
Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZp
ZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91
dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRD
b250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlv
bmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
X3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJl
dGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+
Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5h
dmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsg
fSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsg
IlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQor
c3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZp
Z2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0s
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJU
ZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQog
ewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVu
dE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZp
Z2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRN
b2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJ
UGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBb
d2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsK
KyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwg
Q0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFu
ZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xp
Y3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50
XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RX
ZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250
ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAg
ewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIg
YWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4
IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0
b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAg
IE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAg
ICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFh
ZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAK
KysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRl
clR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlw
ZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxT
dHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44
Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cu
ZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3Mp
OwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484774"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456471</attachid>
            <date>2022-04-02 14:07:00 -0700</date>
            <delta_ts>2022-04-02 14:38:25 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>175988</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJH
UFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWEuLmJlN2ZjNGI4
NmVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUv
SW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9n
cmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgc3RhdGljIFN0cmluZyBhZGFwdGVyTmFtZShXR1BVQWRhcHRlciBhZGFwdGVyKQogewogICAg
IFdHUFVBZGFwdGVyUHJvcGVydGllcyBwcm9wZXJ0aWVzOwogICAgIHdncHVBZGFwdGVyR2V0UHJv
cGVydGllcyhhZGFwdGVyLCAmcHJvcGVydGllcyk7Ci0gICAgcmV0dXJuIHByb3BlcnRpZXMubmFt
ZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgcHJvcGVydGllcy5uYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8U3VwcG9ydGVkRmVhdHVyZXM+IHN1cHBvcnRlZEZlYXR1cmVzKFdHUFVBZGFwdGVyIGFkYXB0
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAppbmRleCA5NjlhN2EyY2E3YjkuLjhj
OTQ3NWFmNTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBAIC01OTIsNyAr
NTkyLDcgQEAgdm9pZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX0ZvcmNlMzI6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JU
eXBlX1ZhbGlkYXRpb246Ci0gICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6
OmNyZWF0ZShtZXNzYWdlKSB9IH07CisgICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9u
RXJyb3I6OmNyZWF0ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICBl
cnJvciA9IHsgeyBPdXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDhlYjRlOTI2YjlkYS4uMGQ0
ZDQ2YTBlZDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBj
b25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4uZWEyNTI3MzJjYWYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0K
QEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhD
b3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQog
Ci1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAgIFN0
cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5k
YW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2Vk
Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAg
ICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
SW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VT
Y3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3Rl
ZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNl
bGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAg
IGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25D
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3Rh
dHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVl
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBh
bmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0
YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25D
aGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBB
WE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNh
bGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2Vi
Q29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVy
cmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhl
IHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4K
LSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShu
b3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBh
dXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0
aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNy
ZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlm
aWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0
aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVj
dC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmlj
YXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hl
Ojpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBv
YmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkw
YzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3Jv
bGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJl
c3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9u
KTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUg
PSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6
QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6
OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAg
ICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAg
ICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRp
b25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNj
cm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07
CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0
aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAg
IH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3Jv
bGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2
OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2Vw
dGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVj
dGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50
KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0
IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5Li4zMWVmYzI4
MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRp
bmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIKICAgICBpZiAoIXZhbHVlKQogICAgICAg
ICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNoYXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikg
ewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2
b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0
Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVt
ZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQg
d2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRl
ZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVz
IHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxz
byByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5z
dWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAg
ICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNz
IE9mZnNjcmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZh
cz4sIHB1YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRp
b25zIHsKLSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5n
IHR5cGUgPSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDUx
MjNiYjJkMGMwNC4uZDQ4NDFkZjNkZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFn
ZU92ZXJsYXlzLmNwcApAQCAtMjUyLDE0ICsyNTIsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1v
dXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsK
IAogICAgIEZsb2F0UmVjdCByZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQpOwotICAgIGJv
b2wgdmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgdmFsdWVGb3JTZXR0
aW5nKEFTQ0lJTGl0ZXJhbCk7CiAgICAgICAgIAogICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rp
b25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOwogCiAgICAgc3RydWN0IFNldHRpbmcgewotICAgICAg
ICBTdHJpbmcga2V5OwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCB2YWx1ZTsK
KyAgICAgICAgQVNDSUlMaXRlcmFsIGtleSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAg
ICAgIEFTQ0lJTGl0ZXJhbCBuYW1lIHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAg
Ym9vbCB2YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsgICAgCiAKICAgICBGaXhlZFZlY3RvcjxTZXR0
aW5nPiBtX3NldHRpbmdzIHsKQEAgLTM3OSw3ICszNzksNyBAQCBGbG9hdFJlY3QgSW50ZXJhY3Rp
b25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAg
ICAgfTsKIH0KIAotYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIG5hbWUpCitib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1lKQogewogICAgIGZvciAoY29uc3QgYXV0byYg
c2V0dGluZyA6IG1fc2V0dGluZ3MpIHsKICAgICAgICAgaWYgKG5hbWUgPT0gc2V0dGluZy5rZXkp
CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdS
ZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIAogICAgIGNv
bnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJy
ZWdpb25zIikpIHsKKyAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIl9zKSkgewogICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbnRl
cmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LAogCiAgICAgYXV0byByZWdpb24gPSBhY3RpdmVSZWdpb24oKTsKIAotICAg
IGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICBpZiAo
cmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgYXV0
byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1cykgewogICAgICAgICAgICAgR3JhZGll
bnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwogICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBv
aW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOwpAQCAtNDUxLDEwICs0
NTEsMTAgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVy
bGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgICAgIGF1dG8gbWFrZUdyYWRp
ZW50ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3VuZCwgR3JhZGllbnQ6OlJhZGlhbERhdGEg
Z3JhZGllbnREYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNy
ZWF0ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpT
UkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwotICAg
ICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZv
clNldHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNl
dHRpbmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpIHsKICAgICAgICAg
ICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUp
LmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENv
bG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29s
b3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAu
MSkgfSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8
fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgICAgICAgICAgfSBlbHNlIGlm
ICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJh
aW4iX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwg
Q29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAg
ICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9y
V2l0aEFscGhhKDApIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2NiwxOCArNDY2LDE4
IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAg
IGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0gNTA7Ci0gICAgICAgIGJvb2wgc2hvdWxk
Q2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOworICAgICAgICBib29sIHNob3VsZENsaXAg
PSB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpOwogICAgICAgICBWZWN0b3I8UGF0aD4gY2xpcFBh
dGhzOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQogICAgICAgICAgICAgY2xpcFBhdGhzID0g
cGF0aHNGb3JSZWdpb24oKnJlZ2lvbik7CiAKLSAgICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygi
d2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKTsKKyAgICAgICAgYm9vbCBzaG91bGRV
c2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9y
U2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSk7CiAKICAgICAg
ICAgaWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRDbGlwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBh
dGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1p
bkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQg
cmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRo
LmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVh
dGUoZ3JhZGllbnREYXRhKHJhZGl1cyAqIDEuNSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9k
OjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEs
IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAg
ICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaGFzTGlnaHRCYWNr
Z3JvdW5kID0gZmFsc2U7Ci0gICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAm
JiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciIpKQorICAgICAgICBpZiAoIXNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3Ii
X3MpKQogICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0gcmVnaW9uLT5oYXNMaWdodEJh
Y2tncm91bmQ7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAgIGZsb2F0IHJh
ZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91
bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAg
ICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXpl
Il9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDog
ZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudCht
YWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEocmFkaXVzKSkpOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICB9CkBA
IC01MjIsOSArNTIyLDkgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZl
bnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8KIAogICAgIHN0ZDo6b3B0
aW9uYWw8Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAotICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJj
dXJzb3IiKSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0gICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiaG92ZXIiKSkKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJfcykpCiAg
ICAgICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNvcigpOwogCiAgICAgYXV0byBldmVudElu
Q29udGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMoZXZl
bnQucG9zaXRpb24oKSk7CkBAIC01NDQsNyArNTQ0LDcgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3Jt
TW8KICAgICBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA9IGV2ZW50SW5Db250
ZW50c0Nvb3JkaW5hdGVzOwogICAgIG92ZXJsYXkuc2V0TmVlZHNEaXNwbGF5KCk7CiAKLSAgICBp
ZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1
dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGlmIChldmVudC50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2
YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBy
ZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRp
bmdzQmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VD
b2NvYS5tbQppbmRleCA0Nzc0Y2UwOGE1YjguLmUwMTZmOTIxZDVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCkBAIC02MywxNSArNjMsMTUg
QEAgYm9vbCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgp
CiAKIHZvaWQgU2V0dGluZ3NCYXNlOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiB7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyIsIFVTQ1JJUFRfVFJBRElU
SU9OQUxfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIiwgVVND
UklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lu
byBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwotICAgIHNldFN0
YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsK
LQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0g
ICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNl
dFNlcmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Fuc1Nl
cmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsK
KyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIl9zLCBVU0NSSVBUX1NJTVBM
SUZJRURfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQ
cm9OIl9zLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJUFRfSEFOR1VMKTsKKworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRT
ZXJpZkZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2Fuc1Nl
cmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NPTU1PTik7CiB9CiAKICNpZiBF
TkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCBl
YmNkYjFkZDA4MTIuLjVhOTQ4OTAwOTQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBVc2Vy
QWdlbnRUeXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0
aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNpb24gPSBlbXB0eVN0cmluZygp
LCBVc2VyQWdlbnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVsdCk7CiAKLVdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNPUkVfRVhQT1JUIEFTQ0lJTGl0
ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeXN0ZW1N
YXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAjZWxzZQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTQ1ZmMwNjQzMzk0Li44YjdlNzQx
YjdjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTEy
Myw3ICsxMjMsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9u
R1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgbV9zcmMgPSBHU1RfRUxF
TUVOVF9DQVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQVVESU9fU1JDLCAicmF0ZSIs
IHNhbXBsZVJhdGUsCiAgICAgICAgICJidXMiLCBtX3JlbmRlckJ1cy5nZXQoKSwgImRlc3RpbmF0
aW9uIiwgdGhpcywgImZyYW1lcyIsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwg
bnVsbHB0cikpOwogCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiKTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlv
U2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCJtdXNpYyJfcyk7CiAgICAgbV9hdWRpb1Np
bmtBdmFpbGFibGUgPSBhdWRpb1Npbms7CiAgICAgaWYgKCFhdWRpb1NpbmspIHsKICAgICAgICAg
R1NUX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdWRpbyBzaW5rIGVsZW1lbnQi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5l
NjJjZmQ3NWRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3
ICs1NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVu
Y2lsIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25O
YW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMg
bWF4RnJhbWVEdXJhdGlvbiA9IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBH
Q0dMc2l6ZWkgd2lkCiAKIC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xF
Q29tbW9uIGZvbGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAg
ICAgLy8gRklYTUU6IFNpbmNlIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMg
YXJlIG5vdCBzaGFyZWQsIHdlIGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29u
c3RydWN0aW5nIHRoZSBjb250ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0
aGF0IHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdM
QU5HTEUuaAppbmRleCBkOWQzNjc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuaApAQCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBp
biBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBj
b3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmls
aXRpZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KTsKKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAg
ICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBH
Q0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVy
T2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggN2U2MzQ2ZmZhMTgxLi4z
ZjM1NDhkYTBmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC03MDEsNyArNzAx
LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRUcmFuc2Zvcm0oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
Y29uc3QgQ0FUcmFuc2Zvcm0zRCYgdHJhbnNmb3IKICAgICBidWlsZGVyLmFwcGVuZCgnWycsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMSksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEyKSwgJyAnLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMpLCAnICcsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMjMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNp
b24odHJhbnNmb3JtLm0yNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
dHJhbnNmb3JtLm0zMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFu
c2Zvcm0ubTMyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9y
bS5tMzMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0z
NCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MSks
ICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQyKSwgJyAn
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDMpLCAnICcsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00NCksICddJyk7CiB9CiAK
LXN0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVu
dCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKK3N0YXRpYyB2b2lkIHBy
aW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCwgQVNDSUlMaXRlcmFs
IGxhYmVsLCBDR0NvbG9yUmVmIGNvbG9yKQogewogICAgIENvbG9yIGxheWVyQ29sb3Iocm91bmRB
bmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvcikpOwogICAgIGlmICghbGF5ZXJDb2xvci5pc1ZhbGlk
KCkpCkBAIC03NjIsMTAgKzc2MiwxMCBAQCBzdGF0aWMgdm9pZCBwcmludExheWVyKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIGludAogICAgIH0K
IAogICAgIC8vIFByaW50IGJhY2tncm91bmRDb2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9y
KGJ1aWxkZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiLCBDQUNGTGF5ZXJHZXRCYWNr
Z3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHByaW50Q29sb3IoYnVp
bGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xvciJfcywgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IGJvcmRl
ckNvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJv
cmRlckNvbG9yIiwgQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIl9z
LCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAg
ICAvLyBQcmludCBtYXNrc1RvQm91bmRzIGlmIG5lZWRlZAogICAgIGlmIChib29sIGxheWVyTWFz
a3NUb0JvdW5kcyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBn
ZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAg
ICAgcmV0dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5h
bWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1
cm4gInNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09
IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkK
LSAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlm
Il9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0lu
ZGV4OjpNb25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAg
ICAgIHJldHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNE
YXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJu
ICJjdXJzaXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkg
PT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkK
LSAgICAgICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwog
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0
LXN5c3RlbS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAj
ZW5kaWYKIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAog
I2lmIEZDX1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIs
NyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9u
RnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBz
LmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNv
bmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAg
ICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cAppbmRleCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1
Y3R1cmVWYWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewog
ICAgIGlmIChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkg
ewogICAgICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+
KHVzZXJEYXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhm
aWVsZElkKSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5z
ZXRWYWx1ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUt
PnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5i
ZDZiZTZmN2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIu
Y3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3Ry
eUxvb2t1cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAo
c2hvdWxkQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6
OlllcykgewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0
b3JpZXM7IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAg
IGF1dG8qIGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFj
dG9yaWVzLT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50
X2ZhY3RvcnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNT
KTsKKyAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0
X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAg
ICAgICAgYXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAg
IGlmIChjb21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAg
aXNVc2luZ0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rv
cmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVv
RGVjb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNs
YXNzaWZpZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5l
clR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYg
YXYxRGVjb2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXND
b250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0
Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFy
ZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiks
IGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVy
Q29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNV
c2luZ0hhcmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cgogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAy
IikpOwogICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRp
b01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246
OkRlY29kaW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7
CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVn
IikpOwogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8v
eC1tcGVnIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxh
eWVyOjpOZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0g
bV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8g
cm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7
CiAgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9s
ZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykK
QEAgLTE3MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpo
YW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3Bh
cnNlX2Vycm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAg
ICAgIEdTVF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1l
c3NhZ2UsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JN
ZXNzYWdlID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7
IGVyci0+bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtT
dGF0ZTo6RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1Rf
U1RSRUFNX0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODks
NyArMTg4OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNz
YWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVf
aGFzX25hbWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1Rf
UFRSX0ZPUk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkg
PSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAg
ICAgICAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmlu
ZyB7IHVyaSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpA
QCAtMjEyNyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2No
YXIqIHRpdGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFn
cywgR1NUX1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50
KFN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVu
dCkKICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9h
ZFRlbXBsYXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJSZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVz
JyIsIG9sZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkp
OwogCi0gICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2Fk
VGVtcGxhdGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQ
cmVmaXhQYXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVD
cmVhdGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3du
bG9hZEZpbGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQo
KSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAot
ICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0
KCkpKSkgeworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6
OmZyb21VVEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygi
Q291bGRuJ3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwg
ZG93bmxvYWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEg
KzI0NzAsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9j
YXRpb24oKQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0
aGUgY3VycmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxv
Y2F0aW9uIHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3
TG9jYXRpb24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNl
VXJsLCBuZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3Ry
aW5nIHsgbmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxh
eWJpblVybFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJy
ZW50LXVyaSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJM
IHBsYXliaW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5Ymlu
VXJsIHsgU3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBs
YXliaW5VcmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVs
aW5lKCksICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEs
NyArMjcwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQ
bGF5QmluKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+
ZWxlbWVudElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVy
Il9zOwogCiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6
IHVybC5wcm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApA
QCAtMzkxOCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpwYXJzZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAg
IEdzdEJ1ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2Vf
cHJvdGVjdGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRy
KTsKIAotICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRh
fSk7CisgICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3Rl
bUlkIH0sIGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFk
ZChHU1RfRVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00
MDM5LDcgKzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxl
UHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtl
eVN5c3RlbVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRy
OwogICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1V
VUlELCAmaW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKHtldmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEg
fSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApp
bmRleCBmM2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHBy
b2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVu
Z2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0K
KyAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAi
R1N0cmVhbWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9U
cmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2Ey
YzIxZmQ2MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcm
IHZhCiB7CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RB
R19MQU5HVUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFn
X2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgbGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182
MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZl
cnRlZCB0cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2Uu
dXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAg
ICAgICAgdmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciog
dGFnTmFtZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChn
c3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkp
KSB7CiAgICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRh
Z05hbWUsIHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsK
KyAgICAgICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2Jl
ODA1MThlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdU
aW1lRm9yRWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2Jl
KHNpbmtQYWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBp
bmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBh
dXRvIFttb2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NU
X1BBRF9QUk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5G
T19EQVRBKGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
KyAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVy
cHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0
X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1Rf
UEFEX1BST0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2Zy
ZWUpOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdU
aW1lRm9yRWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAg
ICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVt
ZW50TmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3Ry
aW5nIGVsZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAg
ICAgICAgIGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1l
bnROYW1lKTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50
TmFtZSwgc3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAo
KSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRj
MTIwY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwg
MjAsIDApCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19n
ZXRfbWltZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNv
ZGVjLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQo
KSB9OwogI2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAu
LmQwYWQ2NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRy
YUhlYWRlcihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAg
R1NUX0RFQlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1l
LCBmaWVsZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0
YXRpY19jYXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRI
VFRQSGVhZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVl
c3QtPnNldEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmll
bGRDb250ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0
LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBz
cmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVz
dGVkUG9zaXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0
aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1B
VCwgbWVtYmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1i
ZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwg
dXJsIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7
IHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcg
KzY1Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNy
Yyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVm
ZXJyZXIobWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgp
KTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRo
b2QuZ2V0KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFj
Y2VwdC1FbmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcy
LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBz
cmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZl
cnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAg
IGlmICghZ19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51
dGY4KCkuZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5h
cHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNl
dEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhU
VFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVx
dWVzdGVkUG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsK
ICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEs
MTkgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBz
cmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Zm9ybWF0ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9G
T1JNQVQgIi0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5n
ZSwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9
KTsKICAgICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3Rl
bnQgY29ubmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDog
ImRpc2FibGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsK
KyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5l
Y3Rpb24sICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAg
ICBnc3Rfc3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRX
ZWJTcmNQcm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMg
cmVxdWVzdCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwg
IjEiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5
TWV0YWRhdGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyks
IHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVx
dWVzdE51bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2Vi
S2l0V2ViU3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5Ymlu
VVJJKGNvbnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5n
IH07CisgICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRp
YyBnY2hhciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0Fw
cGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRk
ODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3
IEBAIHN0ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5
cGUsIEZsb2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1l
ZGlhVHlwZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdz
dFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9u
KCk7Ci0gICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlh
VHlwZSkpIHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdT
dHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7
IG9yaWdpbmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBl
OjpJbnZhbGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENh
cHMsIEdTVF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25T
aXplID0gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVl
X29yKEZsb2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYs
IE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VC
bG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgp
ID8gImJsb2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtl
U3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJf
cyA6IHVybC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVS
SS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9v
bCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVk
IHVzaW5nIG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJh
bWVidWZmZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExF
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFt
ZWJ1ZmZlcl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAg
IGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1l
ID09ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikp
Ci0gICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
ZHJhd19pbnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9kcmF3X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAg
ICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3Rh
bmNlZCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19p
bnN0YW5jZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4
dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql9mcmFtZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgi
X3MpOwogCiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdi
YTguCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3
LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBH
TF9PRVNfdGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5k
IEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAo
bmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJl
X2hhbGZfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwg
bmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIp
IHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQi
KTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X3RleHR1cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
T0VTX3RleHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYg
KFBMQVRGT1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9z
KTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7
CiAjZW5kaWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJf
dGV4dHVyZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwog
ICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
KQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9z
KTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRG
T1JNKEdUSykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5H
TDo6Z2V0RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBi
b29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7
Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBv
cnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29s
IHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJh
eV9vYmplY3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5
OWM0ZWUzYy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uLmNwcApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAg
ICBlbHNlIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NI
QURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVs
c2UKLSAgICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hN
YXA8UGxhdGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJj
ZUVudHJ5Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5m
aW5kKHNoYWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3Vy
Y2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkm
IGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRl
bnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0
Zm9ybUdMT2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1
NGIxNzAwMTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2ds
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJB
WVNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5z
dGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9D
ID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAg
ICAgICAgICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAg
ICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1f
Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAg
ICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0lu
c3RhbmNlZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6
Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAppbmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFs
PFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1
bHRzKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlm
IChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFi
bGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24g
fTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvblN0cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRo
IGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAg
ICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3
ZjVhMzkxMi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aApAQCAtNDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0
ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8v
IGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9w
ZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5j
aWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZh
bGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4
ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkg
aGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXpl
LCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3Ms
IEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5
Li43YjU0YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxp
ZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFs
aWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUm
IHNpemUpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xP
cGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVz
ZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAg
ICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikp
CisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiX3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9E
RVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxE
ZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsx
MDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJ
bnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0
ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNr
ZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMu
ZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRl
cy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJP
LgogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0
LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29u
dGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkg
eworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdM
X0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJp
YnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0
dHJpYnV0ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmlu
ZGV4IGM4Y2FjNDhjNmMwNS4uYzdhMWMyNzI1ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
RlBTQ291bnRlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6
OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyKCkKICAgICAsIG1fbGFzdEZQUygwKQogICAgICwgbV9m
cmFtZUNvdW50KDApCiB7Ci0gICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCA9IGdldGVudigi
V0VCS0lUX1NIT1dfRlBTIik7CisgICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCB7IGdldGVu
digiV0VCS0lUX1NIT1dfRlBTIikgfTsKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgbV9mcHNJ
bnRlcnZhbCA9IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25tZW50LnRvRG91YmxlKCZvaykpOwogICAg
IGlmIChvayAmJiBtX2Zwc0ludGVydmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDBkYjk4MDIxODA1NS4uNzY2
OWExMWRiYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTQ1Myw3ICsxNDUzLDcgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoKQogewotICAgIGNsaWVudCgp
Lm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGlt
ZSk7CisgICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmlu
ZygpLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVkKCkKQEAgLTE0
OTAsNyArMTQ5MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBJbm5lckxheWVyKFRleHRTdHJlYW0mIHRl
eHRTdHJlYW0sIGNvbnN0IFN0cmluZyYgbGFiZWwsIENvb3JkaW5hCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6ZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRleHRT
dHJlYW0sIE9wdGlvblNldDxMYXllclRyZWVBc1RleHRPcHRpb25zPiBvcHRpb25zKSBjb25zdAog
ewogICAgIGlmIChvcHRpb25zICYgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVkZUNvbnRl
bnRMYXllcnMpCi0gICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJiYWNrZHJvcCBs
YXllciIsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CisgICAgICAgIGR1bXBJbm5l
ckxheWVyKHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXllciJfcywgbV9iYWNrZHJvcExheWVyLmdl
dCgpLCBvcHRpb25zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5
NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJh
Z0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFn
UGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOwor
ICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1
bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2Rl
ODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBA
IC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAg
ICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2Ns
YXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwog
fQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JV
c2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0Ns
YXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBP
UyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9
CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQ
bGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxl
cigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJu
YWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2Us
IFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRl
cm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5
cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkK
ICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2
NmJmNzJmLi40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRh
aW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8K
ICAgICBhdXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRy
YWNrcyhtX3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAg
ICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRl
b1RyYWNrID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBz
ZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7
CiAKICAgICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAl
cyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29u
dGVudFR5cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2Rp
bmdDb250YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFp
bmVyUHJvCiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAg
ICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlm
IChjb2RlY3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9
ICJhdWRpby94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9w
dXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsg
cmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAg
ICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAg
ICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApp
bmRleCA1MTY5MDQ1YzcwNWYuLjJkYzI3MTY2M2EzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTAyLDE1
ICsxMDIsMTUgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKIAogICAg
IENGU3RyaW5nUmVmIGRvbWFpbiA9IENGRXJyb3JHZXREb21haW4obV9wbGF0Zm9ybUVycm9yLmdl
dCgpKTsKICAgICBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluTWFjaCB8fCBkb21haW4gPT0g
a0NGRXJyb3JEb21haW5Db2NvYSkKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9t
YWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgIGVs
c2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykKLSAgICAgICAgbV9kb21h
aW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JE
b21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluUE9TSVgpCi0g
ICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWlu
ID0gIk5TUE9TSVhFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJy
b3JEb21haW5PU1N0YXR1cykKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9t
YWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAg
IGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbldpblNvY2spCi0gICAgICAgIG1fZG9t
YWluID0gImtDRkVycm9yRG9tYWluV2luU29jayI7CisgICAgICAgIG1fZG9tYWluID0gImtDRkVy
cm9yRG9tYWluV2luU29jayJfczsKICAgICBlbHNlCiAgICAgICAgIG1fZG9tYWluID0gZG9tYWlu
OwogCkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENG
U3RyZWFtRXJyb3IgZXJyb3IpCiAKICAgICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7CiAgICAgY2Fz
ZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3Rv
bUVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0g
ICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWlu
ID0gIk5TUE9TSVhFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZT
dHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3Rh
dHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21h
aW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQ
bGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX3VybC5pc0xv
Y2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgICAgICBpZiAo
IWZzUmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmls
ZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgIGF1dG8gZmlsZVBh
dGggPSBtX3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzTnVs
bCgpKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxl
RGV2aWNlSWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURl
dmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltO
U051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5T
VVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUlu
Zm9DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZp
Y2F0ZUluZm9DdXJsLmNwcAppbmRleCBlMGVlZjY4ODBmMmIuLjA3MWJiMWE0N2JlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5m
b0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0
aWZpY2F0ZUluZm9DdXJsLmNwcApAQCAtNDcsNyArNDcsNyBAQCBDZXJ0aWZpY2F0ZUluZm8gQ2Vy
dGlmaWNhdGVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAogCiBTdHJpbmcgQ2VydGlmaWNhdGVJ
bmZvOjp2ZXJpZmljYXRpb25FcnJvckRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
WDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcik7CisgICAg
cmV0dXJuIFN0cmluZyB7IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0
aW9uRXJyb3IpIH07CiB9CiAKIENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGUgQ2VydGlmaWNh
dGVJbmZvOjptYWtlQ2VydGlmaWNhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCmluZGV4IDYxMzY1MzFiNWIxYy4uNmIxNmZjMzRkZTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAg
LTM4Miw3ICszODIsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJE
Qjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksCiAKICAgICBTdHJpbmcgcmVx
dWVzdFBhdGggPSByZXF1ZXN0VXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChyZXF1ZXN0
UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlcXVlc3RQYXRoID0gIi8iOworICAgICAgICByZXF1
ZXN0UGF0aCA9ICIvIl9zOwogCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21h
aW4geyByZXF1ZXN0VXJsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA2ZDM0NjhlNDIyMjUuLjA0ZTY0Y2QyYzdh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVVdGlsLmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAgU3RyaW5nIGRlZmF1bHRQYXRoRm9yVVJM
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgU3RyaW5nIHBhdGggPSB1cmwucGF0aCgpLnRvU3RyaW5n
KCk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8ICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkKLSAg
ICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgYXV0byBsYXN0
U2xhc2hQb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKICAgICBpZiAoIWxhc3RTbGFz
aFBvc2l0aW9uKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAK
ICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoUG9zaXRpb24pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVF
bnRyeS5jcHAKaW5kZXggN2I0Njg1NWEwNTE1Li5hN2ExNTI3Yzg2YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNw
cApAQCAtNjEsMTAgKzYxLDEwIEBAIEN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25z
dCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyCiAgICAgZ2VuZXJh
dGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIAogICAgIG1faGVhZGVyRmlsZW5hbWUuYXBw
ZW5kKG1fYmFzZW5hbWUpOwotICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIik7
CisgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiX3MpOwogCiAgICAgbV9jb250
ZW50RmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1fY29udGVudEZpbGVuYW1lLmFw
cGVuZCgiLmNvbnRlbnQiKTsKKyAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50
Il9zKTsKIH0KIAogQ3VybENhY2hlRW50cnk6On5DdXJsQ2FjaGVFbnRyeSgpCkBAIC0xMzksOSAr
MTM5LDkgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZW5kKCk7CiAgICAgd2hpbGUg
KGl0ICE9IGVuZCkgewogICAgICAgICBTdHJpbmcgaGVhZGVyRmllbGQgPSBpdC0+a2V5OwotICAg
ICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVu
ZCgiOiAiX3MpOwogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKLSAgICAg
ICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQo
IlxuIl9zKTsKICAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxk
LmxhdGluMSgpOwogICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBo
ZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAg
ICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzYmQyY2M3NDI4NmUuLjcwMmM1YjMxYTAxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogICAgICAgICB9
CiAgICAgfQogCi0gICAgbV9jYWNoZURpci5hcHBlbmQoIi8iKTsKKyAgICBtX2NhY2hlRGlyLmFw
cGVuZCgiLyJfcyk7CiAKICAgICBtX2Rpc2FibGVkID0gZmFsc2U7CiAgICAgbG9hZEluZGV4KCk7
CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQog
ICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhG
aWxlUGF0aChtX2NhY2hlRGlyKTsKLSAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0
Iik7CisgICAgYXV0byBpbmRleEZpbGVQYXRoID0gbWFrZVN0cmluZyhtX2NhY2hlRGlyLCAiaW5k
ZXguZGF0Il9zKTsKIAogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7
CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0
ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3Jp
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bERvd25sb2FkLmNwcAppbmRleCBhYWYwYzhkOTQwNzAuLmIwOTI1NmIxOTgzZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5j
cHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0
KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGly
ZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Qu
c2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAg
ICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQo
RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21w
bGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3Jk
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4
IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRpYyBTdHJpbmcg
a2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtleUNvZGUpCiB7
CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToKLSAgICAgICAg
ICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgICAgICBj
YXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAg
ICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICAg
ICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9zOwogICAgICAg
ICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAg
ICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJTjoKICAgICAg
ICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAgICAgICAgICAg
cmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1
cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAgICAgIGNhc2Ug
VktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICByZXR1cm4g
IkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAg
ICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAg
IC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAgICByZXR1cm4g
IkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAgIGNhc2UgVktf
RVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgICAgICByZXR1
cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAgICByZXR1cm4g
IkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjI6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICByZXR1cm4gIkY0
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktfRjU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7CiAgICAgICAg
IGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgICAgIGNh
c2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEyOgotICAgICAg
ICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICAgICAgcmV0
dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAgcmV0dXJuICJG
MTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2UgVktfRjE1Ogot
ICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAg
ICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAg
ICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAgICAgICAgcmV0
dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAgIGNhc2UgVktf
RjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0dXJuICJGMTgi
X3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAg
ICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgotICAgICAgICAg
ICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgICAgIGNh
c2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAgICAgcmV0dXJu
ICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIi
OworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjIzOgotICAg
ICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAgICAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAgICAgIHJldHVy
biAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAgIGNhc2UgVktf
SE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICByZXR1cm4gIkhv
bWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuICJJbnNl
cnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNhc2UgVktfTEVG
VDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1cm4gIkxlZnQi
X3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24i
OworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2FzZSBWS19QUklP
UjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFn
ZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0dXJuICJQYXVz
ZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNlIFZLX1NOQVBT
SE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgICAgICByZXR1
cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAg
cmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgICAgICBj
YXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAgICAgICAgICAg
IHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAgICAgICAgICAg
IHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgICAg
ICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSsw
MDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiAiVSswMDdG
IjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBlcihrZXlDb2Rl
KSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIzNDMwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2lu
LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxv
YWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9h
ZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJl
dHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5k
ZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBA
QCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmll
dyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFw
OwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGgg
aW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFp
biIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwg
InRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1s
K3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlv
bi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uv
c3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJp
bWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4
dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywg
ImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJh
cHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3Mi
X3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9y
c3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmci
X3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9z
LCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAi
aW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdl
L2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndt
bCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndt
bGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQogICAgIFN0cmlu
ZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2ODVlZDk5MzY0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApA
QCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBzdGF0aWMgdm9p
ZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29u
c3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxG
b3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3JtYXQoKS0+Y2ZG
b3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHJl
c3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09
IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHBsYWlu
VGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4i
KTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBzdGQ6Om9wdGlv
bmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3Rv
bURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5
cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICAgICAgZG9t
UGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91
cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCIpOworICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRvbVBhc3RlYm9h
cmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5h
ZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9h
cmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRP
cmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
Q2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5
cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCkBAIC0zNDEs
NyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0
eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0YU9iamVj
dC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAotICAgIHJldHVy
biAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6
OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI1LDcgKzQy
NSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJM
JiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAg
ICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVy
bFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAgIG1hcmt1cFRv
Q0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBjZmh0bWxEYXRh
KTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEp
OwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRt
bEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVk
aXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVV
UkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQog
ICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJ
SSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1Bh
dGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIiwg
dHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUo
dXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5n
KCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJp
bmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3ICs3NjAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRV
UkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFi
bGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYg
KDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsK
LSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRp
dGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0
ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAgICAgICAgSEdM
T0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6U2V0
Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAgICAg
OjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xp
Y3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAm
JiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEg
PSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTggb3IgZXZlbiBX
aW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAgICAgICAgICAg
dGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSk7CisgICAg
ICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9j
ayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAg
ICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTAsNyAr
OTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxGcmVlKG1lbU9i
aik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwg
MCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRoID0gZmlsZVN5
c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24sIGZh
bHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5Niw3ICsxMDk2
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJr
dXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAg
bWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9DRkhUTUwobWFy
a3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRpdW0geyB9Owog
ICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNiZTJkYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4
NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdp
bmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAg
ICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9z
OwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3Mz
XzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRv
d3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3Mg
OTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5
OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBX
aW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7
CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAg
ICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05U
MykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFt
ZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9
CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdP
UkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9r
ZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7
IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JB
cmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwog
ICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJF
X0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAi
OyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQg
SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5z
ZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAj
aWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRv
bigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xl
dG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRl
cjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21t
YW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6
Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFs
PEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBh
dXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVy
cm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3Ip
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3Qt
PmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQx
MDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lv
bjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBj
b21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBh
dXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+
Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERp
YWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwog
ICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JD
b2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5
LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5k
UmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3Bv
bnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1
dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgi
Y29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJl
c3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0
LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRl
eHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVz
dWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBh
cmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0
LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRv
d09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNl
dERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0
RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2Jq
ZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0g
SlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJs
ZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+
c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dT
aXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAg
ICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dG
cmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBA
IC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBh
cmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3Ry
aW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkg
eyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdp
bnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1
cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRl
KCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFs
c2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRl
cnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygi
YnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVl
KCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJs
ZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBh
dXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1
c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAg
ICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQp
IHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25s
eSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsi
CiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAi
fSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhh
bmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyAr
MjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxl
bWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVV
cGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQo
KSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0
cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBm
b2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVt
ZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
bGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsy
MTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVt
ZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAg
ICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxl
bWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVu
dFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAg
ICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdl
OiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0i
OworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJn
dW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50
cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsK
QEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0
b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNv
b2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0
cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAg
IGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVf
b3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJl
Il9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7
CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGly
eSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBp
cnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJf
cywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9z
KSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBA
QCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNv
bnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwg
W10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJj
ZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBl
KGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291
cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICBy
ZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVy
VHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRl
clR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICBy
ZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAg
ICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAg
ICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOwor
ICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJk
IjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpU
eXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hl
ZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBl
IHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJP
cmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50
ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAg
ICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9p
bnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAg
IHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZl
clNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9T
T0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNo
YXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAg
ICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkg
PCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1
LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5n
IHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcs
NyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJn
dikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAg
ICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
NDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVBy
b3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0
dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5n
ZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9
IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94
eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNv
Y2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOwor
ICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3Miwz
MCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxp
dGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93
UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51
bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVo
YXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAg
IGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJf
cywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpE
aXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpB
Y2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsK
KyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25v
cmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdu
b3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxv
YWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5
OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJw
YWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5v
cm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFn
ZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6
RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBh
Z2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBh
YmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBh
YmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVz
U29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIs
MTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpT
T046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+
IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hl
ZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFs
dWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1h
dGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRB
ZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAg
ICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxK
U09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlm
IChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdl
dFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisg
ICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9z
LCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBv
cnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3Bw
IGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzli
N2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29j
a2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hU
VFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5k
bGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlv
bklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAg
ICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0g
ICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAg
ICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAg
ICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2
ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZl
clRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAg
ICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwg
Y29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5k
IHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9u
RXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1
ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYg
YW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYg
KCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNp
emUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3Au
IgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9u
IGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3Io
IlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04
MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUo
Y29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxp
ZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkg
ewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAg
ICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWls
dXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2Nv
bChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAg
ICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAg
IHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJv
dG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4g
IlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVm
YXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMw
MGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERp
Y3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAt
NTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNv
ZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYg
d2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwg
PT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmluZzp3aXJlXSA9PSAgTlNPcmRl
cmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkg
IT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5n
dGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAg
ICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdp
cmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewotICAgICAgICAg
ICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCi0gICAg
ICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYgc3RyY2hyKCJCYyIsIHdpcmVU
eXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBhdXRvIG1hcENoYXJhY3RlciA9
IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25l
ZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICByZXR1cm4gYyA9PSAnQicgPyAn
YycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7Cisg
ICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYg
KG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXSkgIT0gbWFwQ2hhcmFjdGVy
KFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTcwLDkgKzk2Nyw4IEBA
IHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNv
ZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJ
bnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1l
dGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9j
YWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3Ry
aW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21w
YXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAg
IE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25h
dHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBm
b3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0
aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3Ip
IDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkm
KXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7
CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9j
b2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5n
ICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBO
U1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQg
bWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9n
ZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAg
LTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90
b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQo
bWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0
dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJl
V2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRo
b2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRo
b2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhd
Ll90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0
aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdElu
dm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3
aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5n
OwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWdu
YXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAg
ICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNp
Z25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0
YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1
cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9u
LnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051
bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAg
ICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2Nr
IHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJl
QmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBO
U0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWdu
YXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVj
dGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9p
bnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVA
ICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBX
ZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAg
ICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0g
UmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlk
IHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdp
c3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAg
ICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2Nr
KFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVj
dFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsK
ICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29k
ZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZv
Y2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZi
MDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0
MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBS
ZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0
cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNT
QlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFx
LmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUu
Y29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAg
IHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1z
YWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJl
cG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1
cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jl
c3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAg
ICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNh
ZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9y
ZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0
cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJp
Il9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZl
NzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3
ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
Ojp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZp
ZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xv
b2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dl
cmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBw
ZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNT
dHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2
aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAg
ICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9u
ZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
ODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZy
YW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+
c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVj
dXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9t
YWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsK
ICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVu
dCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3Vy
Y2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlw
dCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9j
dW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdl
TGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1h
cHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1Io
TG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBm
b3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5k
ZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBA
QCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewog
ICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIs
ICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
eiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJf
cywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJl
ZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBA
IlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAor
ICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAg
ICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywK
KyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAw
NDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAg
ICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1
IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAg
ICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5n
IFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRV
c2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9T
IikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7
IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxp
Y2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXgg
ZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcm
IENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlm
ICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAm
JiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwg
YnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1
aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0
aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAg
ICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQog
ICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAo
Qk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsu
ZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVh
dGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJu
IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRl
clZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZh
bHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0
b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5
U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1Yjcu
LjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxp
bmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3
LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVj
dG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGlu
dCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpA
QCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6
KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlk
ZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUo
X3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJp
bmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rp
bmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcg
QEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHls
ZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERy
YXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250
RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBs
ZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2Ny
aXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJlc291cmNlOjpX
ZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBXVEY6
OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2U6On5X
ZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQxMjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEzICsz
NCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIFdl
YlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8gSVVu
a25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQu
Y3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBXZWJT
Y3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3b3Js
ZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2Vi
U2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNjcmlw
dFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dvcmxk
LmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
U2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6OnN0
YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Vj
dXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmln
aW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyArNDksMTMgQEAg
V2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBzZWN1
cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5
T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiJf
cyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4oKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0
eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmln
aW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4YmI4MGEyZmNh
MjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkKIHsK
ICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFs
aXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRK
U1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVkSlNW
YWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVkSlNW
YWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Ny4uMDQ1
MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5j
cHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJlcjo6
Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVu
ZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJfcyk7
CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0K
IAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmluZGV4
IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCkBAIC00Niwx
MyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2VuZGVyKHNlbmRl
cikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlSW5zdGFuY2Uo
Y29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4uNTA5OWJhMGFm
MTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAg
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0K
IAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEzICsz
NywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRp
YWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlh
bCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7CiB9
CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7CiB9
CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3Bw
CmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEzICszNywxMyBA
QCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3BhY2UocHJvdGVj
dGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6
fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2Vi
VVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBhNWIy
M2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2NhbGl6
ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVSTFJl
c3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2ViVVJM
UmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6
OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBuZXcg
V2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBo
YXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1fcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3RyaW5n
KCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNlUmVz
cG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwogICAg
IGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRl
eCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUsMTMg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9
CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVybigp
CiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250ZW50
VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4uZTU1YTI0MmRj
ZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcgKzQ0Niw3IEBA
IFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygpCkBA
IC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50
LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciX3MpOwogfQog
CiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDExICsxOTk1LDEx
IEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8qbFBh
cmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAg
IGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBVbmRv
OgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5leGVj
dXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyJf
cykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4gZnJh
bWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVy
biBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAgICAgfQogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2ViVmlldzo6aGFu
ZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2
ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUoKSAh
PSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZl
bnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
U3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlFdmVu
dC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2Vi
S2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUg
aG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9y
IHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VMVCBXZWJWaWV3
Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwor
ICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9y
KCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBA
IC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0XyBJVW5rbm93
biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0Il9zKS5leGVj
dXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIiku
ZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5VVJM
KF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIiKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIGVtcHR5U3Ry
aW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMsNyBAQCBIUkVT
VUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0
ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJl
dHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vy
c1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSArOTAs
MTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0YW5j
ZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQog
CiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9zKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
VGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2su
Y3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEz
LDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNT
RVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEo
MXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJf
cykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsK
KyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJf
cykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsK
LSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEt
MCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQog
ICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIg
KzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMg
c2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlv
biBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAg
QVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwot
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0x
IikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsK
KyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEt
MiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxE
ZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5
M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChB
cHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBA
IC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9
CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNz
IFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcElu
aXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlz
QXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwg
anMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0
ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNw
b25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVz
cG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9z
Y3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3Rl
ZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIi
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBt
YWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIv
ZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8
L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxl
V2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZl
dGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
QWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFs
ZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJf
cywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAg
ICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2Vy
dmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRl
c3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQ
b3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcg
QmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0
aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7
CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0g
ICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cu
anMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpz
IH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAg
ICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBz
ZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMg
dm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAg
IHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAg
ICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9Cisg
ICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAg
ICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01
NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVz
dE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlw
dD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxv
ZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0
VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBh
c3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcg
QEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVT
ZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBw
IGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBz
dGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0
aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFp
bi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3
LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExv
YWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRp
b24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3Jp
ZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVY
UEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsx
XSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiBy
ZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylU
RVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1
cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFp
bkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+
PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9
J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8x
MjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJh
bWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4K
LSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVu
dGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAg
IHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwg
eyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwK
ICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxw
dHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcElu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAg
IFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBO
b25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3
IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5
dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1
MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dS
RVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUg
Kzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhl
bihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRh
KTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAt
ODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9
LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1s
Il9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRl
bnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9
IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRh
UmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQg
dG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdl
IGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1i
b3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
X3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0
KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
ICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAor
ICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
QEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAg
ICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlv
biBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2Vz
cyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhv
c3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjVi
Y2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDgg
KzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nl
c3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAg
ICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQv
aHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0g
fSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0s
CisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2Ft
ZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAg
ICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVy
MSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIv
c291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0
aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwK
KyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3Ms
ICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1l
LW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAg
ICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJl
ZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBA
IC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0
ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0
YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+
IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUg
PSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVm
YXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0
aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWlu
UHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0
cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAg
LTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENv
bnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3
aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVd
ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4o
eyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNv
bnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3Ry
aW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwog
CkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRp
b25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51
YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1
bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUx
NDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3
aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdl
bnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShb
dXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0g
YS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVp
bnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0
cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFt
cGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07
CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAg
ICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JU
ZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484775"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456473</attachid>
            <date>2022-04-02 14:35:50 -0700</date>
            <delta_ts>2022-04-02 14:49:32 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>178671</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQpp
bmRleCBhNDU2NjUxOTZjNWEuLmVhMjUyNzMyY2FmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCkBAIC00Miw0NiArNDIs
NDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFYQ29yZU9iamVjdCogb2Jq
KQogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotU3RyaW5nIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCitBU0NJSUxpdGVyYWwgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKLSAgICBTdHJpbmcgbmFtZTsKKyAg
ICBBU0NJSUxpdGVyYWwgbmFtZSA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogCiAgICAgc3dpdGNo
IChub3RpZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAg
ICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9j
dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAi
QVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9s
bGVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6
Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
WFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFu
Z2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAg
ICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0
YXR1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNh
c2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAg
ICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYRXhwYW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50
U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNv
cnREaXJlY3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwog
ICAgIC8vIGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNj
ZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxp
bmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBw
ZXIncwogICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0
QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
LSAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRp
b25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYg
KG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmpl
Y3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1
dG8gbnNOb3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygp
OworICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9u
TmFtZS5nZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBM
YXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBh
Y2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBh
Y2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtv
YmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZp
Y2F0aW9uTmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0
ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBB
WFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA3OTE5MGMxOTViNzcuLjUzOGI3
ODVkNjlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE2
NzEsMTIgKzE2NzEsMTIgQEAgLSAoQk9PTClhY2Nlc3NpYmlsaXR5U2Nyb2xsOihVSUFjY2Vzc2li
aWxpdHlTY3JvbGxEaXJlY3Rpb24pZGlyZWN0aW9uCiAgICAgQk9PTCByZXN1bHQgPSBzZWxmLmF4
QmFja2luZ09iamVjdC0+c2Nyb2xsQnlQYWdlKHNjcm9sbERpcmVjdGlvbik7CiAKICAgICBpZiAo
cmVzdWx0KSB7Ci0gICAgICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNo
ZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9u
OjpBWFBhZ2VTY3JvbGxlZCk7Ci0gICAgICAgIFtzZWxmIHBvc3ROb3RpZmljYXRpb246bm90aWZp
Y2F0aW9uTmFtZV07CisgICAgICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2Fj
aGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlv
bjo6QVhQYWdlU2Nyb2xsZWQpLmNyZWF0ZU5TU3RyaW5nKCk7CisgICAgICAgIFtzZWxmIHBvc3RO
b3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAgICAgQ0dQb2ludCBz
Y3JvbGxQb3MgPSBbc2VsZiBfYWNjZXNzaWJpbGl0eVNjcm9sbFBvc2l0aW9uXTsKICAgICAgICAg
TlNTdHJpbmcgKnRlc3RTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkFYU2Ny
b2xsIFtwb3NpdGlvbjogJS4yZiAlLjJmXSIsIHNjcm9sbFBvcy54LCBzY3JvbGxQb3MueV07Ci0g
ICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9u
TmFtZSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOworICAgICAgICBbc2Vs
ZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCkg
dXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmluZyB9XTsKICAgICB9CiAKICAgICAvLyBU
aGlzIG1lYW5zIHRoYXQgdGhpcyBvYmplY3QgaGFuZGxlZCB0aGUgc2Nyb2xsIGFuZCBubyBvdGhl
ciBhbmNlc3RvciBzaG91bGQgYXR0ZW1wdCBzY3JvbGxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDYzNjk2NzAxZjQ0Mi4uNjRi
OGNhZTc2NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0Q29u
dHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwKICNp
ZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlu
LiJfcyk7CiAgICAgICAgIFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGlu
ZywgImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3Rl
ZChFeGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uLWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9p
b3MvRWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQg
RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdy
aXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRl
cmFsIG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0
ZXh0QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1Zh
bHVlID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0Ogot
ICAgICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAi
cmlnaHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBu
ZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25N
b2RlOjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAg
ICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6
OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0Rp
cmVjdGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkK
KyAgICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1l
bnQqIGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAg
IGF1dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgp
OwogICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2
aWEgdGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUg
b25lLgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
Q29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2Vy
IGNhbiBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQt
ZmFtaWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDRiNmQwZTViNDQ0Ny4uMDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJn
dW1lbnQ8VVJMPiB7CiAgICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1h
eGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VE
X1BBUkFNKHVybCk7Ci0gICAgICAgIHJldHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1
cmxdIl9zOwogI2VuZGlmCiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5oCmluZGV4IDQ1N2I1YTExYWQ4Yy4uM2QyN2U4NjY0OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBPZmZzY3JlZW5DYW52
YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxPZmZzY3JlZW5DYW52YXM+LCBwdWJsaWMgQ2Fu
dmFzQgogcHVibGljOgogCiAgICAgc3RydWN0IEltYWdlRW5jb2RlT3B0aW9ucyB7Ci0gICAgICAg
IFN0cmluZyB0eXBlID0gImltYWdlL3BuZyI7CisgICAgICAgIFN0cmluZyB0eXBlID0gImltYWdl
L3BuZyJfczsKICAgICAgICAgZG91YmxlIHF1YWxpdHkgPSAxLjA7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQuLmQ0
ODQxZGYzZGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAK
QEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VP
dmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9hdFJl
Y3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9yU2V0
dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVy
YWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBhY3Rp
dmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtleTsK
LSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFTQ0lJ
TGl0ZXJhbCBrZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxpdGVy
YWwgbmFtZSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUgeyBm
YWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5n
cyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJv
b2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5n
JiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhB
U0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3Nl
dHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQy
Niw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVj
dChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7Cisg
ICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29s
b3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
IAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8
ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFs
dWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRh
ID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRh
IGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNl
TG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9v
bCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkg
ewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShn
cmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChy
ZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlw
IikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9z
KSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBo
YSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBo
YXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAu
MDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAg
ICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0
dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0
dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAg
ICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxv
YXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZv
clNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAg
ICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9u
KCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFk
aWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2gi
X3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRV
c2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAg
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAg
ICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxT
aXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6
IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0
YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAg
ICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6
YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tk
cm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JX
aXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNl
OwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0
aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdy
YWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAg
ICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAg
ICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZv
clNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNp
emUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxv
YXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBw
YXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7
CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhh
c0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5
IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5
JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4g
Y3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAg
aWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0g
bm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisg
ICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRp
bmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkp
OwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3Vz
ZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRl
czsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZh
bHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5n
KCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXgg
NDc3NGNlMDhhNWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0dGlu
Z3NCYXNlOjpwbGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNldHRp
bmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0g
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJRklF
RF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04i
LCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFu
ZGFyZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVkRm9u
dEZhbWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1p
bHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHko
IkhlbHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IlBpbmdGYW5nIFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVNDUklQ
VF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBs
ZSBTRCBHb3RoaWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250RmFt
aWx5KCJDb3VyaWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5
KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHko
IkhlbHZldGljYSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41
YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICsz
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERl
ZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlw
ZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NO
YW1lRm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9y
VXNlckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lv
bkZvclVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwCmluZGV4IGU0NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAg
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRp
b0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAog
ICAgICAgICAiYnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJm
cmFtZXMiLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAot
ICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Np
bmsoIm11c2ljIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0g
YXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFp
bGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBo
aWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGlj
c0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMg
Y29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRp
b24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5H
TEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAog
CiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3cs
IHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFs
aWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJ
SUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBT
aW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVk
LCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUg
Y29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xS
ZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXgg
ZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBz
dGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAv
LyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBP
cGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2
YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBp
eGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVp
IGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6
ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dz
LCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2
b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNm
b3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMiksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1zdGF0aWMgdm9pZCBw
cmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dDb2xv
clJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JB
TG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgpKQpAQCAtNzYyLDEw
ICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVy
LCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAKICAgICAvLyBQcmlu
dCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRl
bnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCAr
IDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXll
ci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJDb2xvciBpZiBuZWVk
ZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciIsIENB
Q0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmlu
dENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywgQ0FDRkxheWVyR2V0
Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbWFz
a3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBs
YXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5k
ZXggYjkzYmMzNGNjNGQ0Li4xZjUxNjkxZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlw
ZS5jcHAKQEAgLTM0MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0
cmluZ0Zyb21GYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBmYW1p
bHk7CiAKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJ
bmRleDo6U3RhbmRhcmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZh
bWlseU5hbWVzSW5kZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzZXJpZiI7Cisg
ICAgICAgIHJldHVybiAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVy
biAic2Fucy1zZXJpZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsKICAgICBpZiAo
ZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6TW9ub3NwYWNl
RmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICByZXR1cm4gIm1v
bm9zcGFjZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5
TmFtZXNJbmRleDo6Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7Cisg
ICAgICAgIHJldHVybiAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVz
RGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAiZmFudGFzeSI7CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lmIFBMQVRGT1JN
KEdUSykKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJ
bmRleDo6U3lzdGVtVWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9udCIp
CiAgICAgICAgIHJldHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlmCiAKLSAgICBy
ZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBGQ19WRVJTSU9O
IDwgMjEzOTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IDFkNmFlMmUxMmU3ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9B
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAog
I2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29k
ZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAg
IGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNv
ZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRo
cmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJj
ZTIyNTQxLi4xMjA3YzM1YTExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC02
MTMsNyArNjEzLDcgQEAgc3RhdGljIGdib29sZWFuIHBhcnNlR3N0U3RydWN0dXJlVmFsdWUoR1F1
YXJrIGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIHsKICAgICBpZiAoYXV0byBq
c29uVmFsdWUgPSBnc3RTdHJ1Y3R1cmVWYWx1ZVRvSlNPTih2YWx1ZSkpIHsKICAgICAgICAgYXV0
byogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxKU09OOjpPYmplY3QqPih1c2VyRGF0YSk7Ci0g
ICAgICAgIG9iamVjdC0+c2V0VmFsdWUoZ19xdWFya190b19zdHJpbmcoZmllbGRJZCksIGpzb25W
YWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoU3RyaW5n
IHsgZ19xdWFya190b19zdHJpbmcoZmllbGRJZCkgfSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICB9CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDJkOWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMTc2LDcg
KzE3Niw3IEBAIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENoZWNrSGFy
ZHdhcmVDbGFzc2lmaWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsKICAgICAg
ICAgZm9yIChHTGlzdCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0b3Jp
ZXMgPSBnX2xpc3RfbmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBmYWN0b3J5
ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0YSk7
Ci0gICAgICAgICAgICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9t
ZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAgICAgICAg
ICBTdHJpbmcgbWV0YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0
b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1dG8gY29t
cG9uZW50cyA9IG1ldGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29tcG9uZW50
cy5jb250YWlucygiSGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdIYXJkd2Fy
ZSA9IHRydWU7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAg
ICB9CiAKICAgICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVu
dEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRl
by94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMp
OwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVk
KENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29kZXJBdmFp
bGFibGUpIHsKKyAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1
cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURl
Y29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJp
bmcoImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAg
ICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZh
aWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7
CkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRp
YWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAgICAgbV9k
ZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAK
LSAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZp
Z3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCJfcyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAgICBtX2Rl
Y29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2Mw
ZDhmNzNjNDJiLi43ZWJiYTQzMjJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0
YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNy
ZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1Zp
ZGVvUGxheWVyKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXll
ci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1l
bnQqIGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVB
U0VfQVNTRVJUKGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3
MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShH
c3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNz
YWdlLCAmZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1Io
IkVycm9yICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+
bWVzc2FnZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2Ug
fTsKIAogICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5Owog
ICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwg
R1NUX1NUUkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdl
KiBtZXNzYWdlKQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVj
dHVyZSwgImh0dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBp
cGVsaW5lKCksICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVy
bCB7IHVyaSB9OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9Owog
ICAgICAgICAgICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwp
KTsKIAogICAgICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEy
Nyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNv
bnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51
bGxwdHI7CiAgICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElU
TEUsICZ0aXRsZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRD
b250ZW50KHRpdGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21V
VEY4KHRpdGxlKSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNvbmZpZ3VyZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmpl
Y3Rfc2V0KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQo
KSwgbnVsbHB0cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1
cmVkIGZpbGUgZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9h
ZFRlbXBsYXRlLmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmlu
ZyBuZXdEb3dubG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAg
IFN0cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgp
IH07CiAgICAgcHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBs
YWNlKCJYWFhYWFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNr
KE1lZGlhUGxheWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAg
IGdfb2JqZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0
aW9uIiwgJmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtF
TFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBp
ZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3du
bG9hZEZpbGUuZ2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGlu
ayBtZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5n
ZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAg
ICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJs
IGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4K
ICAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVS
TCgpIDogbV91cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRp
b24pOworICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0
aW9uIH0pOwogCiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAg
ICAgICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxh
eWJpblVybFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
cGxheWJpblVybFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7
IHBsYXliaW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5l
d1VybCkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJp
biBhbHJlYWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBV
UkwmIHVybCkKIAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwog
ICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEt
cGxheWVyIjsKKyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNv
bnN0IGNoYXIqIHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJ
cygibWVkaWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkx
OCw3IEBAIEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0
YUZyb21Qcm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRh
dGEgPSBudWxscHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQuZ2V0KCksICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAg
ICAgIGluaXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAg
ICAgaW5pdERhdGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0p
OwogICAgICAgICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NF
UU5VTShldmVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVu
dChHc3RFdmVudCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0g
bnVsbHB0cjsKICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZl
bnRfcGFyc2VfcHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRh
LCBudWxscHRyKTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlT
eXN0ZW1VVUlELCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVk
KHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAx
YzY3Li4zMmVkM2FlOGIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKQEAgLTQ3MSw3ICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vz
c1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNv
bnRlbnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CisgICAgU3RyaW5nIGVu
Z2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciJfczsg
fQogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAg
IGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggZGNhMmMyMWZkNjMwLi4wM2Vk
YWM4YzhlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6Omdl
dExhbmd1YWdlQ29kZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAgIFN0
cmluZyBsYW5ndWFnZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09E
RSwgbGFuZ3VhZ2UpKSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2Vf
Y29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1YWdl
ID0gU3RyaW5nIHsgZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2Uu
dXRmOCgpLmRhdGEoKSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sgJWQn
cyBsYW5ndWFnZSBjb2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVlID0g
bGFuZ3VhZ2U7CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMKICAg
ICBHVW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dl
dF9zdHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBH
U1RfREVCVUcoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1
ZS5nZXQoKSk7Ci0gICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZhbHVl
ID0gU3RyaW5nVHlwZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0
YWRhdGFHU3RyZWFtZXIuY3BwCmluZGV4IDg5NDc1NDA1YzgwOS4uZDdiZTgwNTE4ZWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9G
cmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIz
LDcgKzEyMyw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQo
R3N0RWxlbWVudCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgp
LCBwcm9iZVR5cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIg
dXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRC
dWZmZXIsIG1ldGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5G
T19CVUZGRVIoaW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9
IG1vZGlmaWVkQnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0
KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0
aWxfZ2V0X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1ldGEt
PnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4odXNlckRhdGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwg
R1NUX0NMT0NLX1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsK
ICAgICB9LCBnc3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM1
LDcgKzEzNSw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQo
R3N0RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQogICAgICAgICAgICAgcmV0
dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0cmluZyBlbGVtZW50TmFt
ZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9OwogICAgICAgICBhdXRvIHZh
bHVlID0gbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVtZW50TmFtZSk7CiAgICAg
ICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6bWFr
ZV9wYWlyKHZhbHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCkpKTsKICAgICAgICAg
cmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUuLmQ2NDA0YzEyMGNhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJh
dGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdV
bmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMo
Y2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAg
ICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgog
CiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktp
dFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNzU0YjNmZjQ4MzkwLi5kMGFkNjcyZDcxMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01OTYs
NyArNTk2LDcgQEAgc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoR1F1YXJr
IGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIAogICAgIEdTVF9ERUJVRygiQXBw
ZW5kaW5nIGV4dHJhIGhlYWRlcjogXCIlczogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250ZW50
LmdldCgpKTsKICAgICBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZVJlcXVlc3QqPih1c2VyRGF0YSk7Ci0gICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxk
KGZpZWxkTmFtZSwgZmllbGRDb250ZW50LmdldCgpKTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoU3RyaW5nIHsgZmllbGROYW1lIH0sIFN0cmluZyB7IGZpZWxkQ29udGVudC5nZXQo
KSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhM
b2NrZXI8V2ViS2l0V2ViCiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uICE9
IG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBv
c3RpbmcgdGFzayB0byByZXF1ZXN0IFIldSAlcyByZXF1ZXN0ZWRQb3NpdGlvbj0lIiBHX0dVSU5U
NjRfRk9STUFUICIgc3RvcFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbWJlcnMtPnJl
cXVlc3ROdW1iZXIsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSwgbWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24sIG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7Ci0gICAgVVJMIHVybCB7IHByaXYtPm9y
aWdpbmFsVVJJLmRhdGEoKSB9OworICAgIFVSTCB1cmwgeyBTdHJpbmcgeyBwcml2LT5vcmlnaW5h
bFVSSS5kYXRhKCkgfSB9OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAg
ICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11
dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1lbWJlcnMt
PnJlZmVycmVyKTsKIAogICAgIGlmIChwcml2LT5odHRwTWV0aG9kLmdldCgpKQotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBNZXRob2QocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSk7CisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUE1ldGhvZChTdHJpbmcgeyBwcml2LT5odHRwTWV0aG9kLmdldCgpIH0pOwog
CiAjaWYgVVNFKFNPVVApCiAgICAgLy8gQnkgZGVmYXVsdCwgSFRUUCBBY2NlcHQtRW5jb2Rpbmcg
aXMgZGlzYWJsZWQgaGVyZSBhcyB3ZSBkb24ndApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhM
b2NrZXI8V2ViS2l0V2ViCiAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2Fu
dCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KICAgICBpZiAoIWdfYXNjaWlf
c3RyY2FzZWNtcCgibW92aWVzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkK
ICAgICAgICAgfHwgIWdfYXNjaWlfc3RyY2FzZWNtcCgidHJhaWxlcnMuYXBwbGUuY29tIiwgdXJs
Lmhvc3QoKS51dGY4KCkuZGF0YSgpKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KCJRdWlja3RpbWUvNy42LjYiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KCJR
dWlja3RpbWUvNy42LjYiX3MpOwogCiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
IHx8IG1lbWJlcnMtPnN0b3BQb3NpdGlvbiAhPSBVSU5UNjRfTUFYKSB7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZm9ybWF0ZWRSYW5nZTsKQEAgLTY4MSwxOSArNjgxLDE5IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhM
b2NrZXI8V2ViS2l0V2ViCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvcm1hdGVkUmFuZ2Uu
cmVzZXQoZ19zdHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgbWVt
YmVycy0+cmVxdWVzdGVkUG9zaXRpb24pKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJSYW5nZSByZXF1ZXN0OiAlcyIsIGZvcm1hdGVkUmFuZ2UuZ2V0KCkpOwotICAgICAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFuZ2UsIGZvcm1hdGVkUmFu
Z2UuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6UmFuZ2UsIFN0cmluZyB7IGZvcm1hdGVkUmFuZ2UuZ2V0KCkgfSk7CiAgICAgfQogICAg
IEFTU0VSVChtZW1iZXJzLT5yZWFkUG9zaXRpb24gPT0gbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRp
b24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQZXJzaXN0ZW50IGNvbm5lY3Rpb24g
c3VwcG9ydCAlcyIsIHByaXYtPmtlZXBBbGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwog
ICAgIGlmICghcHJpdi0+a2VlcEFsaXZlKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIik7CisgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2Ui
X3MpOwogCiAgICAgaWYgKHByaXYtPmV4dHJhSGVhZGVycykKICAgICAgICAgZ3N0X3N0cnVjdHVy
ZV9mb3JlYWNoKHByaXYtPmV4dHJhSGVhZGVycy5nZXQoKSwgd2ViS2l0V2ViU3JjUHJvY2Vzc0V4
dHJhSGVhZGVycywgJnJlcXVlc3QpOwogCiAgICAgLy8gV2UgYWx3YXlzIHJlcXVlc3QgSWNlY2Fz
dC9TaG91dGNhc3QgbWV0YWRhdGEsIGp1c3QgaW4gY2FzZSAuLi4KLSAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRhdGEsICIxIik7CisgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSJf
cyk7CiAKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5zdXJlR1JlZihzcmMpLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJdIHsK
QEAgLTg4MSw3ICs4ODEsNyBAQCBjb25zdCBnY2hhciogY29uc3QqIHdlYktpdFdlYlNyY0dldFBy
b3RvY29scyhHVHlwZSkKIAogc3RhdGljIFVSTCBjb252ZXJ0UGxheWJpblVSSShjb25zdCBjaGFy
KiB1cmlTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIFVSTCB7IHVyaVN0cmluZyB9OworICAgIHJldHVy
biBVUkwgeyBTdHJpbmcgeyB1cmlTdHJpbmcgfSB9OwogfQogCiBzdGF0aWMgZ2NoYXIqIHdlYktp
dFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcAppbmRleCBmZTQ3OWQ2YmI1MjcuLjFhZjBlNTU0ZDgyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQ
aXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGQ6OnR1cGxl
PEdSZWZQdHI8R3N0Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBlLCBGbG9hdFNpemU+
IEFwcGVuZFBpcGVsaQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBjYXBz
TWVkaWFUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNjYW5u
ZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigpOwotICAgIGlmICgh
Z3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5cGUpKSB7CisgICAg
aWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBvcmlnaW5hbE1lZGlh
VHlwZSB9KSkgewogICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6SW52YWxpZDsKICAg
ICB9IGVsc2UgaWYgKGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzLCBHU1RfVklERU9f
Q0FQU19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6ZSA9IGdldFZpZGVv
UmVzb2x1dGlvbkZyb21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9vcihGbG9hdFNpemUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRS5jcHAKaW5kZXggODMxYzJiMmM2ZWZiLi4yY2VjNjg0NjZmZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
QEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
bG9hZChjb25zdCBTdHJpbmcmKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmLCBNZWRpYVNvdXJjZVBy
aXZhdGVDbGllbnQqIG1lZGlhU291cmNlKQogewotICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VT
dHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIiA6
IHVybC5zdHJpbmcoKSk7CisgICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFz
b3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iX3MgOiB1cmwuc3RyaW5n
KCkpOwogICAgIEdTVF9ERUJVRygiTG9hZGluZyAlcyIsIG1zZUJsb2JVUkkuYXNjaWkoKS5kYXRh
KCkpOwogICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcAppbmRleCA3M2UyNDg0NWNiMzMuLjkxOTYzZDMyOTA5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVu
c2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9uc0dM
T3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgog
ICAgIC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQg
YW5kIEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9PSAi
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUi
KTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVf
aW5zdGFuY2VkX2FycmF5cyIpIHsKLSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAgICAg
JiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2Vk
IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiKSk7CisgICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUkJfaW5zdGFuY2VkX2FycmF5cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSk7
CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIpICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdC
IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJf
c1JHQiIpKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX3RleHR1cmVfc1JHQiJfcykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1lID09
ICJHTF9FWFRfZnJhZ19kZXB0aCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAgIC8v
IERlc2t0b3AgR0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlmIChu
YW1lID09ICJHTF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgLy8gSWYgR0xfQVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1cmVf
ZmxvYXQgaXMgYXZhaWxhYmxlIHRoZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1cmVf
aGFsZl9mbG9hdCwgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4dHVy
ZV9oYWxmX2Zsb2F0X2xpbmVhciBhcyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiB8
fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0
Il9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zs
b2F0Il9zKTsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5h
bWUgPT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShHVEsp
KQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJf
dmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAgICAg
fQogCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikK
LSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3No
YWRlcl90ZXh0dXJlX2xvZCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVy
X2FuaXNvdHJvcGljIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0gICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1
ZmZlcnMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX2RyYXdfYnVmZmVycyJfcyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1wbGVt
ZW50IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVuc2lv
bnMoKQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNpb25z
R0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRpYyBj
b25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3Zl
cnRleF9hcnJheV9vYmplY3QiKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsK
ICAgICByZXR1cm4gc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMwNDBj
ZWJkYTlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3
NCwxMiArMTc0LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xz
aGFkZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAg
IHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJl
dHVybiAiIjsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xP
YmplY3QsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJh
dG9yIHJlc3VsdCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwog
CiAgICAgaWYgKHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQot
ICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3Vs
dC0+dmFsdWU7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAog
ICAgIH0KIAogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1Li5i
OTExMTAyNTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjY0LDcg
KzI2NCw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5H
TEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIikp
OwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NB
ZGRyZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAgbV9z
dXBwb3J0c0FOR0xFaW5zdGFuY2VkQXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICht
YWpvclZlcnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9pbnN0YW5jZWRfYXJyYXlzIikgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtYWpvclZl
cnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9p
bnN0YW5jZWRfYXJyYXlzIl9zKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9kcmF3X2luc3RhbmNlZCJfcykpKSB7CiAgICAgICAgICAgICBtX2dsVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFID0gOjpnbFZlcnRleEF0dHJpYkRpdmlzb3I7CiAgICAgICAgICAgICBtX2ds
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdBcnJheXNJbnN0YW5jZWQ7CiAgICAg
ICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0VsZW1lbnRz
SW5zdGFuY2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggY2Fh
YWI2ZmM1OThiLi4wYTZhODhjZjFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcApAQCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4g
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0
dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAg
YXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNp
bCkgewotICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKSkgewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uU3RyaW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlm
IChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7
CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvblN0cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlz
IHRydWUuCiAgICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTIuLmFmNzVl
MGQwOTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3ICs0
MzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRp
YWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUg
aG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBp
bXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIq
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3Rl
bmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lk
IHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVu
dW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBs
ZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0
YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGMzNWIyZjBmMTVkOS4uN2I1NGEwMWYzZTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtODYs
NyArODYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5j
aWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogfQogCiBib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA4
LDcgKzEwOCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNv
bnN0IEludFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBl
eHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVw
dGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSkKICAg
ICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lM
OF9FWFQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9y
bWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMRVMuY3BwCmluZGV4IDgzYjliODZjNTMyNy4uM2FlNjJiZjZlZWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IAogICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVp
cmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2ls
QnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBz
dXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBh
dHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11
c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZl
bCwgR0NHTGVudQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9u
KCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0
cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1w
bGVkX3JlbmRlcl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlh
cyA9IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZj
MDUuLmM3YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3Bw
CkBAIC0zNCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQog
ewotICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQ
UyIpOworICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9X
X0ZQUyIpIH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNv
bmRzKHNob3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9m
cHNJbnRlcnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKQEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpyZXN1bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFu
aW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRp
b25TdGFydGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVu
dCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5p
bWF0aW9uU3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJl
cXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBA
QCBzdGF0aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmR1bXBBZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25T
ZXQ8TGF5ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0
aW9ucyAmIExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAg
ICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3Ry
ZWFtLCAiYmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQog
ewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRy
YWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9V
c2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDEx
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xh
c3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0g
VUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9z
TmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsK
ICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkK
LSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICBy
ZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3Ry
aW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpp
bmRleCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQpAQCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+Vmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxl
ciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAo
cGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3Rp
dmUpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0No
YW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlT
dHJpbmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYwN2YzNjZiZjcyZi4uNGZhODJi
YmRlMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTYzLDcgKzE2Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBN
ZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgYXV0byBzZWxl
Y3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJlYW0p
OwogICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgpOwogICAgIGlmICghbWltZVR5
cGUpCi0gICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2aWRl
by9tcDQiIDogImF1ZGlvL21wNCI7CisgICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3Mu
dmlkZW9UcmFjayA/ICJ2aWRlby9tcDQiX3MgOiAiYXVkaW8vbXA0Il9zOwogCiAgICAgR1NUX0RF
QlVHKCJDcmVhdGluZyB2aWRlbyBwcm9maWxlIGZvciBtaW1lLXR5cGUgJXMiLCBtaW1lVHlwZS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgYXV0byBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVU
eXBlKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJv
ZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgICAg
ICBpZiAoY29kZWNzLmNvbnRhaW5zKCJ2b3JiaXMiX3MpKQogICAgICAgICAgICAgYXVkaW9DYXBz
TmFtZSA9ICJhdWRpby94LXZvcmJpcyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmNvbnRh
aW5zKCJvcHVzIl9zKSkKLSAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVz
IjsKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVzIl9zOwogICAgICAg
ICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNvZGVjKSB7IHJldHVybiBjb2RlYy5z
dGFydHNXaXRoKCJtcDRhIik7IH0pICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgYXVkaW9DYXBz
TmFtZSA9ICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj00Il9zOwogICAgICAgICBlbHNlIGlmIChj
b250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNTE2OTA0NWM3
MDVmLi4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAyLDE1IEBAIHZv
aWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0cmluZ1JlZiBk
b21haW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7CiAgICAgaWYg
KGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVycm9yRG9tYWlu
Q29jb2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7CisgICAgICAg
IG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4g
PT0ga0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJy
b3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIl9zOwogICAg
IGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAgICBtX2RvbWFp
biA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJy
b3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluT1NTdGF0
dXMpCi0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAg
IG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21h
aW4gPT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJv
ckRvbWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRvbWFpbldpblNv
Y2siX3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApAQCAtMTkwLDEz
ICsxOTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVy
cm9yKQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NGU3RyZWFtRXJy
b3JEb21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAgICBtX2RvbWFp
biA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJy
b3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21h
aW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWlu
IjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgICAg
ICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA0NTliZjJh
NDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUs
OSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewot
ICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmls
ZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAgICAg
ICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQ
YXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxl
UHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKaW5kZXggZTBlZWY2ODgwZjJiLi4wNzFiYjFhNDdiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3Vy
bC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmljYXRlSW5mbzo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6dmVyaWZpY2F0
aW9uRXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlfdmVyaWZ5X2Nl
cnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVybiBTdHJpbmcg
eyBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKSB9Owog
fQogCiBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5mbzo6bWFrZUNl
cnRpZmljYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRl
eCA2MTM2NTMxYjViMWMuLjZiMTZmYzM0ZGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODIsNyArMzgyLDcg
QEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LAogCiAgICAgU3RyaW5nIHJlcXVlc3RQYXRoID0gcmVx
dWVzdFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocmVxdWVzdFBhdGguaXNFbXB0eSgp
KQotICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIjsKKyAgICAgICAgcmVxdWVzdFBhdGggPSAiLyJf
czsKIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdFVy
bCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAKaW5kZXggNmQzNDY4ZTQyMjI1Li4wNGU2NGNkMmM3YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAg
LTE4NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVy
bCkKIAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChw
YXRoLmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiAi
LyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNoUG9zaXRpb24g
PSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKLSAg
ICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgcmV0dXJuIHBh
dGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4
IDdiNDY4NTVhMDUxNS4uYTdhMTUyN2M4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTYxLDEwICs2
MSwxMCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmws
IFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFzZUZpbGVuYW1l
KHVybC5sYXRpbjEoKSk7CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1l
KTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAgIG1faGVhZGVy
RmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZpbGVuYW1lLmFw
cGVuZChtX2Jhc2VuYW1lKTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50
Iik7CisgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7CiB9CiAKIEN1
cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5IEBAIGJvb2wg
Q3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVz
cG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsK
ICAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAgaGVhZGVyRmll
bGQuYXBwZW5kKCI6ICIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIl9zKTsKICAg
ICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhlYWRlckZpZWxk
LmFwcGVuZCgiXG4iKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJfcyk7CiAgICAg
ICAgIENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRpbjEoKTsKICAg
ICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVyRmllbGRMYXRp
bjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAgIG1fY2FjaGVk
UmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAKaW5kZXggM2JkMmNjNzQyODZlLi43MDJjNWIzMWEwMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzZXRDYWNoZURp
cmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAgIH0KIAotICAg
IG1fY2FjaGVEaXIuYXBwZW5kKCIvIik7CisgICAgbV9jYWNoZURpci5hcHBlbmQoIi8iX3MpOwog
CiAgICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpAQCAtMTM4LDggKzEz
OCw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBpZiAobV9kaXNh
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNo
ZURpcik7Ci0gICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOworICAgIGF1dG8g
aW5kZXhGaWxlUGF0aCA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgImluZGV4LmRhdCJfcyk7CiAK
ICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShp
bmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmlu
ZGV4IDcyOGNiODhiZmIwNS4uM2U1ZDZmMWM5MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQyOSwyNiArNDI5
LDIzIEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29uc3QgSFRUUEhl
YWRlck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVy
KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTdHJpbmcg
aGVhZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhhdCB0aGlzIGhl
YWRlciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQoIjsiKTsKKyAg
ICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQodmFsdWUpOwor
ICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsKICAgICB9CiAK
LSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRl
cihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92ZVJlcXVlc3RI
ZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRlciB3aXRoIG5v
IGNvbnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRpc2FibGVkLiAK
LSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoiKTsKLQotICAg
IGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9IG1ha2VTdHJp
bmcobmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7
CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcm
IGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi5iMDkyNTZiMTk4M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OndpbGxTZW5kUmVx
dWVzdCgpCiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlmIChzaG91bGRS
ZWRpcmVjdEFzR0VUKG5ld1JlcXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAgICBuZXdSZXF1
ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRo
b2QoIkdFVCJfcyk7CiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CiAg
ICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhlNzIxMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3
b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNz
d29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZl
bnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcApp
bmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3Ry
aW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2Rl
KQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAg
ICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAg
ICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAg
ICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAg
ICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7Cisg
ICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAg
ICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAg
ICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAg
cmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBj
YXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0
dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAg
ICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAg
ICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0
dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNl
IFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAg
cmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
OgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAg
ICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJu
ICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1Ogot
ICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJG
NyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAg
ICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAg
ICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1
cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjEx
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAg
ICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAg
ICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVy
biAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
NToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9z
OwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNl
IFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAg
ICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAi
RjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoK
LSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNl
IFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJu
ICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAi
SW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZL
X0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJM
ZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VE
b3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktf
UFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4g
IlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAi
UGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19T
TkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAg
cmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAg
ICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAg
ICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAg
ICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAg
ICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAg
ICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAg
cmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVz
IFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUr
MDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5
Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5n
c1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcg
dXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1
cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAg
ICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQs
MzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlw
ZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3
aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQv
cGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRm
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlw
dCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInht
bCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hz
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRt
bCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24v
cnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImlt
YWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2
Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYi
LCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9p
Y28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYi
X3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9z
LCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
Y3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3Ms
ICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQv
aHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3ho
dG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRp
b24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywg
ImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3Zn
eiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJf
cywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJp
bWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9w
bmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBT
dHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5
OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGlj
IHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMs
IGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0g
dXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCkt
PmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAg
ICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1h
dCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBw
bGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3Bs
YWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRD
dXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJk
Ojp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRl
eHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsK
KyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0
ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpy
ZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAog
ICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlw
ZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAt
MzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFP
YmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJv
YXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3
ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7
CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRN
TCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJr
dXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1s
RGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxE
YXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRh
KGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVl
KG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0
cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxs
QVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcg
ZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVS
TCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRp
dGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0
cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBD
U3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJv
YXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBi
ZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAg
IGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRh
dGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJs
LCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAo
cGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAg
IEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6
OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAg
ICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5n
UG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVY
VCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JE
YXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2
ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAg
ICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOwor
ICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2Jh
bExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAg
ICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUw
LDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZSht
ZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgi
LiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZp
bGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9u
LCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyAr
MTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
TWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwot
ICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1M
KG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsg
fTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUyZGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwy
NSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2Fz
ZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBD
RSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAu
TkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5k
b3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5k
b3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93
czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRv
d3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5
ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0Ljkw
Il9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7Cisg
ICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRv
d3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWls
eU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5v
cik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3Ip
OwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0YXRp
YyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVjdHVy
ZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJldHVy
biAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJvY2Vz
c29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAgICAg
ICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCJf
czsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVD
VFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICByZXR1
cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2
b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBh
Z2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsK
IAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5n
bGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNp
bmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
Q29tbWFuZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1
bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRp
b25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0
byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVy
cm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2Jq
ZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9y
T2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNzYWdlKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNjNS4uZDcx
ZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNl
c3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+
JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3Jp
cHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Il9z
KTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVy
cm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTksMTMg
KzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSBy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAgICAgICAg
ICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmpl
Y3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQpIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1h
bmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29u
dGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdD
b250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBpZiAoIXVybCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAgICAgICAgICAgYXV0byB3
aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93
T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93T3Jp
Z2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2lu
LT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93U2l6
ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXRE
b3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5z
ZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1Np
emUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgd2lu
ZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAg
ICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dTaXplKSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0V2lu
ZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUg
ewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0ZpbGVVcGxv
YWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgogICAgIGF1
dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVz
aFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAg
IHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09
PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAgICAgICAg
cmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhhc0F0dHJp
YnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6
IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJh
bWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJp
bmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52
YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRp
dGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAg
ICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRz
LT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwog
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVt
ZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1lbnQucmVh
ZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3ICsxODcw
LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1l
bnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHRy
dWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIKLSAgICAg
ICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRl
eHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0yMTcw
LDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgYXV0byBm
aWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1bHQucmVz
dWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMo
KS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAgICAgICAgICAiZnVuY3Rp
b24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgZG9jID0g
ZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAgICAgICAi
ICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAgLTIxODYs
NyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAgICAgICAg
ICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5sZW5ndGgs
IGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGVs
ZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAgICAgICAg
ICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxlJywgbWVz
c2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAgICAgICAg
ICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAgICAgICAgICAgICBhdXRv
IGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBhcmd1
bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmco
KSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWls
dEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0
byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBjb29raWVP
YmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iX3MpKTsK
ICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZh
bHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNl
Y3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxz
ZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNvb2tpZS5l
eHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBjb29raWUu
ZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNp
dGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29raWVPYmpl
Y3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9u
ZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzggKzI2OTEs
MzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3VyY2VTdGF0
ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5lbnN1cmUo
aWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRT
b3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uU291cmNl
VHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNoIChpbnB1
dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAg
ICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNhc2UgSW5w
dXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9p
bnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBv
aW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91c2UiOworICAgICAgICAg
ICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91Y2g6Ci0g
ICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJldHVybiAiVG91Y2giX3M7
CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVybiAiUGVu
IjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJuICJLZXli
b2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJj
ZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOworICAgICAgICByZXR1cm4g
IldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6
VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2lu
dGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQ
b2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3cG9ydCI7
CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpU
eXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOworICAgICAgICByZXR1cm4g
IlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50OgotICAg
ICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTIuLjU5MTg0NzBiODVjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGludCBXZWJE
cml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIFVTRShJTlNQRUNU
T1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlmIChjb25z
dCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQUREUiIpKQot
ICAgICAgICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRFbnZWYXI7CisgICAgICAgIHRhcmdldFN0cmlu
ZyA9IFN0cmluZyB7IHRhcmdldEVudlZhciB9OwogI2VuZGlmCiAgICAgZm9yIChpbnQgaSA9IDEg
OyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3ZbaV07CkBA
IC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgcG9ydFN0cmluZyA9IFN0
cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAg
LTk3LDcgKzk3LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdGFyZ2V0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHRhcmdldFN0cmluZyA9
IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
QEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxp
emVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94
eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRW
YWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmpl
Y3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNvY2tzUHJv
eHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICghc29ja3NQcm94eSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYg
cHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgYXV0
byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24i
KTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRW
YWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJzaW9uVmFs
dWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcyLDMwICs4
NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBh
YmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdp
bmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRp
ZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21w
dEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsKKyAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3Rp
ZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5
Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywg
Imlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKFBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJh
dGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5
OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRl
Z3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgh
Y2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
Q2FwYWJpbGl0aWVzU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxp
dGllc1NvY2tldC5jcHAKaW5kZXggMGY2Yzg3ODIwMDk1Li4yYjY3MTM0OWQzNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAtMzIsMTIg
KzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGllcyhjb25z
dCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpTT046OlZh
bHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAgaWYgKG1h
dGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFyZ2V0QWRk
clZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQorICAgIGlm
IChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJfcywgdGFy
Z2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQog
ICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAgICBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9ydDsKLSAg
ICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiLCB0
YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQp
KQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9y
dCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJn
ZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQb3J0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0
LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCmluZGV4
IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUVFBSZXF1ZXN0
SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5l
Y3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJlc3BvbnNlIHsK
ICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
LAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCIs
CisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0Il9z
LAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4
IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAg
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVk
IgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
IGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJl
VG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAg
IGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNv
cHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBz
dG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0
dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFu
eSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICgh
dmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6
ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4i
Ci0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJv
dG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAg
ICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAg
ICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NT
TFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0
dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlk
ZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFz
cyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29s
IG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5nICopOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0K
QEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRl
RW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJp
bmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxv
Y2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0gPT0gIE5T
T3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0
aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwu
bGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUg
PSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKLSAgICAg
ICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgot
ICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigiQmMiLCB3
aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBDaGFyYWN0
ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAgYW5kIGBz
aWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMgPT0gJ0In
ID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3Ro
OworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1hcENoYXJh
Y3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5ICs5Njcs
OCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0
RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0
OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1v
dGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5n
IGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlw
ZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkK
KyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RT
aWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRp
b24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNv
bXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVj
dG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lz
dHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnBy
b3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0
cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJp
dGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9j
b2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7
CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNT
RVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNp
Z25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25h
dHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0
TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0lu
ZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9r
ZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmpl
Y3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJp
bmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhP
YmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0
cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2Nr
U2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsK
KyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVy
ZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgp
LmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2ln
bmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2Nh
dGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUo
d2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAg
ICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sg
c2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2co
QCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJl
OiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29u
c3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAg
ICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tl
ciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAg
ICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3
aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0
UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewor
ICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVC
bG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVP
YmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
KSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RF
bmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRl
eCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEs
OCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9v
a3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VV
UkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmlu
ZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNl
Yy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29v
Z2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0
dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsK
KyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90
cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmlu
ZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
cmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYg
KFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0g
ICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3Rw
bD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3Np
bmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3
dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4g
Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNh
ZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2
NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0y
OTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5zeXN0ZW1Q
cmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVp
Y2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRy
aWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25f
dGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5
c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQs
IE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOwor
ICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1
dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJlMDJlYzhl
M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1l
KiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJh
bWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
ZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5k
IGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4g
fSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBz
Y3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VS
Uk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMs
MjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQp
IHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAw
NUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
OjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAg
ICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJf
cywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVy
cywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAg
ICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIi
X3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxp
YzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAi
VSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisg
ICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAg
ICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywK
KyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0
cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2
b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9u
ZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5h
bWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhB
cHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmlu
ZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3Ry
aW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAg
ICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3Jl
YXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJj
ZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVy
bnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAg
ICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQu
VGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tl
bikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZj
MTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBA
IC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBs
aW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6
Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJl
dHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5y
ZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9
LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZk
b2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFR
dWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2
NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAg
aW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5n
VmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6
OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBpbmxp
bmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcs
IFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3Zl
cnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4
U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVu
Y29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3
Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICop
c3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRp
bmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxp
c3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsK
KyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgi
QXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5n
cygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJj
ZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNl
Ojp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwx
MyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQog
CiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdv
cmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUg
V2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYg
d29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAg
KytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxk
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAK
IFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJT
Y3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93
b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxk
OjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEz
IEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1
cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmln
aW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2Vj
dXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5
T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBh
MmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgp
CiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNl
cmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxp
emVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXpl
ZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXpl
ZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcu
LjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4
dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVy
ZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVy
ZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4
dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIi
X3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVy
ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7
CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApp
bmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAt
NDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihz
ZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3Rh
bmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTli
YTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEz
IEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7
CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywx
MyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVk
ZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3Mp
OwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRp
YWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3Mp
OwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9u
U3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNl
LmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAK
IFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXgg
YTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9j
YWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJV
UkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldl
YlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3Bv
bnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0g
bmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28g
aXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5t
X3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0
cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsK
ICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
aW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1
LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJM
UGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3Mp
OwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEy
NDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXco
KQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdD
b3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsK
IH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5
NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAv
KmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAg
ICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5j
b21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUu
ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2Ug
VW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIiku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVu
ZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJu
IGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlm
IChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBl
KCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtl
eUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8v
IFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVj
aWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVk
aXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUo
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVu
a25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcyku
ZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0
ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29w
eVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAi
Iik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0
eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJE
ZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldv
cmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEg
KzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5z
dGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsK
IH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJf
cyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1Ro
cmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUg
KzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAg
IEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAi
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0w
LTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAi
KSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNW
QykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMw
LDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBU
aGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50
YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgog
ICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRv
dGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMu
LmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRF
U1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykg
ewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUp
OwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBj
bGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNB
cHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRl
cmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRB
bGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3
IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwi
KTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhw
ZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5o
dG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2Vy
dmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVy
dCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQt
VHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZl
cicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3
IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0
aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0g
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlw
dD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsg
Ii8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNv
bnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9t
IHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dL
V2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRh
dGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2Vy
dmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
bmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+
J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
Il9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEo
ewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAg
ICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3Rh
dGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAK
ICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAg
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7
ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAK
ICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpA
QCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdp
blRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAg
ICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZh
bHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYy
MCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBo
YXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9u
IGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVT
VChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBw
SW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7
Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAi
L21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAv
LyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0
aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmll
bnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVu
dGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmly
ZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0
KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8
c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rp
b24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7
CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9u
U2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7
IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgog
fQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9D
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxo
dG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFs
bG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBz
Oi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwv
aWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIq
IGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0
bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VP
cmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAg
ICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFt
ZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9
IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBu
dWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFu
VXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVh
ckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBp
bml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsK
KyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3Nl
clByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4
MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRy
b2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3Qg
Y2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBA
IC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0
ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1
LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycp
LnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgK
IAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQu
ZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsK
QEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9t
YWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVz
IH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4u
aHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJD
b250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0
ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRl
RGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAg
aXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBs
b2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVz
c2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBh
cHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdv
cmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2Fs
aG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1s
IiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVz
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAg
IFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lu
c107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lz
dGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3Ry
YXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1
Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9j
YWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNi
Li41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMx
Nyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQ
cm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0s
Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0
ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2lu
IiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3Mg
fSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlw
ZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywg
InNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNU
KFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXAp
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNl
cnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAg
eyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIv
ZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7
ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9
IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBl
Il9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAi
c2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Q
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0K
KyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBj
b25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9k
ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5t
bQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVs
ZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
K1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRN
b2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBz
aXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYg
KGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0Ns
YXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2
aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJl
dGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdh
dGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRp
b25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJ
IiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRh
aW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
Pj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9u
YWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJf
cyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdl
YlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0
TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5k
ZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZh
Y2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwog
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3Rp
dmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFp
blN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmls
XTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxp
Y2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8g
TWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBk
ZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAg
IGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUv
MTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBs
ZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNl
ckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RS
VUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcq
LCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhC
aXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4g
ZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1
ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7
CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFr
Rm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484776"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456475</attachid>
            <date>2022-04-02 14:49:32 -0700</date>
            <delta_ts>2022-04-02 15:04:39 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>182699</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RUZXh0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAppbmRleCBlNGNmNmMwZGEwZTUuLjE4YjlkNmRj
OTQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nl
c3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCkBAIC03ODMsMTIg
Kzc4MywxMiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1dGVzIEFjY2Vz
c2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgiZmFtaWx5LW5hbWUiX3MsIHN0eWxlLmZvbnRDYXNjYWRlKCkuZmlyc3RGYW1pbHko
KSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzaXplIl9zLCBtYWtlU3RyaW5nKHN0
ZDo6cm91bmQoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgKiA3MiAvIFdlYkNvcmU6OnNj
cmVlbkRQSSgpKSwgInB0IikpOwogICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgid2VpZ2h0
Il9zLCBtYWtlU3RyaW5nKHN0YXRpY19jYXN0PGZsb2F0PihzdHlsZS5mb250Q2FzY2FkZSgpLndl
aWdodCgpKSkpOwotICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgic3R5bGUiX3MsIHN0eWxl
LmZvbnRDYXNjYWRlKCkuaXRhbGljKCkgPyAiaXRhbGljIiA6ICJub3JtYWwiKTsKLSAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoInN0cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0
aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIiA6ICJm
YWxzZSIpOwotICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgidW5kZXJsaW5lIl9zLCBzdHls
ZS50ZXh0RGVjb3JhdGlvbkxpbmUoKSAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lID8g
InNpbmdsZSIgOiAibm9uZSIpOwotICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiaW52aXNp
YmxlIl9zLCBzdHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuID8gInRydWUi
IDogImZhbHNlIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywg
bV9jb3JlT2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJkaXJlY3Rpb24iX3MsIHN0eWxlLmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiIDogInJ0bCIpOworICAgICAgICBh
ZGRBdHRyaWJ1dGVJZk5lZWRlZCgic3R5bGUiX3MsIHN0eWxlLmZvbnRDYXNjYWRlKCkuaXRhbGlj
KCkgPyAiaXRhbGljIl9zIDogIm5vcm1hbCJfcyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVl
ZGVkKCJzdHJpa2V0aHJvdWdoIl9zLCBzdHlsZS50ZXh0RGVjb3JhdGlvbkxpbmUoKSAmIFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2ggPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CisgICAg
ICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHREZWNvcmF0
aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xlIl9zIDog
Im5vbmUiX3MpOworICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiaW52aXNpYmxlIl9zLCBz
dHlsZS52aXNpYmlsaXR5KCkgPT0gVmlzaWJpbGl0eTo6SGlkZGVuID8gInRydWUiX3MgOiAiZmFs
c2UiX3MpOworICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZWRpdGFibGUiX3MsIG1fY29y
ZU9iamVjdC0+Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsK
KyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0
aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciJfcyA6ICJydGwiX3MpOwogCiAgICAg
ICAgIGlmICghc3R5bGUudGV4dEluZGVudCgpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgICAgICBh
ZGRBdHRyaWJ1dGVJZk5lZWRlZCgiaW5kZW50Il9zLCBtYWtlU3RyaW5nKHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnRleHRJbmRlbnQoKSwgbV9jb3JlT2JqZWN0LT5zaXplKCkud2lkdGgoKSkudG9JbnQo
KSkpOwpAQCAtNzk5LDE4ICs3OTksMTggQEAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpUZXh0
QXR0cmlidXRlcyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnRleHRBdHRyaWJ1dGUKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgICAgIGFkZEF0dHJpYnV0
ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAibGVmdCIpOworICAgICAgICAgICAgYWRkQXR0
cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Il9zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgICAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJyaWdodCIpOworICAgICAgICAgICAgYWRkQXR0cmli
dXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJyaWdodCJfcyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgICAgIGNhc2Ug
VGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiKTsKKyAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiY2VudGVyIl9zKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6Okp1c3RpZnk6Ci0gICAgICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImZpbGwiKTsKKyAgICAg
ICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCJfcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNw
cAppbmRleCBlZTZmYWQwMjBiYzMuLmQyMDNmNTc0MmE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRz
cGkuY3BwCkBAIC0xNzUsOCArMTc1LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpz
ZXRQYXRoKFN0cmluZyYmIHBhdGgpCiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1i
ZWRkZWQoY29uc3QgY2hhciogcGFyZW50VW5pcXVlTmFtZSwgY29uc3QgY2hhciogcGFyZW50UGF0
aCkKIHsKLSAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBwYXJlbnRVbmlxdWVOYW1lOwotICAgIG1f
cGFyZW50UGF0aCA9IHBhcmVudFBhdGg7CisgICAgbV9wYXJlbnRVbmlxdWVOYW1lID0gU3RyaW5n
Ojpmcm9tVVRGOChwYXJlbnRVbmlxdWVOYW1lKTsKKyAgICBtX3BhcmVudFBhdGggPSBTdHJpbmc6
OmZyb21VVEY4KHBhcmVudFBhdGgpOwogICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9u
KCkucGFyZW50Q2hhbmdlZCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YS4u
ZWEyNTI3MzJjYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9BWE9iamVjdENhY2hlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KQEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFw
cGVyKHdyYXBwZXIuZ2V0KCkpOwogfQogCi1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJh
bCBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24g
bm90aWZpY2F0aW9uKQogewotICAgIFN0cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
ID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAKICAgICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewog
ICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJ
RWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAg
ICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFY
SW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5n
ZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxlZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VT
Y3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHND
aGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
WExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVS
ZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1
c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAg
ICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoK
LSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1
ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6
Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFY
RXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0
YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAg
ICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU29ydERp
cmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgs
MTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9u
KEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNh
dGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlLaXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlm
aWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBpcyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNv
IGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5v
dGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3RlbSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRs
ZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRpb24pOwotICAgIGlmIChub3RpZmljYXRp
b25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRp
b25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKKyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3RO
b3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5h
bWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5TU3RyaW5nKCk7CisgICAgW29iamVjdC0+d3Jh
cHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAg
IC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlvbnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBz
aW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3JhcHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWRO
b3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWRO
b3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFj
Y2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsK
IH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAt
IChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlv
bilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3Jv
bGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAg
U3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsK
LSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAg
ICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxh
dGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCku
Y3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmlj
YXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9h
Y2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmlu
ZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJm
ICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNz
aWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAi
c3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0
ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1
cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlz
IG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBh
dHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFmNDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC01Njks
NyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2Ny
aXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRf
RE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJ
bkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21h
aW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NS
SVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdElu
V29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBk
b21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMg
eyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFp
biJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5k
ZXggOTAwZWQ1ZmY4NGI5Li4zMWVmYzI4MzA1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lv
cy9FZGl0b3JJT1MubW0KQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBFZGl0b3I6OnNldFRleHRBbGln
bm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXIK
ICAgICBpZiAoIXZhbHVlKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGNvbnN0IGNo
YXIgKm5ld1ZhbHVlID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwgbmV3VmFsdWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsK
ICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6
CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNo
YW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAg
ICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJl
Y3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAg
ICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1
ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0Ogot
ICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQi
OworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENl
bnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQg
PSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBF
ZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUg
PSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4
dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3Bl
cnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0
eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAy
NTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAog
ICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBm
b250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVj
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0
NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAg
ICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxv
Z2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAg
ICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAg
ICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFh
ZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApA
QCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNjcmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAg
ICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsKLSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1h
Z2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBk
b3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCmluZGV4IDUxMjNiYjJkMGMwNC4uZDQ4NDFkZjNkZmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMjUyLDE0ICsyNTIsMTQg
QEAgcHJpdmF0ZToKICAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIEZsb2F0UmVjdCByZWN0Rm9yU2V0dGluZ0F0
SW5kZXgodW5zaWduZWQpOwotICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYp
OworICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAgICAgICAgIAogICAg
IHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOwogCiAgICAg
c3RydWN0IFNldHRpbmcgewotICAgICAgICBTdHJpbmcga2V5OwotICAgICAgICBTdHJpbmcgbmFt
ZTsKLSAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGtleSB7IEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1lIHsgQVNDSUlMaXRl
cmFsOjpudWxsKCkgfTsKKyAgICAgICAgYm9vbCB2YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsgICAg
CiAKICAgICBGaXhlZFZlY3RvcjxTZXR0aW5nPiBtX3NldHRpbmdzIHsKQEAgLTM3OSw3ICszNzks
NyBAQCBGbG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0
SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgfTsKIH0KIAotYm9vbCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmIG5hbWUpCitib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1lKQog
ewogICAgIGZvciAoY29uc3QgYXV0byYgc2V0dGluZyA6IG1fc2V0dGluZ3MpIHsKICAgICAgICAg
aWYgKG5hbWUgPT0gc2V0dGluZy5rZXkpCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgIAogICAgIGNvbnRleHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAg
ICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIikpIHsKKyAgICBpZiAodmFsdWVGb3JTZXR0
aW5nKCJyZWdpb25zIl9zKSkgewogICAgICAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygy
KTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCkBAIC00
MzgsNyArNDM4LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgYXV0byByZWdpb24g
PSBhY3RpdmVSZWdpb24oKTsKIAotICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygi
Y29uc3RyYWluIikpIHsKKyAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0
cmFpbiJfcykpIHsKICAgICAgICAgYXV0byBncmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1
cykgewogICAgICAgICAgICAgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwogICAg
ICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENv
b3JkaW5hdGVzOwpAQCAtNDUxLDEwICs0NTEsMTAgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAog
CiAgICAgICAgIGF1dG8gbWFrZUdyYWRpZW50ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3Vu
ZCwgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhKSB7CiAgICAgICAgICAgICBhdXRv
IGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29s
b3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6
VW5wcmVtdWx0aXBsaWVkIH0pOwotICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNl
dHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAg
aWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuNSkgfSk7CiAgICAgICAg
ICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/
IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6
d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF2
YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8fCAh
dmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBo
YSgwLjIpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDApIH0pOwogICAgICAgICAgICAgfSBl
bHNlIHsKQEAgLTQ2NiwxOCArNDY2LDE4IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5
OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAg
ICAgfTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0g
NTA7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOwor
ICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpOwogICAg
ICAgICBWZWN0b3I8UGF0aD4gY2xpcFBhdGhzOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQog
ICAgICAgICAgICAgY2xpcFBhdGhzID0gcGF0aHNGb3JSZWdpb24oKnJlZ2lvbik7CiAKLSAgICAg
ICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lv
biB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIp
KTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAg
fHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIl9zKSk7CiAKICAgICAgICAgaWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQp
IHsKICAgICAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChj
b25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0
IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGgu
Ym91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0
dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNp
b24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BH
cmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoZ3JhZGllbnREYXRhKHJhZGl1cyAqIDEuNSksIHsg
Q29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlv
bjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxw
aGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29s
b3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKQEAg
LTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVj
dChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfQogCiAg
ICAgICAgIGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kID0gZmFsc2U7Ci0gICAgICAgIGlmICghc2hv
dWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xv
ciIpKQorICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JT
ZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiX3MpKQogICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3Jv
dW5kID0gcmVnaW9uLT5oYXNMaWdodEJhY2tncm91bmQ7CiAKICAgICAgICAgaWYgKHNob3VsZENs
aXApIHsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewot
ICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVh
bFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigp
IDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZv
clNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCku
c2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICBj
b250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBn
cmFkaWVudERhdGEocmFkaXVzKSkpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgo
cGF0aCk7CiAgICAgICAgICAgICB9CkBAIC01MjIsOSArNTIyLDkgQEAgYm9vbCBJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBs
YXRmb3JtTW8KIAogICAgIHN0ZDo6b3B0aW9uYWw8Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAotICAg
IGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiKSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY3Vyc29yIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0gICAg
ZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBlbHNlIGlmICghdmFsdWVG
b3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNv
cigpOwogCiAgICAgYXV0byBldmVudEluQ29udGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZp
ZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9zaXRpb24oKSk7CkBAIC01NDQsNyArNTQ0LDcg
QEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkm
IG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8KICAgICBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRD
b29yZGluYXRlcyA9IGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzOwogICAgIG92ZXJsYXkuc2V0
TmVlZHNEaXNwbGF5KCk7CiAKLSAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQppbmRleCA0Nzc0Y2UwOGE1YjguLmUwMTZm
OTIxZDVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jh
c2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNv
Y29hLm1tCkBAIC02MywxNSArNjMsMTUgQEAgYm9vbCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVm
YXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKIHZvaWQgU2V0dGluZ3NCYXNlOjppbml0aWFsaXpl
RGVmYXVsdEZvbnRGYW1pbGllcygpCiB7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5n
RmFuZyBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlBpbmdGYW5nIFNDIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFf
T1JfSElSQUdBTkEpOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGlj
IE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGlt
ZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwg
VVNDUklQVF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBU
X0NPTU1PTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQ
VF9DT01NT04pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiX3MsIFVT
Q1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdG
YW5nIFNDIl9zLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIl9zLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFH
QU5BKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iX3Ms
IFVTQ1JJUFRfSEFOR1VMKTsKKworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiX3Ms
IFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3MsIFVT
Q1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBU
X0NPTU1PTik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIl9zLCBVU0NS
SVBUX0NPTU1PTik7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCBlYmNkYjFkZDA4MTIuLjVhOTQ4OTAwOTQ5ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9Owog
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFt
ZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRP
U1ZlcnNpb24gPSBlbXB0eVN0cmluZygpLCBVc2VyQWdlbnRUeXBlID0gVXNlckFnZW50VHlwZTo6
RGVmYXVsdCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsK
K1dFQkNPUkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5n
KCk7CiAjZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5k
ZXggZTQ1ZmMwNjQzMzk0Li44YjdlNzQxYjdjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJh
Y2ssCiAgICAgbV9zcmMgPSBHU1RfRUxFTUVOVF9DQVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQ
RV9XRUJfQVVESU9fU1JDLCAicmF0ZSIsIHNhbXBsZVJhdGUsCiAgICAgICAgICJidXMiLCBtX3Jl
bmRlckJ1cy5nZXQoKSwgImRlc3RpbmF0aW9uIiwgdGhpcywgImZyYW1lcyIsIEF1ZGlvVXRpbGl0
aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgbnVsbHB0cikpOwogCi0gICAgR1JlZlB0cjxHc3RFbGVt
ZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiKTsKKyAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCJt
dXNpYyJfcyk7CiAgICAgbV9hdWRpb1NpbmtBdmFpbGFibGUgPSBhdWRpb1Npbms7CiAgICAgaWYg
KCFhdWRpb1NpbmspIHsKICAgICAgICAgR1NUX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJl
YW1lciBhdWRpbyBzaW5rIGVsZW1lbnQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3NWRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAi
R0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJhbWVEdXJhdGlvbiA9IDVfczsKIApAQCAtNTA1
LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBs
KEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkCiAKIC8vIFRoZSBjb250ZW50cyBv
ZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9uIGZvbGxvdywgcG9ydGVkIHRvIHVzZSBBTkdM
RS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChj
b25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8gRklYTUU6IFNpbmNlIHRoZSBjb25zdHJ1Y3Rv
cnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5vdCBzaGFyZWQsIHdlIGluaXRpYWxpemUgdGhp
cyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0aW5nIHRoZSBjb250ZXh0LCBhbHdheXMgaW5p
dGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRoZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdp
bGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAppbmRleCBkOWQzNjc0MTgzYTkuLmZjZDU2
M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApAQCAtMzUzLDcgKzM1Myw3
IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlh
cywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25v
cmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxl
bWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2ls
KEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFs
aWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgs
IEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBm
b3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0
aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBi
b29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKaW5kZXggN2U2MzQ2ZmZhMTgxLi4zZjM1NDhkYTBmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRUcmFuc2Zvcm0o
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ0FUcmFuc2Zvcm0zRCYgdHJhbnNmb3IKICAg
ICBidWlsZGVyLmFwcGVuZCgnWycsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm0xMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTEyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MTMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCks
ICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMSksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIyKSwgJyAnLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjMpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yNCksICI7ICIsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMSksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm00MSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tNDMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm00NCksICddJyk7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVp
bGRlciYgYnVpbGRlciwgaW50IGluZGVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ0dDb2xvclJl
ZiBjb2xvcikKK3N0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
aW50IGluZGVudCwgQVNDSUlMaXRlcmFsIGxhYmVsLCBDR0NvbG9yUmVmIGNvbG9yKQogewogICAg
IENvbG9yIGxheWVyQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvcikpOwogICAg
IGlmICghbGF5ZXJDb2xvci5pc1ZhbGlkKCkpCkBAIC03NjIsMTAgKzc2MiwxMCBAQCBzdGF0aWMg
dm9pZCBwcmludExheWVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFBsYXRmb3JtQ0FM
YXllciogbGF5ZXIsIGludAogICAgIH0KIAogICAgIC8vIFByaW50IGJhY2tncm91bmRDb2xvciBp
ZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5k
Q29sb3IiLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIo
KSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xv
ciJfcywgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKIAogICAgIC8vIFByaW50IGJvcmRlckNvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3Io
YnVpbGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIiwgQ0FDRkxheWVyR2V0Qm9yZGVyQ29s
b3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5k
ZW50ICsgMSwgImJvcmRlckNvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihsYXllci0+
cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBtYXNrc1RvQm91bmRzIGlmIG5lZWRl
ZAogICAgIGlmIChib29sIGxheWVyTWFza3NUb0JvdW5kcyA9IGxheWVyLT5tYXNrc1RvQm91bmRz
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0
eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFm
NTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICsz
NDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25z
dCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1p
bHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWls
eSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Vy
aWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJp
ZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJ
bmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAg
ICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFt
ZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpNb25vc3BhY2VGYW1pbHkpKQotICAgICAgICBy
ZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJldHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlm
IChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZl
RmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJzaXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJz
aXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1l
c0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAg
ICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1p
bHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWls
eSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3RlbS1mb250IikKICAgICAgICAgcmV0dXJuIGRl
ZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZDX1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdk
Li5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVh
bWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJ
T04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNf
Y2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2Rl
YyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2Rl
Yy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dT
dHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRleCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0
aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlmIChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVj
dHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAgICAgICBhdXRvKiBvYmplY3QgPSByZWludGVy
cHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJEYXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRW
YWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmlu
ZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICBy
ZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZmN2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxkQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0g
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6OlllcykgewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0
b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZh
Y3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8qIGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0
PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVzLT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmlu
ZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdT
VF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7
IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01F
VEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAgYXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEu
c3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChjb21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2Fy
ZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2luZ0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3
ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29k
ZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYx
RGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5oYXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1l
bnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2RlciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZh
Y3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3Nr
YVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgeworICAgIGlmICgo
bWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRp
b246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkgJiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewog
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01h
cC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3
YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiks
IGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBA
QCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0
IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5h
ZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwogICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBv
cnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmcs
ICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBl
U3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBp
ZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwogICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNl
dC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVnIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMy
MmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVs
ZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsK
LSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRl
byIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkg
PyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAgR3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3Jl
YXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5r
KTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCks
ICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdTVF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9
JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2UsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyLT5tZXNzYWdlOworICAgICAgICBt
X2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9y
ID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9y
X21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFNX0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NP
REVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAg
IGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJz
IikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3Np
bmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0
dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAg
ICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgICAgICAgICAgICAgbV9v
cmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCkpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEyNyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NF
bnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRpdGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0
X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAg
ICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBjdWUtPnNldENvbnRlbnQodGl0bGUpOworICAg
ICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAg
ICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRC
dWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRl
bXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpLCBudWxscHRyKTsKICAgICBH
U1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJSZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0
ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9sZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5l
d0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0gICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4
UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2Fk
UHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERv
d25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQYXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7
CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZpbGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXll
ci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRlbXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxl
Lm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkgeworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21VVEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkg
ewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRuJ3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBm
aWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxvYWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAsMTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQogICAgICAgICAvLyB0aG91Z2guIFdlIG5l
ZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3VycmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFw
cGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9uIHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVy
bCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRpb24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAg
ICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBu
ZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsgbmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAg
R1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVybFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0
KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVyaSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigp
LCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgp
IH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsgU3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQo
KSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5VcmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAg
ICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCBy
ZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcwMSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0
byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVudElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5p
c0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBl
bGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwogCiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlz
TWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5wcm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8g
Im1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkxOCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJzZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNz
YWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAg
ICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVjdGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5
U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAotICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5k
KHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7CisgICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQo
eyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0sIGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hh
bmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1RfRVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcgKzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVjdGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkK
ICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3RlbVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1
ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9u
KGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAmaW5pdERhdGEsIG51bGxwdHIpOwotICAgIGlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtldmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRh
fSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtl
eVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBmM2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcx
LDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdz
dE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NF
bnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNz
Q09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFE
YXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNl
R1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3
IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRh
Z0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAg
IGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5HVUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAg
ICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5n
dWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgbGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFn
X2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9Owog
ICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8g
JXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5n
dWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAgdmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3
ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdM
aXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFtZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2No
YXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdO
YW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAgICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQg
Z290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUsIHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAg
dmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAgICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFn
VmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAK
aW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3
ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9yRWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50
KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQYWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0
UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFk
UHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFttb2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1
cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9QUk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAg
ICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRBKGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0g
ICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCks
IEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1Rp
bWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3Rk
OjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05F
KSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50
X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3
ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9yRWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50
KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9P
SzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVsZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAgIGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5w
cm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1lKTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJv
Y2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwgc3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3Qs
IGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9C
RV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAj
aWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2Rl
Yyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAg
Y29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29k
ZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhy
ZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMg
Ym9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRlcihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1Zh
bHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RFQlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVy
OiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291
cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19jYXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJE
YXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENv
bnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBm
aWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0
aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVl
c3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9z
aXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVtYmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+
b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+
c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07
CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dD
b29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNy
Y01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2Vi
CiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIobWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAg
aWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhv
ZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9k
KFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAg
ICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1FbmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFz
IHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25vdyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBu
aWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICghZ19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMu
YXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2Np
aV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRh
KCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIp
OworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7
CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBv
c2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRl
ZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmlu
dGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQgIi0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3Np
dGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVz
IiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5n
IHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAgICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJl
YWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVC
VUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29ubmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+
a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2FibGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVw
QWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1l
OjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJp
di0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rfc3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0
cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQcm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVz
dCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVzdCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0
YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsKKyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRhdGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9y
ID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1
ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBA
IGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2ViU3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBz
dGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNvbnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAg
ICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07CisgICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVy
aVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hhciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVS
SUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4
IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVs
aW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwg
QXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZsb2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAg
ICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlwZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNy
Y1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIu
aXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246
OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkpIHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nh
bm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJh
dGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdpbmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAg
IHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZhbGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBz
SGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdTVF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkg
ewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0gZ2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMo
ZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZsb2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4
MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYp
CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFT
b3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2Ui
LCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAg
ICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmco
KS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVybC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVH
KCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNv
dXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDcz
ZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApA
QCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3Vw
cG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFr
ZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4g
SW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlm
IChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpOworICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlz
YW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikg
ewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAgICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0
dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJy
YXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5j
ZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAo
bmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdC
Il9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZm
ZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJh
bWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRo
IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwogCiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMg
c3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4
X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpw
bGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBH
TF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNfdGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUg
dGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNf
dGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFy
IGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8
IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190
ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8g
R0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRGT1JNKEdUSykpCi0gICAgICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0
Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbHNlCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVf
dmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3
LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7
CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9z
aGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4
dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1
cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJh
d19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfYnVmZmVycyIpOworICAgICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJz
Il9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3Ro
ZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAg
U3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhB
cnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNW
ZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIp
OworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBw
b3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0
c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUzYy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3Ry
aW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFO
R0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNlIGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhp
Y3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikKICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURF
Ul9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlk
IHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBz
aGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxhdGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250
ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09
IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsK
KyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAz
LDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFp
c1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAwMTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX2ds
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VM
RU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5j
ZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMg
fHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJh
eXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3Rh
bmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3Mp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
Il9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6Omds
VmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNlZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNm
MWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMg
KzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkKICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jl
c3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFs
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4
dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRycy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChz
dXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAg
ICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9u
KHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZykpIHsKKyAgICAgICAgICAgIGVuc3Vy
ZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAg
ICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAg
IGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkxMi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoK
ICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWlu
ZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRo
ZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAg
IHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2ls
RXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVz
KCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVt
IHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBj
b2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1Bp
eGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVB
dHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Ug
a25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpKQogICAgICAgICAgICAgaW50ZXJuYWxE
ZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01Q
T05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNi
OWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3Qg
YWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwgaXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5v
dC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRl
cy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRl
cy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0
ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYm
IHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAg
ICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxz
ZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRl
eEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dMaW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFs
aWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZh
bGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAg
ICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRy
aWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBs
ZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAm
JiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1
cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAg
IHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwCmluZGV4IGM4Y2FjNDhjNmMwNS4uYzdhMWMyNzI1ZDNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyKCkKICAgICAs
IG1fbGFzdEZQUygwKQogICAgICwgbV9mcmFtZUNvdW50KDApCiB7Ci0gICAgU3RyaW5nIHNob3dG
UFNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NIT1dfRlBTIik7CisgICAgU3RyaW5nIHNo
b3dGUFNFbnZpcm9ubWVudCB7IGdldGVudigiV0VCS0lUX1NIT1dfRlBTIikgfTsKICAgICBib29s
IG9rID0gZmFsc2U7CiAgICAgbV9mcHNJbnRlcnZhbCA9IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25t
ZW50LnRvRG91YmxlKCZvaykpOwogICAgIGlmIChvayAmJiBtX2Zwc0ludGVydmFsKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IDBkYjk4MDIxODA1NS4uNzY2OWExMWRiYTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMTQ1Myw3ICsx
NDUzLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMo
KQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVy
RmlyZWQoKQogewotICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIs
IG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9u
U3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOwog
fQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3Jl
YXRpb25UaW1lckZpcmVkKCkKQEAgLTE0OTAsNyArMTQ5MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBJ
bm5lckxheWVyKFRleHRTdHJlYW0mIHRleHRTdHJlYW0sIGNvbnN0IFN0cmluZyYgbGFiZWwsIENv
b3JkaW5hCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZHVtcEFkZGl0aW9uYWxQcm9w
ZXJ0aWVzKFRleHRTdHJlYW0mIHRleHRTdHJlYW0sIE9wdGlvblNldDxMYXllclRyZWVBc1RleHRP
cHRpb25zPiBvcHRpb25zKSBjb25zdAogewogICAgIGlmIChvcHRpb25zICYgTGF5ZXJUcmVlQXNU
ZXh0T3B0aW9uczo6SW5jbHVkZUNvbnRlbnRMYXllcnMpCi0gICAgICAgIGR1bXBJbm5lckxheWVy
KHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXllciIsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0
aW9ucyk7CisgICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXll
ciJfcywgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFn
IGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJv
YXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3Jl
YXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNv
bnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRl
eCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0
VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVD
bGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkK
K0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJ
UGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9T
IjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAg
cmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVG
b3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4u
YmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcg
QEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVy
ID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYm
IHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJu
YWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBl
Tm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJh
Y2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAo
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+
cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJmLi40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAg
R1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBhdXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFS
ZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyhtX3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlw
ZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5
cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0
IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVv
L21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAgICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVv
IHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgICAgIGlmIChjb2RlY3MuY29udGFp
bnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9y
YmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAg
ICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiOworICAgICAgICAgICAgYXVk
aW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5m
aW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsg
fSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcs
IG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dp
dGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1MTY5MDQ1YzcwNWYuLjJkYzI3MTY2M2EzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcApAQCAtMTAyLDE1ICsxMDIsMTUgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpw
bGF0Zm9ybUxhenlJbml0KCkKIAogICAgIENGU3RyaW5nUmVmIGRvbWFpbiA9IENGRXJyb3JHZXRE
b21haW4obV9wbGF0Zm9ybUVycm9yLmdldCgpKTsKICAgICBpZiAoZG9tYWluID09IGtDRkVycm9y
RG9tYWluTWFjaCB8fCBkb21haW4gPT0ga0NGRXJyb3JEb21haW5Db2NvYSkKLSAgICAgICAgbV9k
b21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3Rv
bUVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNG
TmV0d29yaykKLSAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiI7CisgICAgICAg
IG1fZG9tYWluID0gIkNGVVJMRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09
IGtDRkVycm9yRG9tYWluUE9TSVgpCi0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRv
bWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiJfczsKICAgICBl
bHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5PU1N0YXR1cykKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0
YXR1c0Vycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bldpblNvY2spCi0gICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9tYWluV2luU29jayI7Cisg
ICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9tYWluV2luU29jayJfczsKICAgICBlbHNlCiAg
ICAgICAgIG1fZG9tYWluID0gZG9tYWluOwogCkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBSZXNvdXJj
ZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpCiAKICAgICBzd2l0Y2go
ZXJyb3IuZG9tYWluKSB7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAg
ICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4g
PSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0
cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRv
bWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAg
ICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFp
biA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KQEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIGlmIChtX3VybC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBG
aWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0
ZW1QYXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVwRmlsZS5pc051bGwoKSkgewotICAgICAgICAg
ICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmls
ZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBtX3VybC5maWxlU3lzdGVtUGF0aCgpOworICAg
ICAgICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZp
Y2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZmlsZVBhdGgpOwogICAgICAgICAgICAg
aWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtu
c1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJlciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2
aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVxdWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2
aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAppbmRleCBlMGVlZjY4ODBm
MmIuLjA3MWJiMWE0N2JlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcApAQCAtNDcsNyArNDcs
NyBAQCBDZXJ0aWZpY2F0ZUluZm8gQ2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENvcHkoKSBjb25z
dAogCiBTdHJpbmcgQ2VydGlmaWNhdGVJbmZvOjp2ZXJpZmljYXRpb25FcnJvckRlc2NyaXB0aW9u
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92
ZXJpZmljYXRpb25FcnJvcik7CisgICAgcmV0dXJuIFN0cmluZyB7IFg1MDlfdmVyaWZ5X2NlcnRf
ZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpIH07CiB9CiAKIENlcnRpZmljYXRlSW5m
bzo6Q2VydGlmaWNhdGUgQ2VydGlmaWNhdGVJbmZvOjptYWtlQ2VydGlmaWNhdGUoY29uc3QgdWlu
dDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDYxMzY1MzFiNWIxYy4uNmIx
NmZjMzRkZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCBzdGQ6Om9wdGlvbmFsPFZl
Y3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0
UGFydHksCiAKICAgICBTdHJpbmcgcmVxdWVzdFBhdGggPSByZXF1ZXN0VXJsLnBhdGgoKS50b1N0
cmluZygpOwogICAgIGlmIChyZXF1ZXN0UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJlcXVlc3RQ
YXRoID0gIi8iOworICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIl9zOwogCiAgICAgUmVnaXN0cmFi
bGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0VXJsIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCA2
ZDM0NjhlNDIyMjUuLjA0ZTY0Y2QyYzdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAg
U3RyaW5nIGRlZmF1bHRQYXRoRm9yVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgU3RyaW5nIHBh
dGggPSB1cmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8ICFw
YXRoLnN0YXJ0c1dpdGgoJy8nKSkKLSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJu
ICIvIl9zOwogCiAgICAgYXV0byBsYXN0U2xhc2hQb3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQo
Jy8nKTsKICAgICBpZiAoIWxhc3RTbGFzaFBvc2l0aW9uKQotICAgICAgICByZXR1cm4gIi8iOwor
ICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFz
dFNsYXNoUG9zaXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKaW5kZXggN2I0Njg1NWEwNTE1Li5hN2Ex
NTI3Yzg2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIEN1cmxDYWNoZUVu
dHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpv
YiwgY29uc3QgU3RyCiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIAog
ICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1faGVhZGVyRmls
ZW5hbWUuYXBwZW5kKCIuaGVhZGVyIik7CisgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5o
ZWFkZXIiX3MpOwogCiAgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwot
ICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiKTsKKyAgICBtX2NvbnRlbnRG
aWxlbmFtZS5hcHBlbmQoIi5jb250ZW50Il9zKTsKIH0KIAogQ3VybENhY2hlRW50cnk6On5DdXJs
Q2FjaGVFbnRyeSgpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2
ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGRzKCkuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBTdHJpbmcgaGVh
ZGVyRmllbGQgPSBpdC0+a2V5OwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIik7Cisg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiX3MpOwogICAgICAgICBoZWFkZXJGaWVsZC5h
cHBlbmQoaXQtPnZhbHVlKTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOworICAg
ICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIl9zKTsKICAgICAgICAgQ1N0cmluZyBoZWFkZXJG
aWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAgICBGaWxlU3lzdGVtOjp3
cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZp
ZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVh
ZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzYmQy
Y2M3NDI4NmUuLjcwMmM1YjMxYTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtODUsNyArODUs
NyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jYWNoZURpci5hcHBlbmQo
Ii8iKTsKKyAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyJfcyk7CiAKICAgICBtX2Rpc2FibGVkID0g
ZmFsc2U7CiAgICAgbG9hZEluZGV4KCk7CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBDdXJsQ2Fj
aGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGlyKTsKLSAgICBpbmRleEZp
bGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CisgICAgYXV0byBpbmRleEZpbGVQYXRoID0gbWFr
ZVN0cmluZyhtX2NhY2hlRGlyLCAiaW5kZXguZGF0Il9zKTsKIAogICAgIEZpbGVTeXN0ZW06OmRl
bGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVT
eXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggNzI4Y2I4OGJmYjA1Li4z
ZTVkNmYxYzkwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtNDI5LDI2ICs0MjksMjMgQEAgdm9pZCBDdXJsSGFu
ZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQog
CiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFN0cmluZyBoZWFkZXIobmFtZSk7CisgICAg
U3RyaW5nIGhlYWRlcjsKIAogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8g
SW5zZXJ0IHRoZSA7IHRvIHRlbGwgY3VybCB0aGF0IHRoaXMgaGVhZGVyIGhhcyBhbiBlbXB0eSB2
YWx1ZS4KLSAgICAgICAgaGVhZGVyLmFwcGVuZCgiOyIpOworICAgICAgICBoZWFkZXIgPSBtYWtl
U3RyaW5nKG5hbWUsICc7Jyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaGVhZGVyLmFwcGVuZCgi
OiAiKTsKLSAgICAgICAgaGVhZGVyLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGhlYWRlciA9IG1h
a2VTdHJpbmcobmFtZSwgIjogIiwgdmFsdWUpOwogICAgIH0KIAotICAgIGFwcGVuZFJlcXVlc3RI
ZWFkZXIoaGVhZGVyKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7
CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6cmVtb3ZlUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcm
IG5hbWUpCiB7CiAgICAgLy8gQWRkIGEgaGVhZGVyIHdpdGggbm8gY29udGVudCwgdGhlIGludGVy
bmFsbHkgdXNlZCBoZWFkZXIgd2lsbCBnZXQgZGlzYWJsZWQuIAotICAgIFN0cmluZyBoZWFkZXIo
bmFtZSk7Ci0gICAgaGVhZGVyLmFwcGVuZCgiOiIpOwotCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRl
cihoZWFkZXIpOworICAgIGF1dG8gaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOicpOworICAg
IGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFu
ZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApp
bmRleCBhYWYwYzhkOTQwNzAuLmIwOTI1NmIxOTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTE4NCw3ICsx
ODQsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1
ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVx
dWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5j
bGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQu
aAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigi
Iik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIo
ZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4IGFhZTZjOTlkZDA1Mi4u
MDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdp
bi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZv
cldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtleUNvZGUpCiB7CiAgICAgc3dpdGNoIChr
ZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToKLSAgICAgICAgICAgIHJldHVybiAiQWx0
IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgICAgICBjYXNlIFZLX0NPTlRST0w6
Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAgICAgcmV0dXJuICJDb250
cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICAgICAgcmV0dXJuICJTaGlm
dCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9zOwogICAgICAgICBjYXNlIFZLX0NBUElU
QUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAgICAgICAgIHJldHVybiAi
Q2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJTjoKICAgICAgICAgY2FzZSBWS19SV0lO
OgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAgICAgICAgICAgcmV0dXJuICJXaW4iX3M7
CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAg
ICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAg
ICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAgICAgcmV0dXJuICJF
bmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAg
ICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAg
ICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAgIGNhc2UgVktfRVhFQ1VURToKLSAgICAg
ICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7
CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjI6Ci0gICAgICAgICAgICByZXR1
cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjM6
Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjMiX3M7CiAg
ICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktfRjU6Ci0gICAgICAgICAgICByZXR1cm4g
IkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7CiAgICAgICAgIGNhc2UgVktfRjY6Ci0g
ICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgICAgIGNhc2UgVktfRjk6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgICAg
IGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOworICAgICAgICAgICAgcmV0
dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEyOgotICAgICAgICAgICAgcmV0dXJuICJG
MTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgICAgIGNhc2UgVktfRjEzOgot
ICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAg
ICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICAg
ICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2UgVktfRjE1OgotICAgICAgICAgICAgcmV0
dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAgICAgIGNhc2UgVktf
RjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAgICAgcmV0dXJuICJGMTYi
X3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAgICAgICAgcmV0dXJuICJGMTciOworICAg
ICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAgIGNhc2UgVktfRjE4OgotICAgICAgICAg
ICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgICAgIGNh
c2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgotICAgICAgICAgICAgcmV0dXJuICJGMjAi
OworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgICAgIGNhc2UgVktfRjIxOgotICAg
ICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICAgICAg
cmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjIzOgotICAgICAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjI0
OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAgICAgICAgICAgcmV0dXJuICJGMjQiX3M7
CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAg
ICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAg
ICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICByZXR1cm4gIkhvbWUiX3M7CiAgICAgICAg
IGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiOworICAgICAgICAg
ICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAg
IHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgICAgIGNh
c2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgICAgICAgICAg
cmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2FzZSBWS19QUklPUjoKLSAgICAgICAgICAg
IHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgICAg
ICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNlIFZLX1NOQVBTSE9UOgotICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgICAgICByZXR1cm4gIlByaW50U2NyZWVu
Il9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7
CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgICAgICBjYXNlIFZLX1NDUk9MTDoK
LSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAgICAgICAgICAgIHJldHVybiAiU2Nyb2xs
Il9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0
IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgICAgICBjYXNlIFZLX1VQOgot
ICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1cm4gIlVwIl9zOwogICAg
ICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgICAgICBj
YXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgICAg
IHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBlcihrZXlDb2RlKSwgNCkpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2lu
LmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIzNDMwYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMg
KzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJu
ICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVz
Il9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2
Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9N
SU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5
cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAg
c3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFwOwogICAgIGlmIChtaW1l
dHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFpbiIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4
dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwgInRleHQveG1sIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1sIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5n
IiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiIsICJpbWFnZS90
aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJpbWFnZS90aWZmIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIiwgInRl
eHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxp
Y2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSIsICJh
dWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCJfcywgInRleHQvcGxh
aW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywgImFwcGxpY2F0aW9uL3Bk
ZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0
c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRleHQvaHRtbCJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9yc3MreG1sIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBwbGljYXRpb24veC13ZWJh
cmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciX3MsICJpbWFnZS9zdmcr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3ht
bCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdlL2pwZWciX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3Vy
Il9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiX3MsICJp
bWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCJfcywgInRleHQvdm5k
LndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMiX3MsICJhcHBsaWNh
dGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSJfcywg
ImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiX3Ms
ICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBtaW1l
dHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2ODVlZDk5MzY0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMjQwLDkgKzI0MCw5
IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNG
b3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJiBm
b3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxGb3JtYXQoKS0+Y2ZGb3Jt
YXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAg
IHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4dFdGb3Jt
YXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4dEZvcm1hdCgpLT5j
ZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iKTsKKyAgICAgICAgcmVz
dWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRD
dXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKQpAQCAtMjc1
LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRp
bmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3Bs
YWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOwotICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCIpOworICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRl
eHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCJf
cyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CkBA
IC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRPcmlnaW4oKQogU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICgh
bV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5
cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUpOwogICAgIGlmIChk
YXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCkBAIC0zNDEsNyArMzQxLDcgQEAgU3Ry
aW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICBy
ZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRD
RkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1
c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBi
b29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0
aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNo
YXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwg
dGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFy
a3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBjZmh0bWxEYXRhKTsKICAgICAgICAgbWVk
aXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEpOwogICAgICAgICBpZiAo
bWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVk
aXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpA
QCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3Qo
Y29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQogICAgIFN0cmluZyB1cmwg
PSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpz
dHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVt
UGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIiwgdHJ1ZSk7CisgICAgU3Ry
aW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCB0aXRsZVN0ciwg
Ii5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9y
dGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNv
bnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgLy8gd3Jp
dGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFibGUgdG8gcGFzdGUgaW50
byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYgKDo6T3BlbkNsaXBib2Fy
ZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3Vw
VG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgIiIsIGRhdGEp
OworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0ZWJvYXJkVVJMLnVybCwg
dGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBj
cmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShI
VE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKGNi
RGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDoKICAgICBp
ZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAmJiA6Ok9wZW5DbGlwYm9h
cmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2Fy
ZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHRyZWF0cyB0aGUg
Y2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTggb3IgZXZlbiBXaW5kb3dzIExhdGluLTEu
IElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAgICAgICAgICAgdGV4dC50ZXh0ID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSk7CisgICAgICAgICAgICB0ZXh0LnRl
eHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayhjYkRhdGEpKSB9Owog
ICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xp
cGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGlj
IEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxGcmVlKG1lbU9iaik7CiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwgMCk7CisgICAgZXh0ZW5z
aW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJM
T3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24sIGZhbHNlKTsKIAogICAgIGlm
IChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5n
JiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRkhUTUwo
bWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9DRkhUTUwobWFya3VwLCBlbXB0eVN0cmlu
ZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRpdW0geyB9OwogICAgIG1lZGl1bS50eW1l
ZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5m
by5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNiZTJkYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMg
U3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAg
Y2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2lu
ZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1
cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJl
dHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAg
IGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVy
biAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNl
IFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7Cisg
ICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5k
b3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5O
VDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25z
dCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBO
VCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVt
YmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29s
IGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJj
aGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygp
CiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAg
ICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9
PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7
IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNz
b3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAg
IHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJf
czsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3Bv
cnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3Jk
KCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dv
cmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9y
VGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApp
bmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChS
ZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBp
ZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJy
b3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmpl
Y3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVz
c2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygi
bWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclBy
b21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVz
dWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJy
b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vz
c2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAg
ICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVy
bCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygi
dXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6
OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1
LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgi
eCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIs
IHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywg
eC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5
LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3Ms
IFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYm
IGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0
aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0Iiwg
aGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0
aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUo
ImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdD
b250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3
LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1l
bnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVV
cGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAg
ICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVu
dC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9h
ZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07
IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAg
ICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0
SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3
ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRl
RWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0Vk
aXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIg
ICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIg
ICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246
OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAg
fSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9
Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBT
dHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFy
c2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAg
ICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFj
dGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1v
dmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZv
Y3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1
c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7
IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1l
bnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVF
bGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBT
ZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5z
ZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5n
dGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2
ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJv
dyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBu
b3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAg
ICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhj
cmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1
MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShj
b25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUi
X3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3Ms
IGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNv
b2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJw
YXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmco
KSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2Vj
dXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRw
T25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkp
OwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVT
aXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1l
U2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJu
IGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1
dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQp
CiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5w
dXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2Up
CitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291
cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAg
ICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOwor
ICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9p
bnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQ
b2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgot
ICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9z
OwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAi
VG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2lu
dGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0
dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0
dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAg
ICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJW
aWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAg
ICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBj
YXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVu
dCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmlu
ZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQog
ICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZh
ciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmlu
ZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0
RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsK
ICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50
IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAg
ICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9
IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9Owog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQg
V2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAg
ICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcg
PSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVj
dCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlk
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAg
ICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Iikp
IHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQ
cm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmlu
ZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAg
ICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVl
ID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0
byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24i
X3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRy
aXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmls
aXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFu
KCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0
cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlm
eSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2Fw
YWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9y
bWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5
Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3ki
X3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRl
eCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBh
YmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0
Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1
ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5n
ZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFk
ZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRp
ZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRh
cmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGll
cy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFy
Z2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJp
bGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYg
dGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRD
YXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFs
dWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBj
YXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFh
NDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZl
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhU
VFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAog
ICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgx
PkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+
QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAg
ICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2Ri
YTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgs
NyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25z
dCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0
ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAg
ICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Iik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRp
b24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlU
ZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAg
IC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7Cisg
ICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFp
bHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdl
Q29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJl
VG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUx
ODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSAr
MjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBw
cm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAx
LjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsK
KyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgot
ICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAg
ICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2
YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5k
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5
YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBA
IHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVt
b3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1l
dGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3Ry
aW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcg
KndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBp
ZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmluZzp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgo
KSkKKyAgICBpZiAobG9jYWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5
cGUgPSBsb2NhbFtpXTsKLSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAg
ICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFu
ZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3Ry
Y2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYgc3RyY2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICBhdXRvIG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykg
LT4gdW5pY2hhciB7CisgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50
ZXJjaGFuZ2VhYmxlLgorICAgICAgICByZXR1cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07
CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRl
Z2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3Rlcihb
bG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXSkgIT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3Rl
ckF0SW5kZXg6aV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9j
YXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQog
ICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBu
byB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9
IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1
cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7
Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1l
dGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2Nh
bE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJp
bmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVT
aWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBh
bmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9k
IFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3Rv
cikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBh
YTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcg
KzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJl
Z2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBT
dHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2ln
bmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2Nr
SW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNv
bnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5j
b2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEy
IEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2ws
IFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29k
aW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRo
b2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpt
ZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwog
ICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3Np
Z25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwog
fQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJL
aXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1
cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8t
PmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJp
bmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFj
ZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAq
d2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpD
VHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmlu
ZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2Nr
U2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsK
IAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAg
ICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2lu
dm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291
bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICgh
V2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUs
IGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VN
ZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVz
Iiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1
cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZh
aWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJs
b2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgs
NyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9i
amVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAg
ICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxD
aGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBf
X05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51
dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwg
Y2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5Qmxv
Y2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWdu
YXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBs
eUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1
dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRd
KTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTpp
bnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0
ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYK
ICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFw
cGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hT
ZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsK
ICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQg
aW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBF
eGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlu
LiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkph
dmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3Vu
ZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0
Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6
OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAg
InoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisg
ICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5
IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5
Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6
VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9z
LAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3Ms
ICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJp
IiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJf
cywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywg
NzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2ds
ZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0g
ICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktl
eVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRm
b3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21h
aWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0
dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsK
KyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0s
ICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5i
N2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVu
dENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rp
b246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29k
ZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0
aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2Vi
S2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcg
b24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9
ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwog
I2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9o
b3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVy
eU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAg
ICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlh
UXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFs
dWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1
bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVy
eVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9z
LCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXco
KS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0
b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxs
aW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7
CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxl
bmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3
IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2Fk
ZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1By
aXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpp
bmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNp
bXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0
KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7
CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJz
UGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGlj
dG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3Mp
OwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxl
ZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxl
ZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNm
YTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3Ry
ZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBXVEY6OlN0cmluZyYKICAgICAs
IG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJl
c291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSJfcyk7
CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3Qu
Y3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQxMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViU2Ny
aXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIFdlYlNjcmlwdE9iamVjdDo6
fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCmluZGV4IDI2ODEw
MWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Ny
aXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBXZWJTY3JpcHRXb3JsZDo6V2Vi
U2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3b3JsZCkKICAgICBhbGxXb3Js
ZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICArK2dDbGFzc0NvdW50OwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQ6On5X
ZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2Ny
aXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dvcmxkLmdldCgpKTsKIAogICAg
IC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRX
b3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiX3Mp
OwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6OnN0YW5kYXJkV29ybGQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDk0
NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyArNDksMTMgQEAgV2ViU2VjdXJpdHlPcmln
aW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKICAg
ICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiJfcyk7CiB9CiAKIFdlYlNl
Y3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4oKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4YmI4MGEyZmNhMjkuLjdmMTFkZjVmZmUx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVl
LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViU2Vy
aWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkKIHsKICAgICArK2dDbGFzc0Nv
dW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0K
IAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAg
LS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVk
SlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFs
aXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Ny4uMDQ1MzVmM2Y3MjMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKQEAgLTQwLDEzICs0
MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJlcjo6Y3JlYXRlSW5zdGFuY2Uo
KQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIFdlYlRleHRS
ZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJU
ZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRy
XyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmluZGV4IDU5Nzg4YzRmNWUyNC4u
NDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2VuZGVyKHNlbmRlcikKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4uNTA5OWJhMGFmMTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
KFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+
JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3Jl
ZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNw
cAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEzICszNywxMyBAQCBXZWJVUkxD
cmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwp
CiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7CiB9CiAKIFdlYlVSTENyZWRl
bnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7CiB9CiAKIFdlYlVSTENyZWRl
bnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCmluZGV4IDE5ZWQ5NmY4
MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEzICszNywxMyBAQCBXZWJVUkxQcm90ZWN0
aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHBy
b3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90
ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rp
b25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6fldlYlVSTFByb3RlY3Rp
b25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNw
YWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBhNWIyM2RiZmE1NDkuLjYxMjI5
NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9u
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApA
QCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2NhbGl6ZWRTaG9ydERlc2NyaXB0
aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxS
ZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxS
ZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2ViVVJMUmVzcG9uc2UoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxS
ZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2Ui
X3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNl
KCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2Uo
KTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQ
VVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygp
KTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwo
Imh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRS
ZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCA0ODEyMzg0NzEzYzgu
LmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgLS1nQ2xh
c3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJM
UGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250ZW50VVJMUGF0dGVybj4gV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4uZTU1YTI0MmRjZWIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcgKzQ0Niw3IEBAIFdlYlZpZXc6OldlYlZp
ZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygpCkBAIC00NjksNyArNDY5LDcg
QEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50LS07CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3KiBXZWJW
aWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDExICsxOTk1LDExIEBAIGJvb2wgV2ViVmll
dzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8qbFBhcmFtKi8pCiAgICAgRnJh
bWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAgICAgIGNhc2UgU2VsZWN0QWxs
OgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIp
LmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJT
ZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBVbmRvOgotICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyJfcykuZXhlY3V0ZSgpOwog
ICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29t
bWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3Io
KS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJv
YXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBl
dmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCku
a2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5k
ID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7Cisg
ICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJw
cmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBs
YXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2
ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRo
YXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVh
dGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5KF9Jbl9vcHRf
IElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4g
RV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29w
eSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzM0LDcgKzQ3MzQs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgi
Q3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cGFz
dGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCku
Y29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
NDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5VVJMKF9Jbl8gQlNUUiB1cmwp
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwo
TWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIiKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFy
c2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIGVtcHR5U3RyaW5nKCkpOwogICAgIHJl
dHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmRl
bGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZh
dGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCmlu
ZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSArOTAsMTEgQEAgV2ViV29ya2Vy
c1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJXb3JrZXJz
UHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQogCiBXZWJXb3JrZXJzUHJp
dmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBi
Y2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RG
X0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZh
dWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRl
ZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNT
RVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNT
RVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEo
MnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykp
OworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNU
KFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1
c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9y
IHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikp
OwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYg
IUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQ
cml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
cHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lS
ZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQ
cml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0
LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVz
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJT
V1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcg
QEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlT
V1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7
IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wg
eyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJl
c3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQog
ICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNv
bnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAog
ICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRo
ZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0
PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9o
dG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2Io
Wyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBl
OiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRo
ZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpG
ZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7
CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAg
ICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAg
ICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2Vy
dmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9z
LCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9
LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMg
KzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hh
cmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5o
dG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hl
ZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwg
eyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0s
Ci0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZy
b20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRl
cyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5o
dG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4i
X3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAt
NDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0
ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+
YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0
bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBS
ZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8
L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAg
ICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9z
LCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBq
cyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2Vy
dmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRl
VGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1h
aW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIv
Il9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAi
Q29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAg
ICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVs
bHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVV
UkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAg
VEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRl
ZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVz
RGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5T
V0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24g
bG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAn
ICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1z
dGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVT
T1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+
IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rp
b24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3Nh
Z2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwog
fQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4
cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQs
IFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAg
ICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4u
aHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMi
LCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2Ny
aXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAi
Q29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5
dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRo
IGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNk
YjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3
ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNS
aWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShA
InJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9u
IGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lv
bigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7
CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2sp
CiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
IiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAg
IH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwy
MyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0
RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1l
IHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6
aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtt
YWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9o
dG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NE
T0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9
IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwor
KURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lv
bkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0g
ICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFp
bkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9
LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkw
OTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3
ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMx
LDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZh
Y3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQu
VGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFk
KCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5n
T3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
ImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlm
aWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFp
bkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNl
ckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50
Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09V
UkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihy
ZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgK
IDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3Rh
dGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3Nh
Z2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
cHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29y
a2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIv
c3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0g
fSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRl
cyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAK
ICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9y
aWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBw
Qm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAg
ICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3Vj
Y2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBT
ZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOwor
ICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2Vy
IHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIild
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBm
YWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVy
Qnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIv
bWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cu
anMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9z
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5Njcs
NyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxz
ZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAg
ICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwi
KV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNU
KFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVz
aW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewot
ICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3Rp
bmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jv
c3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAor
ICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9k
ZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9z
IH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9
LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAg
ICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRl
bnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsg
Ii9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3Ms
IHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAog
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwg
eyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3Mg
fSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0s
ICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAg
IGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1
YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0
ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRl
ckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7
ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NO
YW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rp
bmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENv
bnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1v
ZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcg
QEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Vmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFz
cz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmln
YXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50
TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEw
MjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2Rl
KQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4s
IFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+
IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0g
Q0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBS
ZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBk
ZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0g
Q0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8
Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVu
dE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBA
QCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJp
b3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2Vy
SW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2Vi
S2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0s
IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRl
c3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29u
dGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dl
YlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEv
NS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5
LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3Rv
cFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFw
cGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmls
ZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVE
ZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVs
ZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAg
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNp
b25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBu
YXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRh
aW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0
VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCmlu
ZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlk
ZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVD
b21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07CiAg
ICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBvaW50
ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAgVVJM
IGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgiaHR0
cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVBy
b3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484778"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456476</attachid>
            <date>2022-04-02 15:04:39 -0700</date>
            <delta_ts>2022-04-02 15:52:52 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>193807</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjMxZWZjMjgzMDUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZSA9IEFTQ0lJTGl0ZXJh
bDo6bnVsbCgpOwogICAgIFRleHRBbGlnbk1vZGUgdGV4dEFsaWduID0gKnZhbHVlOwogICAgIHN3
aXRjaCAodGV4dEFsaWduKSB7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpTdGFydDoKQEAgLTEw
MCwyMSArMTAwLDIxIEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJh
c2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgICAgICAgICAvLyBu
by1vcAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
TGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgICAg
IG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBX
cml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdDoKLSAgICAgICAgICAgIG5ld1ZhbHVlID0gInJp
Z2h0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6TGVmdDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdExlZnQ6Ci0gICAgICAg
IG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgY2FzZSBUZXh0
QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKLSAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAg
ICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6Q2VudGVyOgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgpA
QCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdl
ZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIGlmICghbmV3VmFsdWUpCisgICAgaWYgKG5ld1ZhbHVlLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IG1fZG9j
dW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEVkaXRvcjo6
cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAgICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRp
bmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHkoKTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdl
dHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3IgdmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRo
ZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZlIG9uZS4KLSAgICBkZWZhdWx0U3R5bGUtPnNl
dFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjApIik7CisgICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSJfcyk7CiAgICAgCiAgICAgLy8g
UmVtb3ZlIHByb3BlcnRpZXMgdGhhdCB0aGUgdXNlciBjYW4gbW9kaWZ5LCBsaWtlIGZvbnQtd2Vp
Z2h0LiAKICAgICAvLyBBbHNvIHJlbW92ZSBmb250LWZhbWlseSwgcGVyIEhJIHNwZWMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0YjZkMGU1YjQ0NDcuLjAx
ODI4ZWY3MjNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBA
IC0xOTcsNyArMTk3LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1
cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykg
KyAiLi4uIjsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1
cm4gIlt1cmxdIjsKKyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNk
MjdlODY2NDk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52
YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMs
NyArMTAzLDcgQEAgY2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50
ZWQ8T2Zmc2NyZWVuQ2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVj
dCBJbWFnZUVuY29kZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmci
OworICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBx
dWFsaXR5ID0gMS4wOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2
YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1
bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAg
Ym9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpv
cHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3Qg
U2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAg
ICAgICBib29sIHZhbHVlOworICAgICAgICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFs
OjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51
bGwoKSB9OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAg
IEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZs
b2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25S
ZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFt
ZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2
YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJl
Z2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAg
ICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0
MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2
ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJh
aW4iKSkgeworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9z
KSkgewogICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAg
ICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAg
ICBncmFkaWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0
ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6
ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAg
ICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFk
aWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGll
bnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVy
cG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11
bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVn
aW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlw
Il9zKSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENv
bG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAg
ICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSku
Y29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9y
U2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAg
ICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRk
Q29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikg
fSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpA
QCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdS
ZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9Owog
ICAgICAgICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAg
ICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAg
IGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZl
Y3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAg
ICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29s
IHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICgh
dmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAg
ICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVn
aW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNs
aXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAg
ICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGlu
Z1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAg
ICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXpl
Il9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDog
ZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50
ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvcklu
dGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnBy
ZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFk
ZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIp
IH0pOwogICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3Ao
eyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEy
ICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VP
dmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAg
Ym9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisg
ICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmco
ImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSBy
ZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewog
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAg
ICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIp
ID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZh
dWx0UmFkaXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGlu
ZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCku
bWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQu
c2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50
RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsK
ICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9u
T3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1N
bwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2
YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJz
b3IiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlm
ICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRp
bmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAK
ICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2lu
ZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29s
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3Zlcmxh
eSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5h
dGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rp
c3BsYXkoKTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VN
b3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisg
ICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVu
dC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0K
QEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVk
aWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0
Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRD
IiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
UGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZv
bnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJB
R0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwg
VVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVT
Q1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBU
X0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9O
KTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1P
Tik7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9U
UkFESVRJT05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0Mi
X3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
SGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwor
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQ
VF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQ
VF9DT01NT04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9D
T01NT04pOworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9O
KTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09N
TU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Vz
ZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JF
X0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lv
biA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0
KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09S
RV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNl
bHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVm
YzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6
OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAg
ICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NBU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9B
VURJT19TUkMsICJyYXRlIiwgc2FtcGxlUmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVz
LmdldCgpLCAiZGVzdGluYXRpb24iLCB0aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJl
bmRlclF1YW50dW1TaXplLCBudWxscHRyKSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1
ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8
R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9z
KTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlv
U2luaykgewogICAgICAgICBHU1RfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1
ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRl
eCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0
aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zOwog
CiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBAIC01MDUsNyArNTA1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGlu
dCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9mIEdyYXBo
aWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCi12
b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xB
TkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBvZiB2
YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhlcmUu
CiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFsaXpl
IHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4uZmNkNTYzYTY3MzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyArMzUzLDcgQEAgcHJv
dGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQg
ZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFz
ZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRp
b24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlM
aXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0
dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
c2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRl
eCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5zZm9ybShTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2ZvcgogICAgIGJ1aWxk
ZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTIp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMyksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTE0KSwgIjsgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIxKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0NvbG9yUmVmIGNvbG9y
KQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5k
ZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7CiAgICAgQ29sb3Ig
bGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7CiAgICAgaWYgKCFs
YXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0YXRpYyB2b2lkIHBy
aW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZvcm1DQUxheWVyKiBs
YXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENvbG9yIGlmIG5lZWRl
ZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xvciIs
IENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7Cisg
ICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIl9zLCBD
QUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAg
ICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihsYXll
ci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAx
LCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9y
bUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCiAgICAg
aWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9u
dENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5MWVm
OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBA
QCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0cmlu
ZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9PSBm
YW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBm
YW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZhbWls
eSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpT
YW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAgICBy
ZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEt
PmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAi
bW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZhbWls
eSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkp
KQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUiX3M7
CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6
OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICByZXR1
cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9PSBm
YW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBm
YW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVsdEd0
a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZkOWY3
OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVw
ZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAy
MCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dl
dF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29k
ZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgp
IH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9H
U3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBnYm9v
bGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJlVmFs
dWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVlKGdf
cXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOwor
ICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxk
SWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBU
UlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAppbmRl
eCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6
RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVja0hh
cmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3RvcmllcyA9
IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9yaWVz
KSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0RWxl
bWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1ldGFk
YXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1F
TlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFf
S0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxpdCgn
LycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikpIHsK
ICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMzMSw3
IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29u
c3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVy
QXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rv
cmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVz
OjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3VwcG9y
dGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywg
InZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRyb3Nr
YVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAgICAg
IG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVyQXZh
aWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChB
dG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwog
ICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYxRGVj
b2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQg
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9t
U3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9
IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlv
L21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChhdWRp
b01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21T
dHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRp
bmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVudCog
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAgIGNv
bnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6ICJt
dXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRl
byJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0
Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwogICAg
IGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAg
ICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRlYnVn
Lm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcykiLCBl
cnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
LSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJyb3JN
ZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hl
cyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNfTk9U
X0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxzZSBp
ZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkgewog
ICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBIVFRQ
IGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYg
KGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJ1
cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdpbnMu
YWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBpZiAo
dXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBl
bnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFnX2xp
c3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBpZiAo
dGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAgICAg
ICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAgICAg
Z19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZlcihH
c3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10ZW1w
bGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9ERUJV
R19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBsYXRl
IGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93bmxv
YWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoID0g
bmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQ
YXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxvYWRG
aWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0KIApA
QCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRv
d25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5pcXVl
T3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5tX2Rv
d25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0UHRy
KCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxl
KGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpk
ZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAgICAg
ICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUgJXMg
YWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0byB0
YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5kIHRo
ZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0gZ3N0
X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBVUkwg
bmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1VybCA9
IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5pcXVl
T3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9waXBl
bGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51bGxw
dHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsKKyAg
ICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0gfTsK
IAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGlyZWN0
aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVsZW1l
bnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1wdHko
KSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1lbnRJ
ZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRpYVNv
dXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVkaWFz
dHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UoR3N0
TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0ZW1J
ZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2ZW50
S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0cmlu
ZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxlZFBy
b3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAgIGNv
bnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVyKiBp
bml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQs
ICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlhbGl6
YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsKKyAg
ICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVt
VVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyArNDcx
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2Fn
ZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5Kik7
CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JTQWNj
ZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBj
b25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9v
bCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCog
dGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdl
dFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAgICBs
YW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0X2xh
bmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAgICAg
IEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4iLCBt
X2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdlICE9
IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIxMSw3
IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRh
Z3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFn
VmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0
YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3QgJXMg
JXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1ZSA9
IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1ZS5n
ZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRleCA4
OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJh
bWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtpdEdz
dFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
Z3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQqLCBH
c3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJl
dHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZpZGVv
RnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAgICAg
R1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAgICAg
bWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIqPih1
c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NM
T0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0
KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1ha2Vf
cGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKICAg
ICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0X25h
bWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtpdEdz
dFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
ICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwogCi0g
ICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRh
dGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nlc3Np
bmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5n
VGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0X3V0
aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDMz
Njg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1Rf
Q0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9j
b2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1
cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0
cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRX
YWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmlu
ZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29sIHdl
YktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZh
bHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwiJXM6
ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VSZXF1
ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEpOwot
ICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5n
ZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxkTmFt
ZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVz
dChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFTU0VS
VChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwog
CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBSJXUg
JXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlvbj0l
IiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmlnaW5h
bFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9wUG9z
aXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAgICBV
UkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAgIFJl
c291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXMo
dHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJl
cXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBy
ZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAocHJp
di0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHByaXYt
Pmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3RyaW5n
IHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8vIEJ5
IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2UgZG9u
J3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVz
dChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8vIExl
dCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2UgbW92
aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0cmNh
c2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7CisgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAogICAg
IGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRpb24g
IT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFuZ2U7
CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVz
dChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiYnl0
ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKSk7
CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBmb3Jt
YXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBmb3Jt
YXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBvc2l0
aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpF
Q1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVwQWxp
dmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2ZSkK
LSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5l
Y3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQ
SGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5leHRy
YUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhlYWRl
cnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsKIAog
ICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0
IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5h
bWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBXVEY6
OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3ROdW1i
ZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29uc3Qg
Z2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRpYyBV
UkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJldHVy
biBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3RyaW5n
IH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFuZGxl
ciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0Nzlk
NmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBlbmRQ
aXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNvbnN0
IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFkQ2Fw
cyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVj
U3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2Rp
bmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVyLmlz
Q29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpE
ZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3RyZWFt
VHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlw
ZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAg
ICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11eGVy
U3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMyYjJj
NmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkK
IHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1dG8g
bXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1w
dHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxvYWRp
bmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNlID0g
bWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVj
YjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYs
MTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4
dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJf
YmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhl
eSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0
aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUg
PT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRp
c2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJf
cyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAg
ICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFu
Y2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2lu
c3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3Mp
IHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJh
eXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09
ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdC
Il9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZl
cl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19k
ZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0
cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgi
KQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3Jt
U3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90
ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdl
IHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJl
X2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZh
aWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVf
ZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVh
ciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9P
RVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNf
dmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5
X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRl
eF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhf
YXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAg
Ym9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9
PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0
ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZl
cnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwog
I2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0
Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2Jq
ZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFy
cmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4
QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1v
bi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxh
dGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRl
eHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVf
RlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVy
IHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0
eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1f
c2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250
ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpT
aGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAz
LDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRl
clNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQp
Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAg
ICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNz
KCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNJ
TlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0
YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFycmF5
cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpICYm
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikp
KSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKSkg
ewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0ZXhB
dHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9
IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0
IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpy
ZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygp
OwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNp
bChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmli
dXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRz
RXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVu
c3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAg
ICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5z
aW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAgICAg
ICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMu
ZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8v
IGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNo
IGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFi
aWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2
YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAog
ICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkg
d2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwg
R0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMs
IEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZm
ZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApp
bmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQ
aXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJl
c3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0
ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZC
T3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAg
ICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMo
KTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdl
IGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VY
VF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUz
MjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVT
LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0
aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAg
IC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAg
IGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5j
aWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1
ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9y
dHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAvLyBS
ZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAt
MjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2Uy
RChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRv
IGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMu
YW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5k
ZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBw
b3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykp
IHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29u
dGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
RlBTQ291bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
RlBTQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJl
TWFwcGVyRlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0
RlBTKDApCiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmly
b25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vu
dmlyb25tZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBm
YWxzZTsKICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9E
b3VibGUoJm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
MGRiOTgwMjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBA
QCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgp
CiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0
QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVk
KHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRp
bWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5
ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+
IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRp
b25zOjpJbmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0
cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsK
KyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBt
X2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4
IDM2ODcyMmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3Rl
Ym9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRy
b3AgcGFzdGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7
CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JE
cmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFm
YTJjOWFjNy4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9V
c2VyQWdlbnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXND
bGFzc2ljUGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxp
Y2F0aW9uQ2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNN
b2RlT3JpZ2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlM
aXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBh
YmlsaXR5KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAg
IHJldHVybiAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4g
ImlQaG9uZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJB
Z2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFl
MGVjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
KCkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlz
LT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVy
Q29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXli
YWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAi
Iik7CisgICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVD
bGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCA2MDdmMzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRy
PEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXI6OmNvbnRhaW5lclBybwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVy
UHJpdmF0ZTo6c2VsZWN0VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhp
cy0+bWltZVR5cGUoKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNl
bGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAg
ICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9z
IDogImF1ZGlvL21wNCJfczsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmls
ZSBmb3IgbWltZS10eXBlICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8g
Y29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAg
R1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9y
YmlzIl9zKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAg
ICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNO
YW1lID0gImF1ZGlvL3gtb3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihb
XShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBu
b3RGb3VuZCkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3Zl
cnNpb249NCJfczsKICAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2Vi
bSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9y
Q0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3Jt
TGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbiht
X3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5N
YWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9
Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JE
b21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3Jr
KQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21h
aW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJy
b3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYg
KGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJO
U09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJy
b3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluV2luU29j
aykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAg
bV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UKICAgICAgICAg
bV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6
OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRjaChlcnJvci5k
b21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBt
X2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3Vz
dG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJy
b3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1f
ZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
T1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVl
c3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3Vy
Y2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBG
aWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgo
KSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRv
IGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAg
ICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlm
ICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZp
bGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAgICBpZiAoZmls
ZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgW25zUmVxdWVz
dCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFs
dWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcx
YmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENl
cnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0
cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25z
dAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNh
dGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9z
dHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0
aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBi
dWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRl
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENv
b2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwK
IAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7
CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAi
LyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0
MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcg
ZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVy
bC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3Rh
cnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7
CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwog
ICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAiLyI7CisgICAgICAg
IHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQ
b3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxD
YWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1
cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25z
dCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9o
ZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5h
cHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJf
cyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9j
b250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29udGVudEZpbGVuYW1l
LmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVu
dHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9u
c2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5l
bmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVs
ZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAg
aGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChp
dC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhl
YWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0
aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9G
aWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRp
bjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2
ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZv
aWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOwor
ICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsK
ICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFn
ZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGgu
YXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5n
KG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5k
ZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6
RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFj
OTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFw
cGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQg
Q3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcg
aGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJbnNlcnQg
dGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgot
ICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmco
bmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwot
ICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmlu
ZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRlciho
ZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAog
dm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1
c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsK
LSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRl
cik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5k
UmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFw
cGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFh
ZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBA
IHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0
VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBj
cm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdS
ZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRU
UENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4
IDBmZTY1YTI5ZTYzNi4uYzIwZWM4ZTcyMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVu
dC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCIiKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0eVN0
cmluZygpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKaW5kZXggYWFlNmM5OWRkMDUyLi4wNWEwZDEy
NTZhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcApA
QCAtNDYsMTAxICs0NiwxMDEgQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yV2luZG93
c0tleUNvZGUodW5zaWduZWQgc2hvcnQga2V5Q29kZSkKIHsKICAgICBzd2l0Y2ggKGtleUNvZGUp
IHsKICAgICAgICAgY2FzZSBWS19NRU5VOgotICAgICAgICAgICAgcmV0dXJuICJBbHQiOworICAg
ICAgICAgICAgcmV0dXJuICJBbHQiX3M7CiAgICAgICAgIGNhc2UgVktfQ09OVFJPTDoKLSAgICAg
ICAgICAgIHJldHVybiAiQ29udHJvbCI7CisgICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiX3M7
CiAgICAgICAgIGNhc2UgVktfU0hJRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNoaWZ0IjsKKyAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiX3M7CiAgICAgICAgIGNhc2UgVktfQ0FQSVRBTDoKLSAg
ICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siOworICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9j
ayJfczsKICAgICAgICAgY2FzZSBWS19MV0lOOgogICAgICAgICBjYXNlIFZLX1JXSU46Ci0gICAg
ICAgICAgICByZXR1cm4gIldpbiI7CisgICAgICAgICAgICByZXR1cm4gIldpbiJfczsKICAgICAg
ICAgY2FzZSBWS19DTEVBUjoKLSAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAg
cmV0dXJuICJEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiRG93biJfczsKICAgICAgICAgLy8g
IkVuZCIKICAgICAgICAgY2FzZSBWS19FTkQ6Ci0gICAgICAgICAgICByZXR1cm4gIkVuZCI7Cisg
ICAgICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgICAgICBj
YXNlIFZLX1JFVFVSTjoKLSAgICAgICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICAgICAg
cmV0dXJuICJFbnRlciJfczsKICAgICAgICAgY2FzZSBWS19FWEVDVVRFOgotICAgICAgICAgICAg
cmV0dXJuICJFeGVjdXRlIjsKKyAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsKICAgICAg
ICAgY2FzZSBWS19GMToKLSAgICAgICAgICAgIHJldHVybiAiRjEiOworICAgICAgICAgICAgcmV0
dXJuICJGMSJfczsKICAgICAgICAgY2FzZSBWS19GMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIi
OworICAgICAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICAgICAgY2FzZSBWS19GMzoKLSAgICAg
ICAgICAgIHJldHVybiAiRjMiOworICAgICAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICAgICAg
Y2FzZSBWS19GNDoKLSAgICAgICAgICAgIHJldHVybiAiRjQiOworICAgICAgICAgICAgcmV0dXJu
ICJGNCJfczsKICAgICAgICAgY2FzZSBWS19GNToKLSAgICAgICAgICAgIHJldHVybiAiRjUiOwor
ICAgICAgICAgICAgcmV0dXJuICJGNSJfczsKICAgICAgICAgY2FzZSBWS19GNjoKLSAgICAgICAg
ICAgIHJldHVybiAiRjYiOworICAgICAgICAgICAgcmV0dXJuICJGNiJfczsKICAgICAgICAgY2Fz
ZSBWS19GNzoKLSAgICAgICAgICAgIHJldHVybiAiRjciOworICAgICAgICAgICAgcmV0dXJuICJG
NyJfczsKICAgICAgICAgY2FzZSBWS19GODoKLSAgICAgICAgICAgIHJldHVybiAiRjgiOworICAg
ICAgICAgICAgcmV0dXJuICJGOCJfczsKICAgICAgICAgY2FzZSBWS19GOToKLSAgICAgICAgICAg
IHJldHVybiAiRjkiOworICAgICAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICAgICAgY2FzZSBW
S19GMTA6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgICAgICByZXR1cm4gIkYx
MSJfczsKICAgICAgICAgY2FzZSBWS19GMTI6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMiI7Cisg
ICAgICAgICAgICByZXR1cm4gIkYxMiJfczsKICAgICAgICAgY2FzZSBWS19GMTM6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYxMyI7CisgICAgICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICAgICAg
Y2FzZSBWS19GMTQ6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgICAgICByZXR1
cm4gIkYxNCJfczsKICAgICAgICAgY2FzZSBWS19GMTU6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
NSI7CisgICAgICAgICAgICByZXR1cm4gIkYxNSJfczsKICAgICAgICAgY2FzZSBWS19GMTY6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYxNiI7CisgICAgICAgICAgICByZXR1cm4gIkYxNiJfczsKICAg
ICAgICAgY2FzZSBWS19GMTc6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgICAg
ICByZXR1cm4gIkYxNyJfczsKICAgICAgICAgY2FzZSBWS19GMTg6Ci0gICAgICAgICAgICByZXR1
cm4gIkYxOCI7CisgICAgICAgICAgICByZXR1cm4gIkYxOCJfczsKICAgICAgICAgY2FzZSBWS19G
MTk6Ci0gICAgICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICAgICAgY2FzZSBWS19GMjA6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMCI7CisgICAg
ICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICAgICAgY2FzZSBWS19GMjE6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYyMSI7CisgICAgICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICAgICAgY2Fz
ZSBWS19GMjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgICAgICByZXR1cm4g
IkYyMiJfczsKICAgICAgICAgY2FzZSBWS19GMjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMyI7
CisgICAgICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICAgICAgY2FzZSBWS19GMjQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICAg
ICAgY2FzZSBWS19IRUxQOgotICAgICAgICAgICAgcmV0dXJuICJIZWxwIjsKKyAgICAgICAgICAg
IHJldHVybiAiSGVscCJfczsKICAgICAgICAgY2FzZSBWS19IT01FOgotICAgICAgICAgICAgcmV0
dXJuICJIb21lIjsKKyAgICAgICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICAgICAgY2FzZSBW
S19JTlNFUlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgICAgICAgICByZXR1
cm4gIkluc2VydCJfczsKICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0IjsKKyAgICAgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICAgICAgY2FzZSBWS19O
RVhUOgotICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIl9zOwogICAgICAgICBjYXNlIFZLX1BSSU9SOgotICAgICAgICAgICAgcmV0dXJu
ICJQYWdlVXAiOworICAgICAgICAgICAgcmV0dXJuICJQYWdlVXAiX3M7CiAgICAgICAgIGNhc2Ug
VktfUEFVU0U6Ci0gICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiX3M7CiAgICAgICAgIGNhc2UgVktfU05BUFNIT1Q6Ci0gICAgICAgICAgICByZXR1
cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAg
ICAgICAgIGNhc2UgVktfUklHSFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAgICAgICAgIGNhc2UgVktfU0NST0xMOgotICAgICAg
ICAgICAgcmV0dXJuICJTY3JvbGwiOworICAgICAgICAgICAgcmV0dXJuICJTY3JvbGwiX3M7CiAg
ICAgICAgIGNhc2UgVktfU0VMRUNUOgotICAgICAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAg
ICAgICAgICAgcmV0dXJuICJTZWxlY3QiX3M7CiAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAg
ICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8v
IFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgICAgIGNhc2UgVktf
REVMRVRFOgotICAgICAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICAgICAgcmV0dXJu
ICJVKzAwN0YiX3M7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gbWFrZVN0
cmluZygiVSsiLCBoZXgodG9BU0NJSVVwcGVyKGtleUNvZGUpLCA0KSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCmlu
ZGV4IGI5Mzg3MTQ2NjUzYS4uODA3ZDU3MjM0MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU3RyaW5nIHVwbG9hZEZpbGVUZXh0KCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAidXBsb2FkIjsKKyAgICByZXR1cm4gInVwbG9h
ZCJfczsKIH0KIAogU3RyaW5nIGFsbEZpbGVzVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gImFsbCBmaWxlcyI7CisgICAgcmV0dXJuICJhbGwgZmlsZXMiX3M7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAppbmRleCBiNmIwNzYzN2NkNTYuLjI4YjU0
ZWY0N2ExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBl
UmVnaXN0cnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlw
ZVJlZ2lzdHJ5V2luLmNwcApAQCAtNzQsMzQgKzc0LDM0IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lz
dHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IHN0cmluZykKICAgICBzdGF0aWMg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWltZXR5cGVNYXA7CiAgICAgaWYgKG1pbWV0eXBlTWFw
LmlzRW1wdHkoKSkgewogICAgICAgICAvL2ZpbGwgd2l0aCBpbml0aWFsIHZhbHVlcwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInR4dCIsICJ0ZXh0L3BsYWluIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicGRmIiwgImFwcGxpY2F0aW9uL3BkZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoInBzIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJjc3MiLCAidGV4dC9jc3MiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1sIiwg
InRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSIsICJ0ZXh0L2h0bWwi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiLCAidGV4dC94bWwiKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ4c2wiLCAidGV4dC94c2wiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ4aHQiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieGh0bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgicnNzIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIiwgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInN2ZyIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgic3ZneiIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgianBnIiwgImltYWdlL2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJq
cGVnIiwgImltYWdlL2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciLCAiaW1h
Z2UvcG5nIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIiwgImltYWdlL3RpZmYiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWZmIiwgImltYWdlL3RpZmYiKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJpY28iLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiY3VyIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJtcCIs
ICJpbWFnZS9ibXAiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiLCAidGV4dC92bmQu
d2FwLndtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMiLCAiYXBwbGljYXRpb24v
dm5kLndhcC53bWxjIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIiwgImF1ZGlvL3gt
bTRhIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0Il9zLCAidGV4dC9wbGFpbiJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicGRmIl9zLCAiYXBwbGljYXRpb24vcGRmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyJfcywgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyJfcywgInRleHQvY3NzIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1sIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJodG0iX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInhtbCJfcywgInRleHQveG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ4c2wiX3MsICJ0ZXh0L3hzbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiX3Ms
ICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhodCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgieGh0bWwiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInJzcyJfcywgImFwcGxpY2F0aW9uL3Jzcyt4bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiX3MsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2ZyJfcywgImltYWdlL3N2Zyt4bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiX3MsICJpbWFnZS9zdmcreG1sIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJqcGVnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgicG5nIl9zLCAiaW1hZ2UvcG5nIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ0aWZmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNv
Il9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiX3MsICJp
bWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJtcCJfcywgImltYWdlL2Jt
cCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIl9zLCAidGV4dC92bmQud2FwLndt
bCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyJfcywgImFwcGxpY2F0aW9uL3Zu
ZC53YXAud21sYyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIl9zLCAiYXVkaW8v
eC1tNGEiX3MpOwogI2lmIFVTRShKUEVHWEwpCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhs
IiwgImltYWdlL2p4bCIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCJfcywgImltYWdl
L2p4bCJfcyk7CiAjZW5kaWYKICAgICB9CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1pbWV0eXBlTWFw
LmdldChleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCmluZGV4IDBiMjVmZjZjMzhjOC4uNjY4NWVkOTkzNjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0yNDAsOSArMjQwLDkgQEAgYm9v
bCBQYXN0ZWJvYXJkOjpoYXNEYXRhKCkKIHN0YXRpYyB2b2lkIGFkZE1pbWVUeXBlc0ZvckZvcm1h
dChMaXN0SGFzaFNldDxTdHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmIGZvcm1hdCkK
IHsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09IHVybEZvcm1hdCgpLT5jZkZvcm1hdCB8fCBm
b3JtYXQuY2ZGb3JtYXQgPT0gdXJsV0Zvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0
cy5hZGQoInRleHQvdXJpLWxpc3QiKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvdXJpLWxp
c3QiX3MpOwogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gcGxhaW5UZXh0V0Zvcm1hdCgpLT5j
ZkZvcm1hdCB8fCBmb3JtYXQuY2ZGb3JtYXQgPT0gcGxhaW5UZXh0Rm9ybWF0KCktPmNmRm9ybWF0
KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC9wbGFpbiIpOworICAgICAgICByZXN1bHRzLmFk
ZCgidGV4dC9wbGFpbiJfcyk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURh
dGE+IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpCkBAIC0yNzUsOSArMjc1
LDkgQEAgVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MoY29u
c3QgU3RyaW5nJiBvcmlnaW4pCiAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5
cGUpOwogICAgIH0KIAotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iKTsK
LSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7Ci0gICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCgidGV4dC9odG1sIik7CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFk
ZCgidGV4dC9wbGFpbiJfcyk7CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmkt
bGlzdCJfcyk7CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9odG1sIl9zKTsKIAog
ICAgIHJldHVybiBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5cGVzKTsKIH0KQEAgLTMyNyw3
ICszMjcsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiBTdHJpbmcgUGFzdGVi
b2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFtX2RhdGFP
YmplY3QgJiYgbV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSBkYXRh
VHlwZSA9IGNsaXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CiAgICAgaWYgKGRhdGFUeXBl
ID09IENsaXBib2FyZERhdGFUeXBlVGV4dCkKQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcgUGFz
dGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBt
X2RhdGFPYmplY3QgPyBnZXRDRkhUTUwobV9kYXRhT2JqZWN0LmdldCgpKSA6IGdldENGSFRNTCgm
bV9kcmFnRGF0YU1hcCk7CiAgICAgfQogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0
YShjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgd3Jp
dGVVUkwoV0NEYXRhT2JqZWN0ICpkYXRhLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nIHRpdGxlLCBi
b29sIHdpdGgKIAogICAgIGlmICh3aXRoSFRNTCkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gY2Zo
dG1sRGF0YTsKLSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSks
ICIiLCBjZmh0bWxEYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJs
LCB0aXRsZSksIGVtcHR5U3RyaW5nKCksIGNmaHRtbERhdGEpOwogICAgICAgICBtZWRpdW0uaEds
b2JhbCA9IGNyZWF0ZUdsb2JhbERhdGEoY2ZodG1sRGF0YSk7CiAgICAgICAgIGlmIChtZWRpdW0u
aEdsb2JhbCAmJiBGQUlMRUQoZGF0YS0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRS
VUUpKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC02OTIs
NyArNjkyLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBV
UkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgU3RyaW5nIHVybCA9IGt1cmwu
c3RyaW5nKCk7CiAgICAgQVNTRVJUKHVybC5pc0FsbEFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygp
IGlzIFVSTCBlbmNvZGVkLgogCi0gICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJv
bVVSTE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQ
YXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCJf
cywgdHJ1ZSk7CiAgICAgU3RyaW5nIGNvbnRlbnRTdHJpbmcoIltJbnRlcm5ldFNob3J0Y3V0XVxy
XG5VUkw9IiArIHVybCArICJcclxuIik7CiAgICAgQ1N0cmluZyBjb250ZW50ID0gY29udGVudFN0
cmluZy5sYXRpbjEoKTsKIApAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKICAgICAvLyB3cml0ZSB0byBj
bGlwYm9hcmQgaW4gZm9ybWF0IENGX0hUTUwgdG8gYmUgYWJsZSB0byBwYXN0ZSBpbnRvIGNvbnRl
bnRlZGl0YWJsZSBhcmVhcyBhcyBhIGxpbmsKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3du
ZXIpKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRN
TCh1cmxUb01hcmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCAiIiwgZGF0YSk7CisgICAg
ICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSks
IGVtcHR5U3RyaW5nKCksIGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUds
b2JhbERhdGEoZGF0YSk7CiAgICAgICAgIGlmICghOjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlw
Ym9hcmRGb3JtYXQsIGNiRGF0YSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsK
QEAgLTg0MCw3ICs4NDAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWlu
VGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgc3RkOgogICAgIGlmICg6Oklz
Q2xpcGJvYXJkRm9ybWF0QXZhaWxhYmxlKENGX1RFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293
bmVyKSkgewogICAgICAgICBpZiAoSEFORExFIGNiRGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShD
Rl9URVhUKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdHJlYXRzIHRoZSBjaGFyYWN0
ZXJzIGFzIExhdGluLTEsIG5vdCBVVEYtOCBvciBldmVuIFdpbmRvd3MgTGF0aW4tMS4gSXMgdGhh
dCB0aGUgcmlnaHQgZW5jb2Rpbmc/Ci0gICAgICAgICAgICB0ZXh0LnRleHQgPSBzdGF0aWNfY2Fz
dDxjaGFyKj4oR2xvYmFsTG9jayhjYkRhdGEpKTsKKyAgICAgICAgICAgIHRleHQudGV4dCA9IFN0
cmluZyB7IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpIH07CiAgICAgICAg
ICAgICBHbG9iYWxVbmxvY2soY2JEYXRhKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQo
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgSEdMT0JB
TCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmCiAgICAgICAgIEdsb2JhbEZyZWUobWVtT2JqKTsKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQotICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iLCAwKTsKKyAgICBleHRlbnNpb24uaW5z
ZXJ0KCIuIl9zLCAwKTsKICAgICBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxl
KHVybCwgcHJlZmVycmVkVGl0bGUsIGV4dGVuc2lvbiwgZmFsc2UpOwogCiAgICAgaWYgKGZzUGF0
aC5sZW5ndGgoKSA8PSAwKSB7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1
cCkKIHsKICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBtYXJrdXBUb0NGSFRNTChtYXJrdXAs
ICIiLCBkYXRhKTsKKyAgICBtYXJrdXBUb0NGSFRNTChtYXJrdXAsIGVtcHR5U3RyaW5nKCksIGRh
dGEpOwogCiAgICAgU1RHTUVESVVNIG1lZGl1bSB7IH07CiAgICAgbWVkaXVtLnR5bWVkID0gVFlN
RURfSEdMT0JBTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0
ZW1JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApp
bmRleCA3MGY2YzFkY2RlYmQuLmUxNjUzM2JlMmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TeXN0ZW1JbmZvLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlN5c3Rl
bUluZm8uaCIKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODQsMjUgKzg1LDI1IEBAIHN0YXRpYyBTdHJpbmcg
b3NWZXJzaW9uRm9yVUFTdHJpbmcoKQogICAgIGNhc2UgV2luZG93c0NFMToKICAgICBjYXNlIFdp
bmRvd3NDRTI6CiAgICAgY2FzZSBXaW5kb3dzQ0UzOgotICAgICAgICByZXR1cm4gIldpbmRvd3Mg
Q0UiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UiX3M7CiAgICAgY2FzZSBXaW5kb3dzQ0U0
OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCI7CisgICAgICAgIHJldHVybiAiV2lu
ZG93cyBDRSAuTkVUIl9zOwogICAgIGNhc2UgV2luZG93czNfMToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDMuMSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiX3M7CiAgICAgY2FzZSBX
aW5kb3dzOTU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5NSI7CisgICAgICAgIHJldHVybiAi
V2luZG93cyA5NSJfczsKICAgICBjYXNlIFdpbmRvd3M5ODoKLSAgICAgICAgcmV0dXJuICJXaW5k
b3dzIDk4IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4Il9zOwogICAgIGNhc2UgV2luZG93
c01FOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIjsKKyAgICAgICAg
cmV0dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCJfczsKICAgICBjYXNlIFdpbmRvd3NOVDQ6
Ci0gICAgICAgIHJldHVybiAiV2luTlQ0LjAiOworICAgICAgICByZXR1cm4gIldpbk5UNC4wIl9z
OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIGNvbnN0IGNoYXIq
IGZhbWlseU5hbWUgPSAodmVyc2lvbiA+PSBXaW5kb3dzTlQzKSA/ICJXaW5kb3dzIE5UICIgOiAi
V2luZG93cyBDRSAiOwotICAgIHJldHVybiBmYW1pbHlOYW1lICsgU3RyaW5nOjpudW1iZXIobWFq
b3IpICsgJy4nICsgU3RyaW5nOjpudW1iZXIobWlub3IpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KGZhbWlseU5hbWUsIG1ham9yLCAnLicsIG1pbm9yKTsKIH0KIAogc3RhdGljIGJvb2wgaXNXT1c2
NCgpCkBAIC0xNTIsMTEgKzE1MywxMSBAQCBzdGF0aWMgV09SRCBwcm9jZXNzb3JBcmNoaXRlY3R1
cmUoKQogc3RhdGljIFN0cmluZyBhcmNoaXRlY3R1cmVUb2tlbkZvclVBU3RyaW5nKCkKIHsKICAg
ICBpZiAoaXNXT1c2NCgpKQotICAgICAgICByZXR1cm4gIjsgV09XNjQiOworICAgICAgICByZXR1
cm4gIjsgV09XNjQiX3M7CiAgICAgaWYgKHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpID09IFBST0NF
U1NPUl9BUkNISVRFQ1RVUkVfQU1ENjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0IjsK
KyAgICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiX3M7CiAgICAgaWYgKHByb2Nlc3NvckFyY2hp
dGVjdHVyZSgpID09IFBST0NFU1NPUl9BUkNISVRFQ1RVUkVfSUE2NCkKLSAgICAgICAgcmV0dXJu
ICI7IFdpbjY0OyBJQTY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdpbjY0OyBJQTY0Il9zOwogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IGE5MDkwZjdlYTFhMy4uMGNmNDI0ODI5ZDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25z
aXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldE91dHNpZGVWaWV3cG9ydFRocm90
dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAg
ICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoIiIpOwor
ICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZChlbXB0
eVN0cmluZygpKTsKICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyOjpzZXRDbGllbnRGb3JUZXN0aW5n
KG51bGxwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDUy
ZTI3Njc2M2NhMy4uODM1OTY5YmZhMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0Nv
bW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAK
QEAgLTUzLDExICs1MywxMSBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxK
U09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAgIGlmICghZXJy
b3JPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBlcnJvck9iamVj
dC0+Z2V0SW50ZWdlcigiY29kZSIpOworICAgIGF1dG8gZXJyb3IgPSBlcnJvck9iamVjdC0+Z2V0
SW50ZWdlcigiY29kZSJfcyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3RyaW5nKCJtZXNzYWdlIik7
CisgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3RyaW5nKCJtZXNzYWdl
Il9zKTsKICAgICBpZiAoIWVycm9yTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9TZXNz
aW9uLmNwcAppbmRleCAwNTI0NmJhYTYzYzUuLmQ3MWY0ZDEwNTdlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24u
Y3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBTZXNzaW9uOjpoYW5kbGVVc2VyUHJvbXB0cyhG
dW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW4KICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiKTsK
KyAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCJfcyk7CiAgICAgICAgIGlmICghaXNTaG93aW5n
SmF2YVNjcmlwdERpYWxvZykgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFu
ZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU5LDEzICszNTksMTMgQEAgdm9pZCBTZXNzaW9uOjpn
ZXRDdXJyZW50VVJMKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdl
dE9iamVjdCgiY29udGV4dCIpOworICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSBy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Il9zKTsKICAgICAgICAg
ICAgIGlmICghYnJvd3NpbmdDb250ZXh0KSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25v
d25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIik7Cisg
ICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiX3Mp
OwogICAgICAgICAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93
bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODU1LDE0ICs4NTUsMTQgQEAg
dm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB4LCBzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geSwgc3QKICAgICAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJo
YW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CiAgICAgICAgIGlm
ICh4ICYmIHkpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93T3JpZ2luID0gSlNPTjo6T2JqZWN0
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ4IiwgeC52
YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5IiwgeS52YWx1
ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ4Il9zLCB4LnZhbHVl
KCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiX3MsIHkudmFsdWUo
KSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoIm9yaWdpbiJfcywgV1RGTW92
ZSh3aW5kb3dPcmlnaW4pKTsKICAgICAgICAgfQogICAgICAgICBpZiAod2lkdGggJiYgaGVpZ2h0
KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd1NpemUgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCIsIHdpZHRoLnZhbHVl
KCkpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiLCBoZWlnaHQu
dmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoIndpZHRoIl9zLCB3
aWR0aC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0
Il9zLCBoZWlnaHQudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3Qo
InNpemUiX3MsIFdURk1vdmUod2luZG93U2l6ZSkpOwogICAgICAgICB9CiAgICAgICAgIG1faG9z
dC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInNldFdpbmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQi
X3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vzc2lvbkhvc3Q6OkNvbW1h
bmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTE3MTcsMTIgKzE3MTcsMTIgQEAg
dm9pZCBTZXNzaW9uOjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0cmluZyYgZWxlbWVudElE
LCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVt
ZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0ZpbGVV
cGxvYWRTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGlzRmlsZVVwbG9hZFNj
cmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChl
bGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiBlbGVtZW50LnR5cGUg
PT09ICdmaWxlJykiCiAgICAgICAgICIgICAgICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogdHJ1
ZSwgJ211bHRpcGxlJzogZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ211bHRpcGxlJykgfTsiCiAgICAg
ICAgICIgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiBmYWxzZSB9OyIKLSAgICAgICAgIn0iOwor
ICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5kbGUi
X3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0xODU1LDcgKzE4NTUs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50
KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlz
RWRpdGFibGVTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGlzRWRpdGFibGVT
Y3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAo
ZWxlbWVudC5kaXNhYmxlZCB8fCBlbGVtZW50LnJlYWRPbmx5KSIKICAgICAgICAgIiAgICAgICAg
cmV0dXJuIGZhbHNlOyIKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSCiAgICAgICAgICIgICAgICAgIHJldHVybiB0cnVlOyIKICAgICAgICAgIiAgICB9IgogICAg
ICAgICAiICAgIHJldHVybiBmYWxzZTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAK
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMjE3MCw3ICsyMTcwLDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYg
dGV4dCwgRnVuY3QKICAgICAgICAgICAgIGF1dG8gZmlsZVVwbG9hZFR5cGUgPSBwYXJzZUVsZW1l
bnRJc0ZpbGVVcGxvYWRSZXN1bHQocmVzdWx0LnJlc3VsdCgpKTsKICAgICAgICAgICAgIGlmICgh
ZmlsZVVwbG9hZFR5cGUgfHwgY2FwYWJpbGl0aWVzKCkuc3RyaWN0RmlsZUludGVyYWN0YWJpbGl0
eS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogbW92ZSB0aGlz
IHRvIGFuIGF0b20uCi0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgZm9jdXNTY3Jp
cHRbXSA9CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZvY3VzU2NyaXB0
ID0KICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvY3VzKGVsZW1lbnQpIHsiCiAgICAg
ICAgICAgICAgICAgICAgICIgICAgbGV0IGRvYyA9IGVsZW1lbnQub3duZXJEb2N1bWVudCB8fCBl
bGVtZW50OyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgcHJldkFjdGl2ZUVsZW1lbnQg
PSBkb2MuYWN0aXZlRWxlbWVudDsiCkBAIC0yMTg2LDcgKzIxODYsNyBAQCB2b2lkIFNlc3Npb246
OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBGdW5jdAogICAgICAgICAgICAgICAgICAgICAiICAgICAgICBlbGVtZW50LnNldFNlbGVj
dGlvblJhbmdlKGVsZW1lbnQudmFsdWUubGVuZ3RoLCBlbGVtZW50LnZhbHVlLmxlbmd0aCk7Igog
ICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChlbGVtZW50Um9vdE5vZGUuYWN0aXZlRWxlbWVu
dCAhPT0gZWxlbWVudCkiCiAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHRocm93IHtuYW1l
OiAnRWxlbWVudE5vdEludGVyYWN0YWJsZScsIG1lc3NhZ2U6ICdFbGVtZW50IGlzIG5vdCBmb2N1
c2FibGUuJ307IgotICAgICAgICAgICAgICAgICAgICAifSI7CisgICAgICAgICAgICAgICAgICAg
ICJ9Il9zOwogCiAgICAgICAgICAgICAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVs
ZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwpAQCAtMjUwNiwxMyArMjUwNiwxMyBA
QCBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbHRBdXRvbWF0aW9uQ29va2llKGNvbnN0IFNl
c3Npb246OkNvb2tpZSYgY29va2llKQogICAgIGF1dG8gY29va2llT2JqZWN0ID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygibmFtZSJfcywgY29v
a2llLm5hbWUpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJ2YWx1ZSJfcywgY29va2ll
LnZhbHVlKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBh
dGgudmFsdWVfb3IoIi8iKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3Ms
IGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIl9zKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoImRvbWFpbiJfcywgY29va2llLmRvbWFpbi52YWx1ZV9vcihlbXB0eVN0cmluZygpKSk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUiX3MsIGNvb2tpZS5zZWN1cmUudmFs
dWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oImh0dHBPbmx5Il9z
LCBjb29raWUuaHR0cE9ubHkudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNl
dEJvb2xlYW4oInNlc3Npb24iX3MsICFjb29raWUuZXhwaXJ5KTsKICAgICBjb29raWVPYmplY3Qt
PnNldERvdWJsZSgiZXhwaXJlcyJfcywgY29va2llLmV4cGlyeS52YWx1ZV9vcigwKSk7Ci0gICAg
Y29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFs
dWVfb3IoIk5vbmUiKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9z
LCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiX3MpKTsKICAgICByZXR1cm4gY29va2ll
T2JqZWN0OwogfQogCkBAIC0yNjkxLDM4ICsyNjkxLDM4IEBAIFNlc3Npb246OklucHV0U291cmNl
U3RhdGUmIFNlc3Npb246OmlucHV0U291cmNlU3RhdGUoY29uc3QgU3RyaW5nJiBpZCkKICAgICBy
ZXR1cm4gbV9pbnB1dFN0YXRlVGFibGUuZW5zdXJlKGlkLCBbXSB7IHJldHVybiBJbnB1dFNvdXJj
ZVN0YXRlKCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGF1
dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKK3N0YXRp
YyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlu
cHV0U291cmNlKQogewogICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UudHlwZSkgewogICAgIGNhc2Ug
SW5wdXRTb3VyY2U6OlR5cGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAiTnVsbCI7CisgICAgICAg
IHJldHVybiAiTnVsbCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpQb2ludGVyOgog
ICAgICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnBvaW50ZXJUeXBlLnZhbHVlX29yKFBvaW50ZXJU
eXBlOjpNb3VzZSkpIHsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6TW91c2U6Ci0gICAgICAg
ICAgICByZXR1cm4gIk1vdXNlIjsKKyAgICAgICAgICAgIHJldHVybiAiTW91c2UiX3M7CiAgICAg
ICAgIGNhc2UgUG9pbnRlclR5cGU6OlRvdWNoOgotICAgICAgICAgICAgcmV0dXJuICJUb3VjaCI7
CisgICAgICAgICAgICByZXR1cm4gIlRvdWNoIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBl
OjpQZW46Ci0gICAgICAgICAgICByZXR1cm4gIlBlbiI7CisgICAgICAgICAgICByZXR1cm4gIlBl
biJfczsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIElucHV0U291cmNlOjpU
eXBlOjpLZXk6Ci0gICAgICAgIHJldHVybiAiS2V5Ym9hcmQiOworICAgICAgICByZXR1cm4gIktl
eWJvYXJkIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OldoZWVsOgotICAgICAgICBy
ZXR1cm4gIldoZWVsIjsKKyAgICAgICAgcmV0dXJuICJXaGVlbCJfczsKICAgICB9CiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIGF1dG9t
YXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKK3N0YXRpYyBBU0NJSUxp
dGVyYWwgYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6VHlwZSB0eXBlKQogewog
ICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6Vmlld3Bv
cnQ6Ci0gICAgICAgIHJldHVybiAiVmlld3BvcnQiOworICAgICAgICByZXR1cm4gIlZpZXdwb3J0
Il9zOwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6UG9pbnRlcjoKLSAgICAgICAgcmV0
dXJuICJQb2ludGVyIjsKKyAgICAgICAgcmV0dXJuICJQb2ludGVyIl9zOwogICAgIGNhc2UgUG9p
bnRlck9yaWdpbjo6VHlwZTo6RWxlbWVudDoKLSAgICAgICAgcmV0dXJuICJFbGVtZW50IjsKKyAg
ICAgICAgcmV0dXJuICJFbGVtZW50Il9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2
aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKaW5kZXggNWU0
NDA2N2VmMGEyLi41OTE4NDcwYjg1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2Vi
RHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNl
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdj
LCBjaGFyKiogYXJndikKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgU3Ry
aW5nIHRhcmdldFN0cmluZzsKICAgICBpZiAoY29uc3QgY2hhciogdGFyZ2V0RW52VmFyID0gZ2V0
ZW52KCJXRUJEUklWRVJfVEFSR0VUX0FERFIiKSkKLSAgICAgICAgdGFyZ2V0U3RyaW5nID0gdGFy
Z2V0RW52VmFyOworICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyB0YXJnZXRFbnZWYXIg
fTsKICNlbmRpZgogICAgIGZvciAoaW50IGkgPSAxIDsgaSA8IGFyZ2M7ICsraSkgewogICAgICAg
ICBjb25zdCBjaGFyKiBhcmcgPSBhcmd2W2ldOwpAQCAtNzUsNyArNzUsNyBAQCBpbnQgV2ViRHJp
dmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBw
cmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElU
X0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0U3RyaW5nID0gYXJndltp
XTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC05Nyw3ICs5Nyw3IEBAIGludCBXZWJEcml2
ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHBy
aW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRf
RkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhcmdldFN0cmluZyA9IGFyZ3Zb
aV07CisgICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94
eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuaHR0cHNVUkwtPmlzVmFsaWQoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9Ci0gICAgICAgIGlm
IChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiKSkgeworICAg
ICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Il9z
KSkgewogICAgICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAg
ICAgICAgICAgICBpZiAoIXNvY2tzUHJveHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4g
ZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAg
aWYgKCFwcm94eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94
eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7CisgICAgICAgICAgICBhdXRvIHNvY2tz
VmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiJfcyk7CiAg
ICAgICAgICAgICBpZiAoIXNvY2tzVmVyc2lvblZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcyLDMwIEBAIHZvaWQgV2ViRHJpdmVyU2Vy
dmljZTo6Y3JlYXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xp
c3QsIHN0CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldEJvb2xlYW4oInNldFdp
bmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5zZXRXaW5kb3dSZWN0LnZhbHVlX29yKHRydWUpKTsK
ICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2aW9y
LnZhbHVlX29yKFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgewog
ICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzczoKLSAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJkaXNtaXNzIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21w
dEJlaGF2aW9yOjpBY2NlcHQ6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Iik7CisgICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJl
aGF2aW9yIl9zLCAiYWNjZXB0Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnk6Ci0gICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
ZGlzbWlzcyBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFuZE5vdGlmeToKLSAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFj
Y2VwdCBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6Oklnbm9yZToKLSAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3Ms
ICJpZ25vcmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiX3MpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRp
ZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWwpKSB7
CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJu
b25lIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBh
Z2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAgICAgICAgICAg
IGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9y
bWFsIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBh
Z2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoKLSAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVh
Z2VyIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBh
Z2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5wcm94eSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCmluZGV4IDBmNmM4
NzgyMDA5NS4uMmI2NzEzNDlkMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0Nh
cGFiaWxpdGllc1NvY2tldC5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCB2b2lkIENhcGFiaWxpdGll
c1NvY2tldDo6cGFyc2VDYXBhYmlsaXRpZXMoY29uc3QgSlNPTjo6T2JqZWN0JiBtYXRjaGVkQ2Fw
YWJpbGl0aQogewogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0QWRkclZhbHVlOwogICAg
IFN0cmluZyB0YXJnZXRBZGRyOwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVl
KCJzb2NrZXQ6dGFyZ2V0QWRkciIsIHRhcmdldEFkZHJWYWx1ZSkgJiYgdGFyZ2V0QWRkclZhbHVl
LT5hc1N0cmluZyh0YXJnZXRBZGRyKSkKKyAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRW
YWx1ZSgic29ja2V0OnRhcmdldEFkZHIiX3MsIHRhcmdldEFkZHJWYWx1ZSkgJiYgdGFyZ2V0QWRk
clZhbHVlLT5hc1N0cmluZyh0YXJnZXRBZGRyKSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdl
dEFkZHIgPSB0YXJnZXRBZGRyOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRQb3J0
VmFsdWU7CiAgICAgaW50IHRhcmdldFBvcnQ7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMu
Z2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0IiwgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQ
b3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKKyAgICBpZiAobWF0Y2hlZENhcGFiaWxp
dGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiX3MsIHRhcmdldFBvcnRWYWx1ZSkgJiYg
dGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCiAgICAgICAgIGNhcGFiaWxp
dGllcy50YXJnZXRQb3J0ID0gdGFyZ2V0UG9ydDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAppbmRleCA3OWI3Y2E0YjJkMTMuLjcwYWE0NGYwYmU4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5j
cHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBIVFRQUmVxdWVzdEhhbmRsZXI6OmRpZFJlY2VpdmUoUmVtb3Rl
SW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQKICAgICAgICAgSFRUUFJlcXVl
c3RIYW5kbGVyOjpSZXNwb25zZSByZXNwb25zZSB7CiAgICAgICAgICAgICA0MDAsCiAgICAgICAg
ICAgICAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKLSAgICAgICAgICAgICI8aDE+QmFkIGNs
aWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiLAorICAgICAgICAgICAgIjxoMT5CYWQgY2xp
ZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCJfcywKICAgICAgICAgfTsKICAgICAgICAgc2Vu
ZFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCAzYjZmZjhhZjIwNmEuLjU3ZGJhMDNlMWUz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysr
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTI2OCw3ICsyNjgs
NyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJ
bWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weUJ1
ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAg
Ly8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAg
ICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWls
dXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2
b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNv
cHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVU
b0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdl
bmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5n
ZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAg
bV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJf
cyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIENv
bW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4
dHVyZSYgc291cmNlLCBjbwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1
cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0
ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJh
dGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZTE4MDgyZTVk
NTI4Li4zNWZhYmVlNWE0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTI1MCw5ICsyNTAsOSBA
QCBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclNTTFByb3RvY29sKFNTTFByb3RvY29sIHByb3RvY29s
KQogICAgIGNhc2Uga1RMU1Byb3RvY29sMTM6CiAgICAgICAgIHJldHVybiAiVExTIDEuMyJfczsK
ICAgICBjYXNlIGtTU0xQcm90b2NvbEFsbDoKLSAgICAgICAgcmV0dXJuICJBbGwiOworICAgICAg
ICByZXR1cm4gIkFsbCJfczsKICAgICBjYXNlIGtTU0xQcm90b2NvbFVua25vd246Ci0gICAgICAg
IHJldHVybiAiVW5rbm93biI7CisgICAgICAgIHJldHVybiAiVW5rbm93biJfczsKICAgICBjYXNl
IGtUTFNQcm90b2NvbE1heFN1cHBvcnRlZDoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggYTliZWM1ODcz
ZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwyNSArNTQsMjIgQEAgc3RhdGlj
IFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmplY3QoV0tSZW1vdGVPYmpl
Y3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJlLCBjb25zdCBTdHJpbmcmIGxv
Y2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqd2lyZSwg
TlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3aXJlKQorICAgIGlmIChbbG9j
YWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAg
IGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxv
Y2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsKLQotICAgICAgICBpZiAo
bG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWdu
ZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAgICAgIGlmIChzdHJjaHIoIkJj
IiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10odW5pY2hhciBjKSAtPiB1bmlj
aGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5n
ZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6IGM7CisgICAgfTsKKyAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBj
aGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRl
eDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3RhdGljIE5TSW52b2NhdGlvbiAq
ZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIpCiAgICAgaWYg
KCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5h
cmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9jYXRpb24gaGFkIG5vIHR5cGUg
c2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9kU2lnbmF0dXJlID0gdHlwZVNp
Z25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtp
bnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKLSAgICBp
ZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUocmVtb3RlTWV0aG9kU2ln
bmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9k
U2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZzsKKyAg
ICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUodHlwZVNpZ25hdHVy
ZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkxvY2FsIGFuZCByZW1v
dGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlIGZvciBtZXRob2QgXCIlc1wi
Iiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAiKG5vIHNlbGVjdG9yKSJdOwog
CiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDlj
MGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcg
QEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkK
ICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0KIAotc3RhdGljIFN0cmluZyBy
ZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJ
bnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkK
IHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRob2Q6CiAgICAgY29uc3QgY2hh
ciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1ldGhvZFR5cGVFbmNvZGluZyhw
cm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3LDEyICsxOTcsMTIgQEAgc3Rh
dGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNl
bGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRob2RUeXBlRW5jb2RpbmcpOwog
ICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUgKnRhcmdldE1ldGhvZFNpZ25h
dHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5
cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNpZ25hdHVyZSk7CiAgICAgaWYg
KCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJl
Rm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0y
NDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVt
b3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtO
U01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tT
aWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0gICAgICAgIFN0cmluZyBleHBl
Y3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3Rv
Y29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAgIE5TU3RyaW5nICp3aXJlQmxv
Y2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpy
ZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOworICAg
ICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1
cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCi0gICAg
ICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICgh
ZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0
aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiBjb3VsZCBub3Qg
ZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6
Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDog
RmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJXMgIT0gJXMiLCB3aXJl
QmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRv
IHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0gJUAiLCB3aXJlQmxvY2tTaWdu
YXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI5OCw3ICsyOTgs
NyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52
b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9OwogCiAgICAgICAgIFJlZlB0
cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6
OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtl
U3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2Vy
XShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9f
TlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dpcmVCbG9ja1NpZ25hdHVyZSBV
VEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNo
ZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAgICAgICAgICAgYXV0byBlbmNv
ZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBhbGxvY10gaW5pdF0pOwogICAg
ICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRpb24gZm9yS2V5Omludm9jYXRp
b25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
YWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXggNmIwNTEzNjYyMGVjLi5iYzFlMWM5ZTNj
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2lu
Z1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTQxLDggKzQxLDggQEAgc3RhdGljIFN0cmluZyBt
YWx3YXJlRGV0YWlsc0Jhc2UoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIHJl
dHVybiByZXN1bHQubWFsd2FyZURldGFpbHNCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAo
W3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAg
ICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNh
ZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL2dvb2dsZS5jb20vc2FmZWJyb3dzaW5nL2RpYWdu
b3N0aWM/dHBsPXNhZmFyaSI7CisgICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFx
LmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiX3M7CisgICAgcmV0dXJuICJodHRwczovL2dvb2ds
ZS5jb20vc2FmZWJyb3dzaW5nL2RpYWdub3N0aWM/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQog
CkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBTdHJpbmcgcmVwb3J0QW5FcnJvckJhc2UoU1NCU2Vy
dmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIHJldHVybiByZXN1bHQucmVwb3J0QW5FcnJv
ckJhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxU
b1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3
LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0
dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFy
aSI7CisgICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5o
dG1sP3RwbD1zYWZhcmkiX3M7CisgICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3Nh
ZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRy
b2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNWU2Njc4ZmU3M2U1Li41ZjVlMmQ0NTJjNjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgU3lzdGVt
UHJldmlld0NvbnRyb2xsZXI6OmZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3
QWN0aW9uKCkKIHsKLSAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5
c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVkIik7Cisg
ICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5m
bywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCJfcyk7CiB9CiAKIHZvaWQgU3lz
dGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3QWN0aW9uV2l0aFRhcmdl
dEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVudElELCBOU1N0cmluZyogZG9jdW1lbnRJRCwgdWlu
dDY0X3QgcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmlu
ZGV4IDVjYWU4MTlmZDI0NC4uZmQ3MTRhMzA1OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQ
ZXJzCiAgICAgICAgIHNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpKTsKICNlbmRpZgogI2lmIFBM
QVRGT1JNKElPUykKLSAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Vi
a2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKTsKKyAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VO
YW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiX3MpOwogI2VuZGlm
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA3Mjk0OTQxY2FhMmIuLmZiZTAyZWM4ZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTEsNyArMzg1MSw3IEBAIHZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dz
ZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0s
IEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZy
YW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlv
bkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9j
dW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1
bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFw
cCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9y
aW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsK
ICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlw
dDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFp
biIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYy
ZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJh
dGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29t
bWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJL
ZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAg
InoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIs
Ci0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3Ms
ICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVC
b2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAg
ICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIi
X3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAg
ICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJf
cywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJs
aW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAg
QCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywK
KyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2Vy
QWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAg
aWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYm
IG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3Rh
bmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAg
ICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFf
MyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4MDA0
ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9z
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxf
U0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5
IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkg
YW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZf
NjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5h
cHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5n
SWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQog
ICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBD
b2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Lm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hl
cwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8g
bWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBh
cnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7
ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJl
bmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0Lmdl
dCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3Vt
ZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHls
ZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAK
IGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25G
b3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRl
dGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmlu
ZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAo
dm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNT
dHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0
T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3
YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRN
TERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUg
cHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2lu
Z0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dy
YXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBo
Rm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRp
bmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAg
ICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNl
KTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVj
OC4uM2JiYTMxZTM5ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CkBAIC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKElTdHJlYW0qIGRh
dGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJgogICAgICwgbV9mcmFt
ZU5hbWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
UmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIl9zKTsKIH0KIAog
V2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKaW5k
ZXggYjhmZTMwN2NiODZiLi5kZjA3ODFmNDEyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBXZWJTY3JpcHRPYmpl
Y3Q6OldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogV2ViU2NyaXB0T2JqZWN0Ojp+V2ViU2Ny
aXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKaW5kZXggMjY4MTAxYTZjMGYw
Li43ZWY4YTQ1MzQ2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3Js
ZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIFdlYlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRX
b3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxkKQogICAgIGFsbFdvcmxkcygpLmFk
ZChtX3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlw
dFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3Js
ZCgpCiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0KCkpOwogCiAgICAgLS1nQ2xh
c3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAK
IFdlYlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRXb3JsZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIz
ZjZiLi5lZWYxNjQzYjYxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1
cml0eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBXZWJTZWN1cml0eU9yaWdpbjo6V2Vi
U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogICAgIDogbV9z
ZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogV2ViU2VjdXJpdHlP
cmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdpbiJfcyk7CiB9CiAKIC8vIElVbmtu
b3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Vy
aWFsaXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgwYTJmY2EyOS4uN2YxMWRmNWZmZTE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCkBA
IC0zMiwxMyArMzIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJTZXJpYWxpemVk
SlNWYWx1ZTo6V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgICsrZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBXZWJT
ZXJpYWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkKIHsKICAgICAtLWdDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFs
dWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVl
Il9zKTsKIH0KIAogQ09NUHRyPFdlYlNlcmlhbGl6ZWRKU1ZhbHVlPiBXZWJTZXJpYWxpemVkSlNW
YWx1ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRS
ZW5kZXJlci5jcHAKaW5kZXggNjIwN2I1NmE3ZjY3Li4wNDUzNWYzZjcyMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBA
IFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJU
ZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0KIAogV2ViVGV4dFJlbmRlcmVy
Ojp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBIUkVTVUxUIFdlYlRleHRSZW5k
ZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQq
KiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKaW5kZXggNTk3ODhjNGY1ZTI0Li40MGI3YjY2
ZmE3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3Qg
QXV0aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIoc2VuZGVyKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6fldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0YW5jZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ci5jcHAKaW5kZXggMzVhODQ1ZWQ2OTNjLi41MDk5YmEwYWYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoUmVmUHRy
PAogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp+
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4mJiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFs
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCmluZGV4
IGU3NTk0NmIyODQyNS4uYTUzMWQxMDY5OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVSTENyZWRlbnRp
YWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICA6
IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbDo6
fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbCog
V2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKaW5kZXggMTllZDk2ZjgyMTBkLi4z
MWIwOWFjNGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFBy
b3RlY3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJv
dGVjdGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVSTFByb3RlY3Rpb25TcGFj
ZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwCiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rpb25T
cGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNl
Il9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjp+V2ViVVJMUHJvdGVjdGlvblNwYWNl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2UqIFdl
YlVSTFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE1YjIzZGJmYTU0OS4uNjEyMjk2Y2I1NTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCkBAIC0yMTUs
MjAgKzIxNSwyMCBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsaXplZFNob3J0RGVzY3JpcHRpb25Gb3JT
dGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogV2ViVVJMUmVzcG9uc2U6OldlYlVSTFJlc3BvbnNl
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNl
Il9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2U6On5XZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9
CiAKIFdlYlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNwb25zZTo6Y3JlYXRlSW5zdGFuY2UoKQogewog
ICAgIFdlYlVSTFJlc3BvbnNlKiBpbnN0YW5jZSA9IG5ldyBXZWJVUkxSZXNwb25zZSgpOwogICAg
IC8vIGZha2UgYW4gaHR0cCByZXNwb25zZSAtIHNvIGl0IGhhcyB0aGUgSVdlYkhUVFBVUkxSZXNw
b25zZSBpbnRlcmZhY2UKLSAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9u
c2UoV1RGOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOworICAg
IGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCgiaHR0cDov
LyJfcyksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwog
ICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDQ4MTIzODQ3MTNjOC4uZWRmMzM1
ODZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OldlYlVzZXJDb250ZW50VVJM
UGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICAtLWdDbGFzc0NvdW50
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0Li5lNTVhMjQyZGNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgV2ViVmlldzo6V2ViVmlldygpCiAK
ICAgICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmll
dyJfcyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3KCkKQEAgLTQ2OSw3ICs0NjksNyBAQCBXZWJW
aWV3Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNy
ZWF0ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5OTUsMTEgQEAgYm9vbCBXZWJWaWV3OjpleGVj
Q29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykKICAgICBGcmFtZSYgZnJh
bWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAg
IHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2FzZSBTZWxlY3RBbGw6Ci0gICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFs
bCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVuZG86Ci0gICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIl9zKS5leGVjdXRlKCk7CiAgICAgICAg
IGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJS
ZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoIlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAt
MjE0Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVu
dChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVz
c0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRv
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlF
dmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1F
dmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3Vn
aCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0
IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBA
IC00NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHkoX0luX29wdF8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5Il9zKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3MzQsNyArNDczNCw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5l
eGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpwYXN0ZShfSW5f
b3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5k
KCJQYXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzUyLDcg
KzQ3NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHlVUkwoX0luXyBCU1RSIHVybCkKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29weVVSTChNYXJzaGFs
bGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGlu
Z0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6ZGVsZXRlXyhf
SW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIikuZXhlY3V0ZSgpOworICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29t
bWFuZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKaW5kZXggMDQ1
MThmYWQxYTc2Li4yZTkzMWUwOGU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJXb3JrZXJzUHJpdmF0ZS5jcHAKQEAgLTkwLDExICs5MCwxMSBAQCBXZWJXb3JrZXJzUHJpdmF0
ZSogV2ViV29ya2Vyc1ByaXZhdGU6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYldvcmtlcnNQcml2YXRl
OjpXZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CiAKIFdlYldvcmtlcnNQcml2YXRlOjp+
V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5
Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NU
aHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEo
MXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFt
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEo
M3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VS
VF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAg
QVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Ny
b3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkg
ZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1
bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElM
RVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lS
ZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZh
Y3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5mYTkzZGM0OGQxOGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lS
ZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFw
cEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNX
UkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VS
Q0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkg
ewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VS
Q0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhl
dGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VU
eXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hh
cioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqcyA9IEFTQ0lJTGl0ZXJhbDo6bnVs
bCgpOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwogCiAgICAgc3dp
dGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6U3ludGhldGljOgot
ICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7
IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQo
XCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkp
KTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJl
c3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6
Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAg
ICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiX3M7CiAgICAgICAgIGV4
cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
LyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50
LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAi
L2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwv
c2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxz
Y3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAg
fSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTM2OSwxMyArMzY5LDEz
IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2
aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gn
LCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkg
fSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20g
c2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAg
ICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2
ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3Ms
IHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0s
CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAog
ICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC00NTIsMTIg
KzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0Fw
cEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsg
ZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChc
InN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkp
OyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKIAogICAgIHsKICAgICAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1h
aW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICAgICAgeyAi
LyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sg
IkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwK
ICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBu
dWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBv
cnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElz
QXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0
ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgICAgIHsgIi8iX3MsIHsg
bWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0KICAgICAgICAg
fSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0
ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwogCiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4w
LjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5pdGlhdGVkKQogCiAj
aWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZhdWx0
VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXNE
ZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNn
KQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsK
IH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgK
IHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkgPT4gewogICAg
IGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdl
KCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBhc3luYyBmdW5jdGlvbiBxdWVy
eUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVkJyk7CiB9CiAKLSlT
V1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRN
ZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVlKQogICAgIHdlYlZp
ZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwg
eyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRl
c0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXNEZWZh
dWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4gYXBw
IGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5kZXggY2RiOTEwNGFl
YjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtMzE3LDcgKzMxNyw3
IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZpcmVPcmllbnRhdGlvbkV2ZW50c1JpZ2h0QXdh
eUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicmVjZWl2
ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKIH0KIAotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1z
ZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0aW9uIHJlcXVlc3RQZXJtaXNzaW9uKCkgewog
fQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0UiOworKVRFU1RSRVNPVVJDRSJfczsKIAogVEVT
VChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lvblNlY3VyZUNvbnRleHRDaGVjaykKIHsKICAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1h
aW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluQnl0ZXMgfSB9CiAgICAgfSk7CiAg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUg
PSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtMzk1LDIzICszOTUs
MjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3REZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24KIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBt
YWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT4KIDxpZnJhbWUgc3JjPSdo
dHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBhbGxvdz0nYWNjZWxlcm9tZXRlcjpodHRwczov
LzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRwczovLzEyNy4wLjAuMTo5MDkxO21hZ25ldG9t
ZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48L2lmcmFtZT4KIDwvYm9keT48L2h0bWw+Ci0p
RE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygK
KylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZnJhbWVUZXh0ID0gUiJET0NE
T0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7CispRE9DRE9D
RE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uSW5JRnJh
bWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAg
eyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluRnJhbWVU
ZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJhbWUiLCB7IGZyYW1lVGV4dCB9IH0sCisgICAg
ICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7CiAK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDg1ZjdkODlkYmQ4
MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMzEsMTQgKzEz
MSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSIpOworICAgIFdlYkNvcmU6
OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2Vi
S2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZh
Y3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAg
ICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlk
ZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBC
cm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiX3Mp
OwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVk
VXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1LDcgQEAgLSAodm9pZCl1c2VyQ29udGVu
dENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9s
bGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8
c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODUwLDkgKzg1MCw5IEBAIG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewog
fQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMg
Y29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlw
dD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwxNSArODc1LDE1IEBAIG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewogfQog
CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29u
c3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigi
bWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2Vy
dmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwogfSk7CiAKLSlTV1JFU09VUkNF
IjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5k
RG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBAIC04OTksOCArODk5LDggQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQog
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIs
IHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3Jp
cHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpbkJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtX
S1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107
CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERv
bWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIAogICAg
IC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVs
bHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VX
b3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiI7CisgICAgZXhw
ZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2
ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiJfczsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNlOwpA
QCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNl
cnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9
IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0
bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxv
d1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTY3LDcgKzk2Nyw3IEBAIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNlOwogCi0g
ICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiOworICAgIGV4cGVj
dGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIl9zOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYi4uNWJjZWE4MTA5M2NmIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgzMTcsOCArODMxNyw4IEBAIFRFU1QoUHJvY2Vz
c1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAotICAgICAgICB7ICIvZGVzdGluYXRpb24u
aHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1Pcmln
aW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAg
IHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0
aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIi
X3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRv
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24o
KTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJ
bkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiL3NvdXJj
ZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9v
Il9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgSFRU
UFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAi
Q29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xp
Y3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRp
b24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJD
cm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJf
cyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOwogCiAgICAgYXV0byBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzNjOGRiYzViNzFlLi5m
ZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTI0
MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRGVsZXRlT25lQ3Jl
ZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUmVjb3ZlckFmdGVyQXV0aE5Q
cm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewot
ICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgIkZPTyJf
cyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1v
ZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpp
bmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZhYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KQEAgLTE2OSw3ICsxNjksNyBAQCBAZW5k
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xh
c3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250
ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXpl
IHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRl
bGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0g
eyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChkZWZhdWx0Q29udGVudE1vZGUpCkBAIC0x
ODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb24KIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWlu
UHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVs
dENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVN
YWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0
cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRD
b250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVN
YWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZTxWaWV3Q2xh
c3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LCBzaXpl
KTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb250ZW50TW9kZU5h
dmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzcyLDcgKzM3Miw3IEBAIFRFU1Qo
UHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVkQ29udGVudE1vZGVBdFZhcmlvdXNWaWV3
V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZh
Y2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEki
IH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVz
dFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9k
ZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFtbd2ViVmlldyBu
YXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1h
Y2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBU
RVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFn
ZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNldCB0aGUgYXBwbGljYXRp
b24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0
OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3As
IHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihX
S0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCJfcyB9KTsKICAgICAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRs
ZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRv
clVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJp
bmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIv
bWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKaW5kZXggMTIw
NGNiNTI4YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5j
cHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQog
ICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgdWludDhfdD4gZXhhbXBsZUNvbXBhY3RQ
b2ludGVyVHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44Qml0U3RyaW5nLCAyNTUgfTsKICAgICBDb21w
YWN0UG9pbnRlclR1cGxlPFN0cmluZyosIGJvb2w+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxl
U2ltcGxlQm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRydWUgfTsKICAgICAKLSAgICBVUkwgYVVSTCh7
IH0sICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIpOworICAgIFVSTCBhVVJMKCJodHRwczovL3d3
dy5leGFtcGxlLmNvbSJfcyk7CiAKICAgICBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJz
KCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="484782"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456478</attachid>
            <date>2022-04-02 15:31:53 -0700</date>
            <delta_ts>2022-04-02 15:42:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>197304</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDRiNmQwZTViNDQ0Ny4uMDE4MjhlZjcyM2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdHJ1Y3QgTG9nQXJndW1l
bnQ8VVJMPiB7CiAgICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGlt
dW1VUkxMZW5ndGhGb3JMb2dnaW5nKSArICIuLi4iOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKHVybCk7Ci0gICAgICAgIHJldHVybiAiW3VybF0iOworICAgICAgICByZXR1cm4gIlt1cmxd
Il9zOwogI2VuZGlmCiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
T2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5o
CmluZGV4IDQ1N2I1YTExYWQ4Yy4uM2QyN2U4NjY0OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zm
c2NyZWVuQ2FudmFzLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBPZmZzY3JlZW5DYW52YXMg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxPZmZzY3JlZW5DYW52YXM+LCBwdWJsaWMgQ2FudmFz
QgogcHVibGljOgogCiAgICAgc3RydWN0IEltYWdlRW5jb2RlT3B0aW9ucyB7Ci0gICAgICAgIFN0
cmluZyB0eXBlID0gImltYWdlL3BuZyI7CisgICAgICAgIFN0cmluZyB0eXBlID0gImltYWdlL3Bu
ZyJfczsKICAgICAgICAgZG91YmxlIHF1YWxpdHkgPSAxLjA7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQuLmQ0ODQx
ZGYzZGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKQEAg
LTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBhZ2VPdmVy
bGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9hdFJlY3Qg
cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9yU2V0dGlu
Zyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVyYWwp
OwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBhY3RpdmVS
ZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtleTsKLSAg
ICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFTQ0lJTGl0
ZXJhbCBrZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxpdGVyYWwg
bmFtZSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUgeyBmYWxz
ZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5ncyB7
CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6
cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJvb2wg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJiBu
YW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhBU0NJ
SUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRp
bmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQyNiw3
IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChk
aXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7CisgICAg
aWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5zZXRT
dHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6
OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAog
ICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8ICF2
YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVG
b3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRhID0g
WyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdy
YWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNlTG9j
YXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQgSW50
ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBo
YXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewog
ICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFk
aWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJl
bXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChyZWdp
b24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikp
IHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAm
JiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQt
PmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgw
LjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBoYXNM
aWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMDUp
IDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAgICAg
ICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0dGlu
ZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAg
ICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0
ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRk
Q29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVyYWN0
aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQg
ZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNl
dHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5n
KCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAgICBp
ZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpy
ZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91
bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZv
clNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVu
dCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giX3Mp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAg
ICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXpl
IikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRl
ZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9y
U2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5z
aXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgICAg
ICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShy
YWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAgICAg
ICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6Ymxh
Y2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9w
R3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRo
QWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9u
T3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQs
CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOwot
ICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5n
KCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRp
ZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAgICAg
IGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAgICAg
ICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNl
dHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUo
KS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxvYXQg
cmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRo
LmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhhc0xp
Z2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAgICBj
b250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5IEBA
IGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBv
dmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vy
c29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAgaWYg
KCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0gbm9u
ZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAg
ZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JUb1Nl
dCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0
ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwpA
QCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2
ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3VzZUxv
Y2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRlczsK
ICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9
PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVl
Rm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZl
bnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJo
b3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXggNDc3
NGNlMDhhNWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2Nv
YS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0dGluZ3NC
YXNlOjpwbGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNldHRpbmdz
QmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0YW5kYXJk
Rm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7Ci0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iLCBV
U0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHko
IkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVkRm9udEZh
bWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRGYW1pbHko
IlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhl
bHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBp
bmdGYW5nIFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7CisgICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVNDUklQVF9L
QVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBT
RCBHb3RoaWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250RmFtaWx5
KCJDb3VyaWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFtaWx5KCJU
aW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1pbHkoIkhl
bHZldGljYSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0
ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1
bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9
IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1l
Rm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNl
ckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZv
clVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCmluZGV4IGU0NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVk
aW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lP
Q2FsbGJhY2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVj
dF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAg
ICAgICAiYnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFt
ZXMiLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAg
IEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmso
Im11c2ljIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0
Zm9ybUF1ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVk
aW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVk
IHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMgY29u
c3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRpb24g
PSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiAv
LyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3csIHBv
cnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQor
dm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxp
dGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBTaW5j
ZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVkLCB3
ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUgY29u
dGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZDlk
MzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgK
QEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVu
Y2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBj
b3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVu
R0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2ls
KGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxp
ZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhl
aWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwg
R0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBH
Q0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2b2lk
IHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNmb3Jt
M0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1zdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dDb2xvclJl
ZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9z
c3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgpKQpAQCAtNzYyLDEwICs3
NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBj
b25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAKICAgICAvLyBQcmludCBi
YWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQg
KyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVy
LT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEs
ICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+
cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJDb2xvciBpZiBuZWVkZWQK
LSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciIsIENBQ0ZM
YXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENv
bG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywgQ0FDRkxheWVyR2V0Qm9y
ZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbWFza3NU
b0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBsYXll
ci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKaW5kZXgg
YjkzYmMzNGNjNGQ0Li4xZjUxNjkxZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5j
cHAKQEAgLTM0MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFtZVN0cmlu
Z0Zyb21GYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBmYW1pbHk7
CiAKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRl
eDo6U3RhbmRhcmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWls
eU5hbWVzSW5kZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzZXJpZiI7CisgICAg
ICAgIHJldHVybiAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEt
PmF0KEZhbWlseU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAi
c2Fucy1zZXJpZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsKICAgICBpZiAoZmFt
aWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6TW9ub3NwYWNlRmFt
aWx5KSkKLSAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICByZXR1cm4gIm1vbm9z
cGFjZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFt
ZXNJbmRleDo6Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7CisgICAg
ICAgIHJldHVybiAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAgICAgIHJldHVybiAi
ZmFudGFzeSI7CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRl
eDo6U3lzdGVtVWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9udCIpCiAg
ICAgICAgIHJldHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlmCiAKLSAgICByZXR1
cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBGQ19WRVJTSU9OIDwg
MjEzOTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmlu
ZGV4IDFkNmFlMmUxMmU3ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lm
IEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMo
Z3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNv
bmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVj
ID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVh
ZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIy
NTQxLi4xMjA3YzM1YTExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBAIC02MTMs
NyArNjEzLDcgQEAgc3RhdGljIGdib29sZWFuIHBhcnNlR3N0U3RydWN0dXJlVmFsdWUoR1F1YXJr
IGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIHsKICAgICBpZiAoYXV0byBqc29u
VmFsdWUgPSBnc3RTdHJ1Y3R1cmVWYWx1ZVRvSlNPTih2YWx1ZSkpIHsKICAgICAgICAgYXV0byog
b2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxKU09OOjpPYmplY3QqPih1c2VyRGF0YSk7Ci0gICAg
ICAgIG9iamVjdC0+c2V0VmFsdWUoZ19xdWFya190b19zdHJpbmcoZmllbGRJZCksIGpzb25WYWx1
ZS0+cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoU3RyaW5nIHsg
Z19xdWFya190b19zdHJpbmcoZmllbGRJZCkgfSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJS
ZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDJkOWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMTc2LDcgKzE3
Niw3IEBAIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1bHQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENoZWNrSGFyZHdh
cmVDbGFzc2lmaWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsKICAgICAgICAg
Zm9yIChHTGlzdCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0b3JpZXMg
PSBnX2xpc3RfbmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBmYWN0b3J5ID0g
cmVpbnRlcnByZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0YSk7Ci0g
ICAgICAgICAgICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRh
ZGF0YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAgICAgICAgICBT
dHJpbmcgbWV0YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShmYWN0b3J5
LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1dG8gY29tcG9u
ZW50cyA9IG1ldGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29tcG9uZW50cy5j
b250YWlucygiSGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdIYXJkd2FyZSA9
IHRydWU7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICB9
CiAKICAgICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxlbWVudEZv
ck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2aWRlby94
LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpOwot
ICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENv
bmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29kZXJBdmFpbGFi
bGUpIHsKKyAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBv
cnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2MURlY29k
ZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmco
ImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAg
bV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVyQXZhaWxh
YmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CkBA
IC00MDksNyArNDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxp
emVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAgICAgbV9kZWNv
ZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9CiAKLSAg
ICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3Vy
YXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9
IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlv
L21wNCJfcyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAgICBtX2RlY29k
ZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAgICAgICAgbV9k
ZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggM2MwZDhm
NzNjNDJiLi43ZWJiYTQzMjJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRl
IG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0
ZUF1ZGlvU2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVv
UGxheWVyKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+
aXNWaWRlb1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQq
IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0Vf
QVNTRVJUKGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RN
ZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdl
LCAmZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVy
cm9yICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVz
c2FnZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsK
IAogICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAg
ICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NU
X1NUUkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBt
ZXNzYWdlKQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVy
ZSwgImh0dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVs
aW5lKCksICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVj
dHVyZSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9n
ZXRfc3RyaW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7
IHVyaSB9OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAg
ICAgICAgICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsK
IAogICAgICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRl
bnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxw
dHI7CiAgICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUs
ICZ0aXRsZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250
ZW50KHRpdGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4
KHRpdGxlKSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNv
bmZpZ3VyZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rf
c2V0KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwg
bnVsbHB0cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVk
IGZpbGUgZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRl
bXBsYXRlLmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBu
ZXdEb3dubG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0
cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07
CiAgICAgcHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNl
KCJYWFhYWFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1l
ZGlhUGxheWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdf
b2JqZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9u
IiwgJmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFko
IUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAo
VU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9h
ZEZpbGUuZ2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBt
ZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAg
Ly8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFu
ZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAg
ICAgICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgp
IDogbV91cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24p
OworICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9u
IH0pOwogCiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAg
ICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJp
blVybFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxh
eWJpblVybFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBs
YXliaW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1Vy
bCkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBh
bHJlYWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwm
IHVybCkKIAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAg
IGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxh
eWVyIjsKKyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0
IGNoYXIqIHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygi
bWVkaWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3
IEBAIEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZy
b21Qcm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEg
PSBudWxscHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQu
Z2V0KCksICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAg
IGluaXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAg
aW5pdERhdGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwog
ICAgICAgICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5V
TShldmVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChH
c3RFdmVudCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVs
bHB0cjsKICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRf
cGFyc2VfcHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBu
dWxscHRyKTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0
ZW1VVUlELCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsg
U3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3
Li4zMmVkM2FlOGIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKQEAgLTQ3MSw3ICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJvY2Vzc1Rh
YmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRl
bnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CisgICAgU3RyaW5nIGVuZ2lu
ZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciJfczsgfQog
ICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggZGNhMmMyMWZkNjMwLi4wM2VkYWM4
YzhlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAK
QEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExh
bmd1YWdlQ29kZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAgIFN0cmlu
ZyBsYW5ndWFnZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwg
bGFuZ3VhZ2UpKSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29k
ZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1YWdlID0g
U3RyaW5nIHsgZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRm
OCgpLmRhdGEoKSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sgJWQncyBs
YW5ndWFnZSBjb2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwog
ICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVlID0gbGFu
Z3VhZ2U7CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
OjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMKICAgICBH
VW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9z
dHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAgICBHU1Rf
REVCVUcoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdWYWx1ZS5n
ZXQoKSk7Ci0gICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZhbHVlID0g
U3RyaW5nVHlwZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRh
dGFHU3RyZWFtZXIuY3BwCmluZGV4IDg5NDc1NDA1YzgwOS4uZDdiZTgwNTE4ZWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFt
ZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcg
KzEyMyw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0
RWxlbWVudCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBw
cm9iZVR5cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNl
ckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRCdWZm
ZXIsIG1ldGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5GT19C
VUZGRVIoaW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9IG1v
ZGlmaWVkQnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxf
Z2V0X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1ldGEtPnBy
aXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
dXNlckRhdGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAg
ICB9LCBnc3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM1LDcg
KzEzNSw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0
RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQogICAgICAgICAgICAgcmV0dXJu
IEdTVF9QQURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSB7
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9OwogICAgICAgICBhdXRvIHZhbHVl
ID0gbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVtZW50TmFtZSk7CiAgICAgICAg
IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6bWFrZV9w
YWlyKHZhbHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCkpKTsKICAgICAgICAgcmV0
dXJuIEdTVF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUuLmQ2NDA0YzEyMGNhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNTUsNyArMTU1
LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlv
bkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fw
cy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBj
b25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAg
ICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNzU0YjNmZjQ4MzkwLi5kMGFkNjcyZDcxMDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01OTYsNyAr
NTk2LDcgQEAgc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoR1F1YXJrIGZp
ZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIAogICAgIEdTVF9ERUJVRygiQXBwZW5k
aW5nIGV4dHJhIGhlYWRlcjogXCIlczogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250ZW50Lmdl
dCgpKTsKICAgICBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJj
ZVJlcXVlc3QqPih1c2VyRGF0YSk7Ci0gICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKGZp
ZWxkTmFtZSwgZmllbGRDb250ZW50LmdldCgpKTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQSGVhZGVy
RmllbGQoU3RyaW5nIHsgZmllbGROYW1lIH0sIFN0cmluZyB7IGZpZWxkQ29udGVudC5nZXQoKSB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2Nr
ZXI8V2ViS2l0V2ViCiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uICE9IG1l
bWJlcnMtPnN0b3BQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBvc3Rp
bmcgdGFzayB0byByZXF1ZXN0IFIldSAlcyByZXF1ZXN0ZWRQb3NpdGlvbj0lIiBHX0dVSU5UNjRf
Rk9STUFUICIgc3RvcFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbWJlcnMtPnJlcXVl
c3ROdW1iZXIsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSwgbWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24sIG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7Ci0gICAgVVJMIHVybCB7IHByaXYtPm9yaWdp
bmFsVVJJLmRhdGEoKSB9OworICAgIFVSTCB1cmwgeyBTdHJpbmcgeyBwcml2LT5vcmlnaW5hbFVS
SS5kYXRhKCkgfSB9OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAgICBy
ZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBzdGF0aWMg
dm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4
TG9ja2VyPFdlYktpdFdlYgogICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1lbWJlcnMtPnJl
ZmVycmVyKTsKIAogICAgIGlmIChwcml2LT5odHRwTWV0aG9kLmdldCgpKQotICAgICAgICByZXF1
ZXN0LnNldEhUVFBNZXRob2QocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSk7CisgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZChTdHJpbmcgeyBwcml2LT5odHRwTWV0aG9kLmdldCgpIH0pOwogCiAj
aWYgVVNFKFNPVVApCiAgICAgLy8gQnkgZGVmYXVsdCwgSFRUUCBBY2NlcHQtRW5jb2RpbmcgaXMg
ZGlzYWJsZWQgaGVyZSBhcyB3ZSBkb24ndApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2Nr
ZXI8V2ViS2l0V2ViCiAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2FudCB0
byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KICAgICBpZiAoIWdfYXNjaWlfc3Ry
Y2FzZWNtcCgibW92aWVzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkKICAg
ICAgICAgfHwgIWdfYXNjaWlfc3RyY2FzZWNtcCgidHJhaWxlcnMuYXBwbGUuY29tIiwgdXJsLmhv
c3QoKS51dGY4KCkuZGF0YSgpKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KCJR
dWlja3RpbWUvNy42LjYiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KCJRdWlj
a3RpbWUvNy42LjYiX3MpOwogCiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uIHx8
IG1lbWJlcnMtPnN0b3BQb3NpdGlvbiAhPSBVSU5UNjRfTUFYKSB7CiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gZm9ybWF0ZWRSYW5nZTsKQEAgLTY4MSwxOSArNjgxLDE5IEBAIHN0YXRpYyB2b2lk
IHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhMb2Nr
ZXI8V2ViS2l0V2ViCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvcm1hdGVkUmFuZ2UucmVz
ZXQoZ19zdHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgbWVtYmVy
cy0+cmVxdWVzdGVkUG9zaXRpb24pKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJS
YW5nZSByZXF1ZXN0OiAlcyIsIGZvcm1hdGVkUmFuZ2UuZ2V0KCkpOwotICAgICAgICByZXF1ZXN0
LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFuZ2UsIGZvcm1hdGVkUmFuZ2Uu
Z2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6UmFuZ2UsIFN0cmluZyB7IGZvcm1hdGVkUmFuZ2UuZ2V0KCkgfSk7CiAgICAgfQogICAgIEFT
U0VSVChtZW1iZXJzLT5yZWFkUG9zaXRpb24gPT0gbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQZXJzaXN0ZW50IGNvbm5lY3Rpb24gc3Vw
cG9ydCAlcyIsIHByaXYtPmtlZXBBbGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwogICAg
IGlmICghcHJpdi0+a2VlcEFsaXZlKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIik7CisgICAgICAgIHJlcXVlc3Qu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiX3Mp
OwogCiAgICAgaWYgKHByaXYtPmV4dHJhSGVhZGVycykKICAgICAgICAgZ3N0X3N0cnVjdHVyZV9m
b3JlYWNoKHByaXYtPmV4dHJhSGVhZGVycy5nZXQoKSwgd2ViS2l0V2ViU3JjUHJvY2Vzc0V4dHJh
SGVhZGVycywgJnJlcXVlc3QpOwogCiAgICAgLy8gV2UgYWx3YXlzIHJlcXVlc3QgSWNlY2FzdC9T
aG91dGNhc3QgbWV0YWRhdGEsIGp1c3QgaW4gY2FzZSAuLi4KLSAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRhdGEsICIxIik7CisgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSJfcyk7
CiAKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5zdXJlR1JlZihzcmMpLCByZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJdIHsKQEAg
LTg4MSw3ICs4ODEsNyBAQCBjb25zdCBnY2hhciogY29uc3QqIHdlYktpdFdlYlNyY0dldFByb3Rv
Y29scyhHVHlwZSkKIAogc3RhdGljIFVSTCBjb252ZXJ0UGxheWJpblVSSShjb25zdCBjaGFyKiB1
cmlTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIFVSTCB7IHVyaVN0cmluZyB9OworICAgIHJldHVybiBV
UkwgeyBTdHJpbmcgeyB1cmlTdHJpbmcgfSB9OwogfQogCiBzdGF0aWMgZ2NoYXIqIHdlYktpdFdl
YlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcAppbmRleCBmZTQ3OWQ2YmI1MjcuLjFhZjBlNTU0ZDgyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBl
bGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGQ6OnR1cGxlPEdS
ZWZQdHI8R3N0Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBlLCBGbG9hdFNpemU+IEFw
cGVuZFBpcGVsaQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBjYXBzTWVk
aWFUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNjYW5uZXIg
PSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigpOwotICAgIGlmICghZ3N0
UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
OjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5cGUpKSB7CisgICAgaWYg
KCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBvcmlnaW5hbE1lZGlhVHlw
ZSB9KSkgewogICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6SW52YWxpZDsKICAgICB9
IGVsc2UgaWYgKGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzLCBHU1RfVklERU9fQ0FQ
U19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6ZSA9IGdldFZpZGVvUmVz
b2x1dGlvbkZyb21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9vcihGbG9hdFNpemUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRS5jcHAKaW5kZXggODMxYzJiMmM2ZWZiLi4yY2VjNjg0NjZmZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKQEAg
LTEyNSw3ICsxMjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6bG9h
ZChjb25zdCBTdHJpbmcmKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRTo6
bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmLCBNZWRpYVNvdXJjZVByaXZh
dGVDbGllbnQqIG1lZGlhU291cmNlKQogewotICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJp
bmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIiA6IHVy
bC5zdHJpbmcoKSk7CisgICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFzb3Vy
Y2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iX3MgOiB1cmwuc3RyaW5nKCkp
OwogICAgIEdTVF9ERUJVRygiTG9hZGluZyAlcyIsIG1zZUJsb2JVUkkuYXNjaWkoKS5kYXRhKCkp
OwogICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMLmNwcAppbmRleCA3M2UyNDg0NWNiMzMuLjkxOTYzZDMyOTA5MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5jcHAKQEAgLTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAv
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAg
IC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpCi0g
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFt
ZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xf
QU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfaW5z
dGFuY2VkX2FycmF5cyIpIHsKLSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAgICAgJiYg
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIikg
fHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQi
KSk7CisgICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfaW5zdGFuY2VkX2FycmF5cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSk7CiAg
ICAgfQogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIpICYmICht
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIikg
fHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JH
QiIpKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX3RleHR1cmVfc1JHQiJfcykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1lID09ICJH
TF9FWFRfZnJhZ19kZXB0aCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAgIC8vIERl
c2t0b3AgR0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlmIChuYW1l
ID09ICJHTF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29sIEV4dGVu
c2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgLy8gSWYgR0xfQVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1cmVfZmxv
YXQgaXMgYXZhaWxhYmxlIHRoZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCwgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0X2xpbmVhciBhcyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU190
ZXh0dXJlX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiB8fCBu
YW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0Il9z
KSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0
Il9zKTsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5hbWUg
PT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShHVEspKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdmVy
dGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhf
YXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAgICAgfQog
CkBAIC0xNDcsMTQgKzE0NywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1T
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikKLSAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZl
cnMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
QVJCX2RyYXdfYnVmZmVycyJfcyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjMxLDcgKzIzMSw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNpb25zR0xP
cGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRpYyBjb25z
dCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QiKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFy
cmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICAg
ICByZXR1cm4gc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMwNDBjZWJk
YTlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3NCwx
MiArMTc0LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xzaGFk
ZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHNo
YWRlclR5cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJldHVy
biAiIjsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xPYmpl
Y3QsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9y
IHJlc3VsdCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogCiAg
ICAgaWYgKHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAg
ICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+
dmFsdWU7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29t
bW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAg
IH0KIAogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1Li5iOTEx
MTAyNTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjY0LDcgKzI2
NCw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQ
Uk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIikpOwog
ICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAgbV9zdXBw
b3J0c0FOR0xFaW5zdGFuY2VkQXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmIChtYWpv
clZlcnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9pbnN0YW5jZWRfYXJyYXlzIikgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZHJhd19pbnN0YW5jZWQiKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtYWpvclZlcnNp
b24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0
YW5jZWRfYXJyYXlzIl9zKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9kcmF3X2luc3RhbmNlZCJfcykpKSB7CiAgICAgICAgICAgICBtX2dsVmVydGV4QXR0cmliRGl2
aXNvckFOR0xFID0gOjpnbFZlcnRleEF0dHJpYkRpdmlzb3I7CiAgICAgICAgICAgICBtX2dsRHJh
d0FycmF5c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdBcnJheXNJbnN0YW5jZWQ7CiAgICAgICAg
ICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0VsZW1lbnRzSW5z
dGFuY2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXggY2FhYWI2
ZmM1OThiLi4wYTZhODhjZjFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmNwcApAQCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJu
IHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgYXV0
byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkg
ewotICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKSkgewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uU3RyaW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlmIChz
dXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7Cisg
ICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvblN0cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRy
dWUuCiAgICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTIuLmFmNzVlMGQw
OTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3ICs0MzMs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxp
YXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9u
b3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBs
ZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNp
bChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZh
bGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4
LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0g
Zm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5n
dGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwg
Ym9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGMzNWIyZjBmMTVkOS4uN2I1NGEwMWYzZTk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAtODYsNyAr
ODYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwo
IkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2ls
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogfQogCiBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQpAQCAtMTA4LDcg
KzEwOCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uJiBleHRl
bnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQgZGVwdGgg
YnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBpZiAoZXh0
ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSkKICAgICAg
ICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMOF9F
WFQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
ID0gR0xfREVQVEhfQ09NUE9ORU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
RVMuY3BwCmluZGV4IDgzYjliODZjNTMyNy4uM2FlNjJiZjZlZWIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAog
ICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVk
IGFuZCBkZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
YWxpZGF0ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVm
ZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0
c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBw
b3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRy
aWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RS
ZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwg
R0NHTGVudQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0
ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0
ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJH
TF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmli
dXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVk
X3JlbmRlcl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9
IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUu
LmM3YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBA
IC0zNCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBT
Q291bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewot
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
OworICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQ
UyIpIH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRz
KHNob3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJ
bnRlcnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAKQEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpy
ZXN1bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1h
dGlvblN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25T
dGFydGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgp
Lm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVl
c3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBz
dGF0aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1
bXBBZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8
TGF5ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9u
cyAmIExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAg
ICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9w
TGF5ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFt
LCAiYmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50
UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewot
ICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcg
YW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+
IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJv
YXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0LDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlzQ2xhc3Np
YygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0gIT0gVUlB
cHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5nIG9zTmFt
ZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkKIHsKICAg
ICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUoKSkKLSAg
ICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAgICByZXR1
cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMgU3RyaW5n
VmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQppbmRl
eCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQpA
QCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciog
cGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxh
eWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUp
Ci0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25N
b2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1wdHlTdHJp
bmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYwN2YzNjZiZjcyZi4uNGZhODJiYmRl
MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
MTYzLDcgKzE2Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgYXV0byBzZWxlY3Rl
ZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJlYW0pOwog
ICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgpOwogICAgIGlmICghbWltZVR5cGUp
Ci0gICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2aWRlby9t
cDQiIDogImF1ZGlvL21wNCI7CisgICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3Mudmlk
ZW9UcmFjayA/ICJ2aWRlby9tcDQiX3MgOiAiYXVkaW8vbXA0Il9zOwogCiAgICAgR1NUX0RFQlVH
KCJDcmVhdGluZyB2aWRlbyBwcm9maWxlIGZvciBtaW1lLXR5cGUgJXMiLCBtaW1lVHlwZS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgYXV0byBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVUeXBl
KTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmls
ZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgICAgICBp
ZiAoY29kZWNzLmNvbnRhaW5zKCJ2b3JiaXMiX3MpKQogICAgICAgICAgICAgYXVkaW9DYXBzTmFt
ZSA9ICJhdWRpby94LXZvcmJpcyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmNvbnRhaW5z
KCJvcHVzIl9zKSkKLSAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVzIjsK
KyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVzIl9zOwogICAgICAgICBl
bHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNvZGVjKSB7IHJldHVybiBjb2RlYy5zdGFy
dHNXaXRoKCJtcDRhIik7IH0pICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgYXVkaW9DYXBzTmFt
ZSA9ICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj00Il9zOwogICAgICAgICBlbHNlIGlmIChjb250
YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNTE2OTA0NWM3MDVm
Li4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAyLDE1IEBAIHZvaWQg
UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0cmluZ1JlZiBkb21h
aW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7CiAgICAgaWYgKGRv
bWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVycm9yRG9tYWluQ29j
b2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7CisgICAgICAgIG1f
ZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0g
a0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JE
b21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIl9zOwogICAgIGVs
c2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAgICBtX2RvbWFpbiA9
ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JE
b21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluT1NTdGF0dXMp
Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1f
ZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4g
PT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRv
bWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRvbWFpbldpblNvY2si
X3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApAQCAtMTkwLDEzICsx
OTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9yIGVycm9y
KQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JE
b21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7Cisg
ICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAgICBtX2RvbWFpbiA9
ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JE
b21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5N
YWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA0NTliZjJhNDJm
OWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUsOSAr
MjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkK
IAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewotICAg
ICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVE
ZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmlsZVN5
c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAgICAgICAg
ICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQYXRo
KTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAg
ICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJv
dG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAK
aW5kZXggZTBlZWY2ODgwZjJiLi4wNzFiYjFhNDdiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmljYXRlSW5mbzo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6dmVyaWZpY2F0aW9u
RXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlfdmVyaWZ5X2NlcnRf
ZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVybiBTdHJpbmcgeyBY
NTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKSB9OwogfQog
CiBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5mbzo6bWFrZUNlcnRp
ZmljYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCA2
MTM2NTMxYjViMWMuLjZiMTZmYzM0ZGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODIsNyArMzgyLDcgQEAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENvb2tpZXMo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LAogCiAgICAgU3RyaW5nIHJlcXVlc3RQYXRoID0gcmVxdWVz
dFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocmVxdWVzdFBhdGguaXNFbXB0eSgpKQot
ICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIjsKKyAgICAgICAgcmVxdWVzdFBhdGggPSAiLyJfczsK
IAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdFVybCB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
VXRpbC5jcHAKaW5kZXggNmQzNDY4ZTQyMjI1Li4wNGU2NGNkMmM3YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTE4
NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVybCkK
IAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChwYXRo
LmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiAiLyI7
CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNoUG9zaXRpb24gPSBw
YXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKLSAgICAg
ICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgcmV0dXJuIHBhdGgu
c3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDdi
NDY4NTVhMDUxNS4uYTdhMTUyN2M4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTYxLDEwICs2MSwx
MCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJl
c291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFzZUZpbGVuYW1lKHVy
bC5sYXRpbjEoKSk7CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1lKTsK
LSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAgIG1faGVhZGVyRmls
ZW5hbWUuYXBwZW5kKCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVu
ZChtX2Jhc2VuYW1lKTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50Iik7
CisgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7CiB9CiAKIEN1cmxD
YWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5IEBAIGJvb2wgQ3Vy
bENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVzcG9u
c2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAg
ICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAgaGVhZGVyRmllbGQu
YXBwZW5kKCI6ICIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIl9zKTsKICAgICAg
ICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFw
cGVuZCgiXG4iKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJfcyk7CiAgICAgICAg
IENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRpbjEoKTsKICAgICAg
ICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVyRmllbGRMYXRpbjEu
ZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAgIG1fY2FjaGVkUmVz
cG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdl
ci5jcHAKaW5kZXggM2JkMmNjNzQyODZlLi43MDJjNWIzMWEwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzZXRDYWNoZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1f
Y2FjaGVEaXIuYXBwZW5kKCIvIik7CisgICAgbV9jYWNoZURpci5hcHBlbmQoIi8iX3MpOwogCiAg
ICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpAQCAtMTM4LDggKzEzOCw3
IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBpZiAobV9kaXNhYmxl
ZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9jYWNoZURp
cik7Ci0gICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOworICAgIGF1dG8gaW5k
ZXhGaWxlUGF0aCA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgImluZGV4LmRhdCJfcyk7CiAKICAg
ICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAgIEZpbGVTeXN0ZW06
OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShpbmRl
eEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCmluZGV4
IDcyOGNiODhiZmIwNS4uM2U1ZDZmMWM5MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQyOSwyNiArNDI5LDIz
IEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29uc3QgSFRUUEhlYWRl
ck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVyKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTdHJpbmcgaGVh
ZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhhdCB0aGlzIGhlYWRl
ciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQoIjsiKTsKKyAgICAg
ICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQodmFsdWUpOworICAg
ICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsKICAgICB9CiAKLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihX
VEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92ZVJlcXVlc3RIZWFk
ZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRlciB3aXRoIG5vIGNv
bnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRpc2FibGVkLiAKLSAg
ICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoiKTsKLQotICAgIGFw
cGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9IG1ha2VTdHJpbmco
bmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7CiB9
CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi5iMDkyNTZiMTk4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVz
dCgpCiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlmIChzaG91bGRSZWRp
cmVjdEFzR0VUKG5ld1JlcXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAgICBuZXdSZXF1ZXN0
LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2Qo
IkdFVCJfcyk7CiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CiAgICAg
ICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRl
eCAyYmFmOTQyZGJjOTYuLjdlYjA4NzBkNzk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01NTksNyArNTU5LDcg
QEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBQVVQoKQogICAgIG1fY3VybEhhbmRsZS0+ZW5hYmxl
SHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8vIERpc2FibGUgdGhlIEV4cGVjdDogMTAwIGNvbnRp
bnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0
Iik7CisgICAgbV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJFeHBlY3QiX3MpOwog
CiAgICAgYXV0byBlbGVtZW50U2l6ZSA9IG1fZm9ybURhdGFTdHJlYW0uZWxlbWVudFNpemUoKTsK
ICAgICBpZiAoIWVsZW1lbnRTaXplKQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OnNldHVwU2VuZERhdGEoYm9vbCBmb3JQdXRNZXRob2QpCiB7CiAgICAgLy8gY3VybCBndWVz
c2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMgd2Ugc3BlY2lmeSB0
aGUgaGVhZGVyCiAgICAgaWYgKG1fZm9ybURhdGFTdHJlYW0uc2hvdWxkVXNlQ2h1bmtUcmFuc2Zl
cigpKQotICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVy
LUVuY29kaW5nOiBjaHVua2VkIik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVz
dEhlYWRlcigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiX3MpOwogICAgIGVsc2UgewogICAg
ICAgICBpZiAoZm9yUHV0TWV0aG9kKQogICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5zZXRJbkZp
bGVTaXplTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3JtRGF0YVN0cmVhbS50b3Rh
bFNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5kZXggMzg5
N2UwMWM2ZDA3Li5iM2FiOGQxY2I2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVn
YXRlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdh
dGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAg
ICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShj
YWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAgIGlmIChkKCktPm1f
YWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25z
ZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQ
U3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNlMDczNS4uNGY4OWQ5
NzNlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC00MywxMyAr
NDMsMTMgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0Q29va2llSmFyUGF0aCgpCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGRlZmF1bHRGaWxlTmFtZSA9ICJjb29raWUuamFyLmRiIjsKICAgICBjaGFy
KiBjb29raWVKYXJQYXRoID0gZ2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFUSCIpOwogICAgIGlm
IChjb29raWVKYXJQYXRoKQotICAgICAgICByZXR1cm4gY29va2llSmFyUGF0aDsKKyAgICAgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llSmFyUGF0aCk7CiAKICNpZiBQTEFURk9STShX
SU4pCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxl
U3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGVmYXVsdEZpbGVO
YW1lKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTI0MTcKLSAgICByZXR1cm4gZGVmYXVsdEZpbGVOYW1lOworICAgIHJldHVy
biBTdHJpbmcgeyBkZWZhdWx0RmlsZU5hbWUgfTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhlNzIxMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBs
ZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAppbmRleCBh
YWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtl
eUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewog
ICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAg
ICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2Fz
ZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAg
IHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAg
IHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAg
Y2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAg
ICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAg
IGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJl
dHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJu
ICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZL
X0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJE
b3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAg
ICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAv
LyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJF
bnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VY
RUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJu
ICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJG
MSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAg
ICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAg
ICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1
cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7
CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAg
ICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBj
YXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4g
IkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7Cisg
ICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAg
ICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNl
IFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5
Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAg
ICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBj
YXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAg
ICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAg
ICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVy
biAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
ODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9z
OwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAg
IHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNl
IFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAi
RjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAg
ICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4g
IkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hP
TUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21l
Il9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0
IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6
Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9z
OwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsK
KyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6
Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VV
cCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2Ui
OworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hP
VDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJu
ICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJl
dHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2Fz
ZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICBy
ZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAg
Y2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJu
ICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7
CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSks
IDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9j
YWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxp
emVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgdXBsb2Fk
RmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQi
OworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0KCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAgICByZXR1
cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4
IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQsMzQgQEAg
U3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcg
c3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlwZU1hcDsK
ICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3aXRoIGlu
aXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQvcGxhaW4i
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRmIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCIsICJ0
ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hzbCIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4
bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGljYXRpb24v
eC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImltYWdlL3N2
Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2Zyt4bWwi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0
aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiLCAiaW1h
Z2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9pY28iKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
d21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQi
X3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiX3MsICJh
cHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9zLCAiYXBw
bGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIl9z
LCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3MsICJ0ZXh0
L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQvaHRtbCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRpb24vcnNz
K3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywgImFwcGxp
Y2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIl9z
LCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiJfcywg
ImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJfcywgImlt
YWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJpbWFnZS9q
cGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9wbmciX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwi
X3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxj
Il9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBTdHJpbmcg
cmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5OTM2NDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAg
LTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQg
YWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0
IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9y
bWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9y
bWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1
bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBw
bGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRl
eHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7
CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25h
bDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21E
YXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBl
c1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBh
c3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVz
LmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJp
LWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJk
VHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3Jp
Z2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkK
IHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENs
aXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBl
KTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcg
KzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3Qu
Z2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4g
IiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpy
ZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUs
NyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYg
dXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAg
ICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxU
b01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7
CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsK
ICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxG
b3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1
bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
VG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAg
ICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUko
KSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRo
ID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRy
dWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVy
bCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygi
W0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5n
IGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJM
KQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxl
IHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6
Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0g
ICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRs
ZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVi
b2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9C
QUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENs
aXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6
R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5
LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYg
OjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0g
OjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2lu
ZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRl
eHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAg
ICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2so
Y2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAg
ICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1
MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmop
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDAp
OworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0
ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxz
ZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3Vw
KGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1h
cmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1
cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAg
ICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUyZGI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwyNSArODUs
MjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2FzZSBXaW5k
b3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6Ci0gICAg
ICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBDRSJfczsK
ICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAuTkVUIjsK
KyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5kb3dzM18x
OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dz
IDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1
IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93czk4Ogot
ICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgi
X3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2lu
IDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIl9zOwog
ICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7CisgICAgICAg
IHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRvd3NOVDMp
ID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWlseU5hbWUg
KyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5vcik7Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3IpOwogfQog
CiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0YXRpYyBXT1JE
IHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVjdHVyZVRva2Vu
Rm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJldHVybiAiOyBX
T1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJj
aGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAgICAgICAgcmV0
dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCJfczsKICAg
ICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9J
QTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICByZXR1cm4gIjsg
V2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIElu
dGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBhZ2Uuc2V0
T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsKIAogI2lm
IFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24o
KS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRv
bigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdMb2FkZXI6
OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFu
ZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZl
ci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1bHQ6OkNv
bW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxF
cnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0byBlcnJv
ciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVycm9yKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5n
ZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0
LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNzYWdlKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9T
b3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNjNS4uZDcxZjRkMTA1
N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNlc3Npb246
OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+JiYgY29t
cGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgYXV0
byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdl
dEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFs
b2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Il9zKTsKICAg
ICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29k
ZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTksMTMgKzM1OSwx
MyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJl
c3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSByZXNwb25z
ZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAgICAgICAgICBhdXRv
IGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNv
bnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQpIHsKICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1
bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+
Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0
LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBpZiAoIXVybCkgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3Vs
dDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3RkOjpvcHRp
b25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52
YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dP
cmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93T3JpZ2lu
LT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93T3JpZ2luLT5z
ZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXRE
b3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERv
dWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVj
dCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAgICB9CiAgICAgICAg
IGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93U2l6ZSA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUo
IndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3Vi
bGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAgICAgIHBh
cmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dTaXplKSk7CiAgICAg
ICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0V2luZG93RnJh
bWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUgewpAQCAt
MTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0ZpbGVVcGxvYWQoY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgogICAgIGF1dG8gYXJn
dW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmlu
ZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRp
YyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3RleHBy
IGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsi
CiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5w
dXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAgICAgICAgcmV0dXJu
IHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhhc0F0dHJpYnV0ZSgn
bXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IGZhbHNl
IH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJy
b3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgp
KTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7
IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1lbnQucmVhZE9ubHkp
IgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3ICsxODcwLDcgQEAg
dm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHRydWU7Igog
ICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIKLSAgICAgICAgIn0i
OworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRleHRIYW5k
bGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0yMTcwLDcgKzIx
NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1l
bnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgYXV0byBmaWxlVXBs
b2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1bHQucmVzdWx0KCkp
OwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMoKS5zdHJp
Y3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gZm9j
dXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgZG9jID0gZWxlbWVu
dC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxl
dCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAgLTIxODYsNyArMjE4
Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAgICAgICAgICIgICAg
ICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5sZW5ndGgsIGVsZW1l
bnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGVsZW1lbnRS
b290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxlJywgbWVzc2FnZTog
J0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAgICAgICAgICJ9IjsK
KyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAgICAgICAgICAgICBhdXRvIGFyZ3Vt
ZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CkBA
IC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsdEF1dG9t
YXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0byBjb29r
aWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5n
KCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBjb29raWVPYmplY3Qt
PnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iX3MpKTsKICAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZhbHVlX29y
KGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlY3VyZSJf
cywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0
Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxzZSkpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNvb2tpZS5leHBpcnkp
OwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBjb29raWUuZXhwaXJ5
LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3Ms
IGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSJfcykp
OwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzggKzI2OTEsMzggQEAg
U2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3VyY2VTdGF0ZShjb25z
dCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5lbnN1cmUoaWQsIFtd
IHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCi1z
dGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRTb3VyY2Um
IGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uU291cmNlVHlwZShj
b25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNoIChpbnB1dFNvdXJj
ZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAgICAgcmV0
dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNhc2UgSW5wdXRTb3Vy
Y2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9pbnRlclR5
cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBvaW50ZXJU
eXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91c2UiOworICAgICAgICAgICAgcmV0
dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91Y2g6Ci0gICAgICAg
ICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJldHVybiAiVG91Y2giX3M7CiAgICAg
ICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVybiAiUGVuIjsKKyAg
ICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJuICJLZXlib2FyZCI7
CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlw
ZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOworICAgICAgICByZXR1cm4gIldoZWVs
Il9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6VHlwZSB0
eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3Jp
Z2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQb2ludGVy
T3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3cG9ydCI7CisgICAg
ICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpQ
b2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOworICAgICAgICByZXR1cm4gIlBvaW50
ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50OgotICAgICAgICBy
ZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7CiAgICAgfQogICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJT
ZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTIuLjU5MTg0NzBiODVjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGludCBXZWJEcml2ZXJT
ZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIFVTRShJTlNQRUNUT1JfU09D
S0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlmIChjb25zdCBjaGFy
KiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQUREUiIpKQotICAgICAg
ICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRFbnZWYXI7CisgICAgICAgIHRhcmdldFN0cmluZyA9IFN0
cmluZyB7IHRhcmdldEVudlZhciB9OwogI2VuZGlmCiAgICAgZm9yIChpbnQgaSA9IDEgOyBpIDwg
YXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3ZbaV07CkBAIC03NSw3
ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgcG9ydFN0cmluZyA9IFN0cmluZyB7
IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTk3LDcg
Kzk3LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
dGFyZ2V0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHRhcmdldFN0cmluZyA9IFN0cmlu
ZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTQ0
MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94
eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94eS5odHRw
c1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgi
c29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0
VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNvY2tzUHJveHkgPSB2
YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICghc29ja3NQcm94eSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlP
YmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1ZhbGlkKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgYXV0byBzb2Nr
c1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iKTsKKyAg
ICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgi
c29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJzaW9uVmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcyLDMwICs4NzIsMzAg
QEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBhYmlsaXRp
ZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdpbmRvd1Jl
Y3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMudW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRp
c21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2
aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsKKyAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3Ms
ICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlz
bWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiKTsK
KyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNj
ZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Iik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6SWdub3Jl
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9y
ZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKFBhZ2VMb2Fk
U3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6
Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFn
ZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb3Jt
YWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VM
b2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCJfcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6OkVh
Z2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdl
TG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIl9zKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghY2FwYWJp
bGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJp
bGl0aWVzU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1Nv
Y2tldC5jcHAKaW5kZXggMGY2Yzg3ODIwMDk1Li4yYjY3MTM0OWQzNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKKysrIGIvU291cmNl
L1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAtMzIsMTIgKzMyLDEy
IEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGllcyhjb25zdCBKU09O
OjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0
YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAgaWYgKG1hdGNoZWRD
YXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFyZ2V0QWRkclZhbHVl
KSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQorICAgIGlmIChtYXRj
aGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJfcywgdGFyZ2V0QWRk
clZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQogICAgICAg
ICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAgICBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9ydDsKLSAgICBpZiAo
bWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiLCB0YXJnZXRQ
b3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQorICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCJfcywg
dGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0
KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQb3J0OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCmluZGV4IDc5Yjdj
YTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQ
U2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUVFBSZXF1ZXN0SGFuZGxl
cjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5lY3Rpb25J
RAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJlc3BvbnNlIHsKICAgICAg
ICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLAotICAg
ICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCIsCisgICAg
ICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0Il9zLAogICAg
ICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rl
ci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4IDNiNmZm
OGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rl
ci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJU
b1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAg
IGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNv
cHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBz
dG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZm
ZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8gIklmIGFu
eSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICgh
dmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAx
LDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNv
bnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFueSBvZiB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRh
dGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsK
ICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAg
ICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVy
ZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJvdG9jb2wo
U1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAgICAgICAg
cmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAgICAgICBy
ZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NTTFByb3Rv
Y29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0dXJuICJV
bmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlkZGEzMDBm
ZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFzcyBEaWN0
aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2lnbmF0dXJl
c0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29sIG1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5nICopOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0
LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlRW5jb2Rl
ZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmIHdp
cmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxvY2FsID09
IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0gPT0gIE5TT3JkZXJl
ZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0aCgpICE9
IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0aCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwubGVuZ3Ro
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAg
IGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUgPSB3aXJl
W2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKLSAgICAgICAgICAg
IC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgotICAgICAg
ICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigiQmMiLCB3aXJlVHlw
ZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBDaGFyYWN0ZXIgPSBb
XSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQg
Y2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMgPT0gJ0InID8gJ2Mn
IDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAg
IGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICht
YXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1hcENoYXJhY3Rlcihb
d2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5ICs5NjcsOCBAQCBz
dGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2Rl
ciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiSW52
b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVNZXRo
b2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxvY2Fs
TWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmlu
Zy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAgICBO
U1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1
cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9y
bWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBhdGli
bGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6
ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnku
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnku
bW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5Jily
ZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5Owog
fQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29s
LCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0cmluZyAq
cmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNV
SW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJpdGVkIG1l
dGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9jb2xfZ2V0
TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0x
OTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9j
b2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNTRVJUKG1l
dGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNpZ25hdHVy
ZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdp
dGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0TWV0aG9k
U2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0TWV0aG9k
U2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0luZGV4XS5f
dHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhv
ZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZv
Y2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgd2ly
ZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlw
ZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsK
LSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0
dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKKyAgICAg
ICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWdu
YXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEo
KV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2lnbmF0dXJl
ID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5z
ZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUuaXNOdWxs
KCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAgICAgICAg
ICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBz
aWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUod2lyZUJs
b2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAgICAgTlNM
b2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0
dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBleHBlY3Rl
ZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2coQCJfaW52
b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlQCAh
PSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7CiAgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2Vi
S2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAg
IH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFJl
cGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAgICBpZCBy
ZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3aXJlQmxv
Y2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0
cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgeworICAgICAg
ICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayhb
d2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RS
ZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CiAg
ICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNvZGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52b2Nh
dGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRleCA2YjA1
MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEsOCArNDEs
OCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVz
dWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VVUkxTdHJp
bmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQ
cm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5j
b20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNv
bS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJo
dHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICBy
ZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2Fm
YXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmluZyByZXBv
cnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJu
IHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1
bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAg
IHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3RwbD1zYWZh
cmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVw
b3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxz
ZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBz
Oi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFyaSJf
czsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2NzhmZTcz
ZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0yOTcsNyAr
Mjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6
dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3
QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29r
X2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJl
ZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVk
Il9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVBy
ZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3Ry
aW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2Vydmlj
ZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAg
ICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQu
c2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJlMDJlYzhlM2U0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1
MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFt
ZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNo
b3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0
ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFp
biJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAg
ICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQo
KSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBw
IGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExv
YWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4
IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAg
dm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAg
ICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAi
eiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoi
X3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3Ms
IDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRv
OgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJV
KzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAg
ICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAg
ImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisg
ICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5
IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAg
ICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIs
ICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAg
ICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBX
ZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNp
bmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIp
Ci0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9
LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNh
dGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IGUw
MTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5nJiBD
bGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBpZiAo
IW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykgJiYg
IVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1
dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBidWls
ZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMgdGhl
IG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAgICAg
bV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikKICAg
ICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJP
T0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRv
Y3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRl
KG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJW
aWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1
YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9y
IHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVu
dC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNl
dC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4w
OThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5l
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywg
aW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1
dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0g
ICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUgdm9p
ZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3Rv
cjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQq
IGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAg
LTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihC
T09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVU
ZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9w
cml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5n
XSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5n
KGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBA
IC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUg
ZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3
aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZh
bGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0
aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVD
b2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlw
dE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2Vi
UmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2Vi
UmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
UmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQs
MTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJT
Y3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtu
b3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNw
cAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2Ny
aXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQp
CiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xh
c3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRX
b3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5n
ZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNj
cmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFu
ZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdl
YlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9y
aWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3Mp
OwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2lu
Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5
Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJp
YWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFs
dWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFs
dWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1
ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
CkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNy
ZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRl
cmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwog
fQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAK
IEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1
OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMg
KzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAK
IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
Q3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQog
CiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQog
CiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApp
bmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAg
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rp
b25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5X
ZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVS
TFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNk
YmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVk
U2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNw
b25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJl
c3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpj
cmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdl
YlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFz
IHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygp
LCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBp
bnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXgg
NDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQog
CiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQog
ewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2Vi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBX
ZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAt
NDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0t
OwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAog
V2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBA
QCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJh
bSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBj
YXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoK
LSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3Mp
LmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVu
dC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0g
ZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50
KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0
cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktp
dCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhv
dyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBz
aG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
NDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24q
IC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxU
IFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChf
SW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7Cisg
ICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3Io
KS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VM
VCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUi
KS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQ
cml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDEx
IEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2Uo
KQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAog
V2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNw
cAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywx
NSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VS
VF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3Mp
KTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3Mp
KTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0g
ICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAi
KSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAg
ICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsx
MzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNl
ZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24g
b2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFT
U0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIi
X3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVz
dHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNk
YzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWlu
U1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAt
MjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQog
PC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBS
ZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0
aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0Fw
cEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpz
ID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9
IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9u
c2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
ZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBC
bG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7
dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3Bv
bnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2Ny
aXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRB
bGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJl
c3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQu
aHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykp
IH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2Zl
dGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdl
YlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChm
ZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFs
ZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVy
dCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQt
VHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZl
cicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0
KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9y
dDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwog
CiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAg
ICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAg
IHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2Vy
dmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZv
aWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7
CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAg
ICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAg
ICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cu
anMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAg
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4
LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3RO
b25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2co
J0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZh
bHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5
bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBA
IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2Vu
dEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBp
bml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3Rh
dGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlh
dGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4u
aHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2Fk
IFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlv
bi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9u
Lm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVu
dGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0p
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0
PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVx
dWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVT
VFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJl
Q29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5C
eXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVu
ZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxi
b2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdh
Y2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3
LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1l
PgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1l
VGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0p
RE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRh
dGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7
ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsg
ZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRy
LCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0
QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20u
YXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFs
aXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZh
Y3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9u
QXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBA
QCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
Kil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciog
bWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAs
OSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRo
ZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVT
T1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4
NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4o
ZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7
CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5
OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxs
b3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJf
cywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25l
ID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRv
IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBm
cm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91
bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjog
U2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9z
OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgi
L21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAg
ICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBt
YWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dl
YnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBA
IC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2Vy
dmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAg
aXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24g
c3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3Mi
X3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0
KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNl
YTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4
MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNz
U3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAg
ICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0
bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0s
ICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAor
ICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
InRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUt
b3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nl
c3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAg
dXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGlu
YXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9z
cy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisg
ICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
dGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1v
cmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpp
bmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAg
ICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJh
dGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1
cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAt
MTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUo
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFp
blB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
Z1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBk
ZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0g
Q0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1
bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlv
bgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0
cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBD
R1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8
Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tD
b250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBD
R1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdh
dGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRv
cHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0z
NzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250
ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6
emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsg
fSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250
ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5p
bF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmlu
Z3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApA
QCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9u
TmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFs
bHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0
IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihX
S0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4
Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0
aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50
ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Vz
ZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEv
VG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50
OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJp
bmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBs
ZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9Owog
ICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAg
VVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVz
dGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484781"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456479</attachid>
            <date>2022-04-02 15:42:53 -0700</date>
            <delta_ts>2022-04-02 15:59:48 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>198455</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDUxMjNiYjJk
MGMwNC4uZDQ4NDFkZjNkZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJs
YXlzLmNwcApAQCAtMjUyLDE0ICsyNTIsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1vdXNlRXZl
bnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAg
IEZsb2F0UmVjdCByZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQpOwotICAgIGJvb2wgdmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFT
Q0lJTGl0ZXJhbCk7CiAgICAgICAgIAogICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdp
b24+IGFjdGl2ZVJlZ2lvbigpOwogCiAgICAgc3RydWN0IFNldHRpbmcgewotICAgICAgICBTdHJp
bmcga2V5OwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICAg
ICAgQVNDSUlMaXRlcmFsIGtleSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIEFT
Q0lJTGl0ZXJhbCBuYW1lIHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgYm9vbCB2
YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsgICAgCiAKICAgICBGaXhlZFZlY3RvcjxTZXR0aW5nPiBt
X3NldHRpbmdzIHsKQEAgLTM3OSw3ICszNzksNyBAQCBGbG9hdFJlY3QgSW50ZXJhY3Rpb25SZWdp
b25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgfTsK
IH0KIAotYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhjb25z
dCBTdHJpbmcmIG5hbWUpCitib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JT
ZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1lKQogewogICAgIGZvciAoY29uc3QgYXV0byYgc2V0dGlu
ZyA6IG1fc2V0dGluZ3MpIHsKICAgICAgICAgaWYgKG5hbWUgPT0gc2V0dGluZy5rZXkpCkBAIC00
MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIAogICAgIGNvbnRleHQu
Y2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25z
IikpIHsKKyAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIl9zKSkgewogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VD
b2xvcihDb2xvcjo6Z3JlZW4pOwogCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LAogCiAgICAgYXV0byByZWdpb24gPSBhY3RpdmVSZWdpb24oKTsKIAotICAgIGlmIChy
ZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICBpZiAocmVnaW9u
IHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgYXV0byBncmFk
aWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1cykgewogICAgICAgICAgICAgR3JhZGllbnQ6OlJh
ZGlhbERhdGEgZ3JhZGllbnREYXRhOwogICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50MCA9
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOwpAQCAtNDUxLDEwICs0NTEsMTAg
QEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5Jiwg
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgICAgIGF1dG8gbWFrZUdyYWRpZW50ID0g
WyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3VuZCwgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3JhZGll
bnREYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShX
VEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdCIHsg
fSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwotICAgICAgICAg
ICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRp
bmcoImNsaXAiKSkgeworICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmco
Indhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpIHsKICAgICAgICAgICAgICAg
ICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9y
V2l0aEFscGhhKDAuNSkgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3Rv
cCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRo
QWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkgfSk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAhdmFs
dWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3Mp
KSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFs
cGhhKDApIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2NiwxOCArNDY2LDE4IEBAIHZv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIGNvbnN0
ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0gNTA7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9
IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOworICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpOwogICAgICAgICBWZWN0b3I8UGF0aD4gY2xpcFBhdGhzOwog
CiAgICAgICAgIGlmIChzaG91bGRDbGlwKQogICAgICAgICAgICAgY2xpcFBhdGhzID0gcGF0aHNG
b3JSZWdpb24oKnJlZ2lvbik7CiAKLSAgICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdyYWRp
ZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VCYWNr
ZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0dGlu
Zygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSk7CiAKICAgICAgICAgaWYg
KHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRDbGlw
KSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVu
c2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVz
ID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5k
aW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoZ3Jh
ZGllbnREYXRhKHJhZGl1cyAqIDEuNSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAgICAg
ICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9y
KENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICAg
ICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OmJsYWNr
KS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgSW50ZXJh
Y3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCwKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5k
ID0gZmFsc2U7Ci0gICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1
ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciIpKQorICAgICAgICBpZiAoIXNob3VsZFVzZUJh
Y2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiX3MpKQog
ICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0gcmVnaW9uLT5oYXNMaWdodEJhY2tncm91
bmQ7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9
IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdS
ZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtlR3Jh
ZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEocmFkaXVzKSkpOwogICAgICAg
ICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICB9CkBAIC01MjIs
OSArNTIyLDkgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQoUGFn
ZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8KIAogICAgIHN0ZDo6b3B0aW9uYWw8
Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAotICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3Ii
KSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIl9zKSkKICAgICAgICAgY3Vyc29y
VG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0gICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92
ZXIiKSkKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAgICAg
IGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNvcigpOwogCiAgICAgYXV0byBldmVudEluQ29udGVu
dHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQucG9z
aXRpb24oKSk7CkBAIC01NDQsNyArNTQ0LDcgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJs
YXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8KICAg
ICBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA9IGV2ZW50SW5Db250ZW50c0Nv
b3JkaW5hdGVzOwogICAgIG92ZXJsYXkuc2V0TmVlZHNEaXNwbGF5KCk7CiAKLSAgICBpZiAoZXZl
bnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMo
KSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGlmIChldmVudC50eXBlKCkgPT0g
UGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZv
clNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFz
ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5t
bQppbmRleCA0Nzc0Y2UwOGE1YjguLmUwMTZmOTIxZDVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCkBAIC02MywxNSArNjMsMTUgQEAgYm9v
bCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKIHZv
aWQgU2V0dGluZ3NCYXNlOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiB7Ci0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxf
SEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIiwgVVNDUklQVF9T
SU1QTElGSUVEX0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5j
aG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwotICAgIHNldFN0YW5kYXJk
Rm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLQotICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0
Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNlcmlm
Rm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFN0YW5kYXJkRm9u
dEZhbWlseSgiUGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIl9zLCBVU0NSSVBUX1NJTVBMSUZJRURf
SEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIl9z
LCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJUFRfSEFOR1VMKTsKKworICAgIHNldFN0
YW5kYXJkRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRGaXhl
ZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZv
bnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseSgiSGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NPTU1PTik7CiB9CiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRleCBlYmNkYjFk
ZDA4MTIuLjVhOTQ4OTAwOTQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBVc2VyQWdlbnRU
eXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNpb24gPSBlbXB0eVN0cmluZygpLCBVc2Vy
QWdlbnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVsdCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0
cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNPUkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBv
c05hbWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRp
bmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAjZWxzZQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJl
YW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9E
ZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTQ1ZmMwNjQzMzk0Li44YjdlNzQxYjdjOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRp
b0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsx
MjMsNyBAQCBBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyKEF1ZGlvSU9DYWxsYmFjayYgY2FsbGJhY2ssCiAgICAgbV9zcmMgPSBHU1RfRUxFTUVOVF9D
QVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfQVVESU9fU1JDLCAicmF0ZSIsIHNhbXBs
ZVJhdGUsCiAgICAgICAgICJidXMiLCBtX3JlbmRlckJ1cy5nZXQoKSwgImRlc3RpbmF0aW9uIiwg
dGhpcywgImZyYW1lcyIsIEF1ZGlvVXRpbGl0aWVzOjpyZW5kZXJRdWFudHVtU2l6ZSwgbnVsbHB0
cikpOwogCi0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9y
bUF1ZGlvU2luaygibXVzaWMiKTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9
IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCJtdXNpYyJfcyk7CiAgICAgbV9hdWRpb1NpbmtBdmFp
bGFibGUgPSBhdWRpb1Npbms7CiAgICAgaWYgKCFhdWRpb1NpbmspIHsKICAgICAgICAgR1NUX0VS
Uk9SKCJGYWlsZWQgdG8gY3JlYXRlIEdTdHJlYW1lciBhdWRpbyBzaW5rIGVsZW1lbnQiKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNz
Q29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwLi5lNjJjZmQ3
NWRmNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCkBAIC01NCw3ICs1NCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIjsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0g
IkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfczsKIAogc3RhdGljIFNlY29uZHMgbWF4RnJh
bWVEdXJhdGlvbiA9IDVfczsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6cmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkCiAKIC8vIFRoZSBjb250ZW50cyBvZiBHcmFwaGljc0NvbnRleHRHTEFOR0xFQ29tbW9u
IGZvbGxvdywgcG9ydGVkIHRvIHVzZSBBTkdMRS4KIAotdm9pZCBHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxF
eHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgLy8g
RklYTUU6IFNpbmNlIHRoZSBjb25zdHJ1Y3RvcnMgb2YgdmFyaW91cyBwbGF0Zm9ybXMgYXJlIG5v
dCBzaGFyZWQsIHdlIGluaXRpYWxpemUgdGhpcyBoZXJlLgogICAgIC8vIFVwb24gY29uc3RydWN0
aW5nIHRoZSBjb250ZXh0LCBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5zaW9ucyB0aGF0IHRo
ZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAppbmRleCBkOWQzNjc0MTgzYTkuLmZjZDU2M2E2NzMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4
dEdMQU5HTEUuaApAQCAtMzUzLDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0
aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBv
cgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMg
b2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lk
IHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBH
Q0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXpl
aSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6
ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggN2U2MzQ2ZmZhMTgxLi4zZjM1NDhk
YTBmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC03MDEsNyArNzAxLDcgQEAg
c3RhdGljIHZvaWQgcHJpbnRUcmFuc2Zvcm0oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3Qg
Q0FUcmFuc2Zvcm0zRCYgdHJhbnNmb3IKICAgICBidWlsZGVyLmFwcGVuZCgnWycsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMSksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm0yNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzMp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zNCksICI7
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MSksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQyKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDMpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00NCksICddJyk7CiB9CiAKLXN0YXRp
YyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKK3N0YXRpYyB2b2lkIHByaW50Q29s
b3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCwgQVNDSUlMaXRlcmFsIGxhYmVs
LCBDR0NvbG9yUmVmIGNvbG9yKQogewogICAgIENvbG9yIGxheWVyQ29sb3Iocm91bmRBbmRDbGFt
cFRvU1JHQkFMb3NzeShjb2xvcikpOwogICAgIGlmICghbGF5ZXJDb2xvci5pc1ZhbGlkKCkpCkBA
IC03NjIsMTAgKzc2MiwxMCBAQCBzdGF0aWMgdm9pZCBwcmludExheWVyKFN0cmluZ0J1aWxkZXIm
IGJ1aWxkZXIsIGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIGludAogICAgIH0KIAogICAg
IC8vIFByaW50IGJhY2tncm91bmRDb2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5k
Q29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwg
aW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xvciJfcywgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENv
bG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IGJvcmRlckNvbG9y
IGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNv
bG9yIiwgQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwor
ICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIl9zLCBDQUNG
TGF5ZXJHZXRCb3JkZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQ
cmludCBtYXNrc1RvQm91bmRzIGlmIG5lZWRlZAogICAgIGlmIChib29sIGxheWVyTWFza3NUb0Jv
dW5kcyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmluZGV4IGM4
Y2FjNDhjNmMwNS4uYzdhMWMyNzI1ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1
cmVNYXBwZXJGUFNDb3VudGVyKCkKICAgICAsIG1fbGFzdEZQUygwKQogICAgICwgbV9mcmFtZUNv
dW50KDApCiB7Ci0gICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lU
X1NIT1dfRlBTIik7CisgICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCB7IGdldGVudigiV0VC
S0lUX1NIT1dfRlBTIikgfTsKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgbV9mcHNJbnRlcnZh
bCA9IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25tZW50LnRvRG91YmxlKCZvaykpOwogICAgIGlmIChv
ayAmJiBtX2Zwc0ludGVydmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDBkYjk4MDIxODA1NS4uNzY2OWExMWRi
YTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcApAQCAtMTQ1Myw3ICsxNDUzLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnJlc3VtZUFuaW1hdGlvbnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQoKQogewotICAgIGNsaWVudCgpLm5vdGlm
eUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7Cisg
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBt
X2xhc3RBbmltYXRpb25TdGFydFRpbWUpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6cmVxdWVzdFBlbmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVkKCkKQEAgLTE0OTAsNyAr
MTQ5MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBJbm5lckxheWVyKFRleHRTdHJlYW0mIHRleHRTdHJl
YW0sIGNvbnN0IFN0cmluZyYgbGFiZWwsIENvb3JkaW5hCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6ZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRleHRTdHJlYW0s
IE9wdGlvblNldDxMYXllclRyZWVBc1RleHRPcHRpb25zPiBvcHRpb25zKSBjb25zdAogewogICAg
IGlmIChvcHRpb25zICYgTGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVkZUNvbnRlbnRMYXll
cnMpCi0gICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXllciIs
IG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CisgICAgICAgIGR1bXBJbm5lckxheWVy
KHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXllciJfcywgbV9iYWNrZHJvcExheWVyLmdldCgpLCBv
cHRpb25zKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4Mjky
YjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0K
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdl
LCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVi
b2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJl
dHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwx
MSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1
cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNN
b2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1T
dHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdl
bnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQ
aG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7Cisg
ICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0
YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJD
b250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwog
ICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5
YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXli
YWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBs
YXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25l
LCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1
MTY5MDQ1YzcwNWYuLjJkYzI3MTY2M2EzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTAyLDE1ICsxMDIs
MTUgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKIAogICAgIENGU3Ry
aW5nUmVmIGRvbWFpbiA9IENGRXJyb3JHZXREb21haW4obV9wbGF0Zm9ybUVycm9yLmdldCgpKTsK
ICAgICBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluTWFjaCB8fCBkb21haW4gPT0ga0NGRXJy
b3JEb21haW5Db2NvYSkKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYg
KGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNGTmV0d29yaykKLSAgICAgICAgbV9kb21haW4gPSAi
Q0ZVUkxFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JEb21haW4i
X3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluUE9TSVgpCi0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
UE9TSVhFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21h
aW5PU1N0YXR1cykKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgIGVsc2Ug
aWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbldpblNvY2spCi0gICAgICAgIG1fZG9tYWluID0g
ImtDRkVycm9yRG9tYWluV2luU29jayI7CisgICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9t
YWluV2luU29jayJfczsKICAgICBlbHNlCiAgICAgICAgIG1fZG9tYWluID0gZG9tYWluOwogCkBA
IC0xOTAsMTMgKzE5MCwxMyBAQCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFt
RXJyb3IgZXJyb3IpCiAKICAgICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7CiAgICAgY2FzZSBrQ0ZT
dHJlYW1FcnJvckRvbWFpbkN1c3RvbToKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAg
IG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5T
UE9TSVhFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1F
cnJvckRvbWFpbk1hY09TU3RhdHVzOgotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJy
b3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4
IDQ1OWJmMmE0MmY5ZS4uNmNmMDQ5MTgxNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0K
QEAgLTIzNSw5ICsyMzUsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9y
bVJlcXVlc3QoKQogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChtX3VybC5pc0xvY2FsRmls
ZSgpKSB7Ci0gICAgICAgIGF1dG8gZnNSZXBGaWxlID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCkpOwotICAgICAgICBpZiAoIWZzUmVw
RmlsZS5pc051bGwoKSkgewotICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3Rl
bTo6Z2V0RmlsZURldmljZUlkKGZzUmVwRmlsZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBt
X3VybC5maWxlU3lzdGVtUGF0aCgpOworICAgICAgICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpKSB7
CisgICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNl
SWQoZmlsZVBhdGgpOwogICAgICAgICAgICAgaWYgKGZpbGVEZXZpY2UgJiYgZmlsZURldmljZS52
YWx1ZSgpKQogICAgICAgICAgICAgICAgIFtuc1JlcXVlc3QgX3NldFByb3BlcnR5OltOU051bWJl
ciBudW1iZXJXaXRoSW50ZWdlcjpmaWxlRGV2aWNlLnZhbHVlKCldIGZvcktleTpAIk5TVVJMUmVx
dWVzdEZpbGVQcm90b2NvbEV4cGVjdGVkRGV2aWNlIl07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUlu
Zm9DdXJsLmNwcAppbmRleCBlMGVlZjY4ODBmMmIuLjA3MWJiMWE0N2JlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0
ZUluZm9DdXJsLmNwcApAQCAtNDcsNyArNDcsNyBAQCBDZXJ0aWZpY2F0ZUluZm8gQ2VydGlmaWNh
dGVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAogCiBTdHJpbmcgQ2VydGlmaWNhdGVJbmZvOjp2
ZXJpZmljYXRpb25FcnJvckRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gWDUwOV92
ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcik7CisgICAgcmV0dXJu
IFN0cmluZyB7IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJy
b3IpIH07CiB9CiAKIENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGUgQ2VydGlmaWNhdGVJbmZv
OjptYWtlQ2VydGlmaWNhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIu
Y3BwCmluZGV4IDYxMzY1MzFiNWIxYy4uNmIxNmZjMzRkZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTM4Miw3
ICszODIsNyBAQCBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2Vh
cmNoQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksCiAKICAgICBTdHJpbmcgcmVxdWVzdFBh
dGggPSByZXF1ZXN0VXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChyZXF1ZXN0UGF0aC5p
c0VtcHR5KCkpCi0gICAgICAgIHJlcXVlc3RQYXRoID0gIi8iOworICAgICAgICByZXF1ZXN0UGF0
aCA9ICIvIl9zOwogCiAgICAgUmVnaXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyBy
ZXF1ZXN0VXJsIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmNwcAppbmRleCA2ZDM0NjhlNDIyMjUuLjA0ZTY0Y2QyYzdhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGls
LmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAgU3RyaW5nIGRlZmF1bHRQYXRoRm9yVVJMKGNvbnN0
IFVSTCYgdXJsKQogCiAgICAgU3RyaW5nIHBhdGggPSB1cmwucGF0aCgpLnRvU3RyaW5nKCk7CiAg
ICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8ICFwYXRoLnN0YXJ0c1dpdGgoJy8nKSkKLSAgICAgICAg
cmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgYXV0byBsYXN0U2xhc2hQ
b3NpdGlvbiA9IHBhdGgucmV2ZXJzZUZpbmQoJy8nKTsKICAgICBpZiAoIWxhc3RTbGFzaFBvc2l0
aW9uKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBy
ZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgbGFzdFNsYXNoUG9zaXRpb24pOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAKaW5kZXggN2I0Njg1NWEwNTE1Li5hN2ExNTI3Yzg2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAt
NjEsMTAgKzYxLDEwIEBAIEN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJp
bmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyCiAgICAgZ2VuZXJhdGVCYXNl
RmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIAogICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKG1f
YmFzZW5hbWUpOwotICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIik7CisgICAg
bV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiX3MpOwogCiAgICAgbV9jb250ZW50Rmls
ZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgi
LmNvbnRlbnQiKTsKKyAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50Il9zKTsK
IH0KIAogQ3VybENhY2hlRW50cnk6On5DdXJsQ2FjaGVFbnRyeSgpCkBAIC0xMzksOSArMTM5LDkg
QEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9
IGVuZCkgewogICAgICAgICBTdHJpbmcgaGVhZGVyRmllbGQgPSBpdC0+a2V5OwotICAgICAgICBo
ZWFkZXJGaWVsZC5hcHBlbmQoIjogIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAi
X3MpOwogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKLSAgICAgICAgaGVh
ZGVyRmllbGQuYXBwZW5kKCJcbiIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIl9z
KTsKICAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGlu
MSgpOwogICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJG
aWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAg
bV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzYmQyY2M3NDI4NmUuLjcwMmM1YjMxYTAxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVNYW5hZ2VyLmNwcApAQCAtODUsNyArODUsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNl
dENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KQogICAgICAgICB9CiAgICAg
fQogCi0gICAgbV9jYWNoZURpci5hcHBlbmQoIi8iKTsKKyAgICBtX2NhY2hlRGlyLmFwcGVuZCgi
LyJfcyk7CiAKICAgICBtX2Rpc2FibGVkID0gZmFsc2U7CiAgICAgbG9hZEluZGV4KCk7CkBAIC0x
MzgsOCArMTM4LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGlm
IChtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0
aChtX2NhY2hlRGlyKTsKLSAgICBpbmRleEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7Cisg
ICAgYXV0byBpbmRleEZpbGVQYXRoID0gbWFrZVN0cmluZyhtX2NhY2hlRGlyLCAiaW5kZXguZGF0
Il9zKTsKIAogICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7CiAgICAg
RmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9w
ZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4
dC5jcHAKaW5kZXggNzI4Y2I4OGJmYjA1Li4zZTVkNmYxYzkwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApAQCAtNDI5
LDI2ICs0MjksMjMgQEAgdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVycyhjb25z
dCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVl
c3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IFN0cmluZyBoZWFkZXIobmFtZSk7CisgICAgU3RyaW5nIGhlYWRlcjsKIAogICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gSW5zZXJ0IHRoZSA7IHRvIHRlbGwgY3VybCB0aGF0
IHRoaXMgaGVhZGVyIGhhcyBhbiBlbXB0eSB2YWx1ZS4KLSAgICAgICAgaGVhZGVyLmFwcGVuZCgi
OyIpOworICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc7Jyk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaGVhZGVyLmFwcGVuZCgiOiAiKTsKLSAgICAgICAgaGVhZGVyLmFwcGVuZCh2
YWx1ZSk7CisgICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgIjogIiwgdmFsdWUpOwog
ICAgIH0KIAotICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhcHBlbmRSZXF1
ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6cmVtb3Zl
UmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgLy8gQWRkIGEgaGVhZGVy
IHdpdGggbm8gY29udGVudCwgdGhlIGludGVybmFsbHkgdXNlZCBoZWFkZXIgd2lsbCBnZXQgZGlz
YWJsZWQuIAotICAgIFN0cmluZyBoZWFkZXIobmFtZSk7Ci0gICAgaGVhZGVyLmFwcGVuZCgiOiIp
OwotCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGF1dG8gaGVhZGVyID0g
bWFrZVN0cmluZyhuYW1lLCAnOicpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZSho
ZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVyKGNvbnN0
IFN0cmluZyYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBhYWYwYzhkOTQwNzAuLmIwOTI1NmIxOTgz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d2ls
bFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYg
KHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxs
cHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwCmluZGV4IDJiYWY5NDJkYmM5Ni4uN2ViMDg3MGQ3OTc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTU1
OSw3ICs1NTksNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFBVVCgpCiAgICAgbV9jdXJsSGFu
ZGxlLT5lbmFibGVIdHRwUHV0UmVxdWVzdCgpOwogCiAgICAgLy8gRGlzYWJsZSB0aGUgRXhwZWN0
OiAxMDAgY29udGludWUgaGVhZGVyCi0gICAgbV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVh
ZGVyKCJFeHBlY3QiKTsKKyAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCJfcyk7CiAKICAgICBhdXRvIGVsZW1lbnRTaXplID0gbV9mb3JtRGF0YVN0cmVhbS5lbGVt
ZW50U2l6ZSgpOwogICAgIGlmICghZWxlbWVudFNpemUpCkBAIC01OTMsNyArNTkzLDcgQEAgdm9p
ZCBDdXJsUmVxdWVzdDo6c2V0dXBTZW5kRGF0YShib29sIGZvclB1dE1ldGhvZCkKIHsKICAgICAv
LyBjdXJsIGd1ZXNzZXMgdGhhdCB3ZSB3YW50IGNodW5rZWQgZW5jb2RpbmcgYXMgbG9uZyBhcyB3
ZSBzcGVjaWZ5IHRoZSBoZWFkZXIKICAgICBpZiAobV9mb3JtRGF0YVN0cmVhbS5zaG91bGRVc2VD
aHVua1RyYW5zZmVyKCkpCi0gICAgICAgIG1fY3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRl
cigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiKTsKKyAgICAgICAgbV9jdXJsSGFuZGxlLT5h
cHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCJfcyk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIGlmIChmb3JQdXRNZXRob2QpCiAgICAgICAgICAgICBtX2N1cmxIYW5k
bGUtPnNldEluRmlsZVNpemVMYXJnZShzdGF0aWNfY2FzdDxjdXJsX29mZl90PihtX2Zvcm1EYXRh
U3RyZWFtLnRvdGFsU2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAppbmRleCAzODk3ZTAxYzZkMDcuLmIzYWI4ZDFjYjYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZFJlY2VpdmVSZXNwb25zZShDdXJsUmVxdWVzdCYgcmVxdWVz
dCwgQ3UKICAgICAgICAgaWYgKEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmdldENhY2hl
ZFJlc3BvbnNlKGNhY2hlVXJsLnN0cmluZygpLCBtX3Jlc3BvbnNlKSkgewogICAgICAgICAgICAg
aWYgKGQoKS0+bV9hZGRlZENhY2hlVmFsaWRhdGlvbkhlYWRlcnMpIHsKICAgICAgICAgICAgICAg
ICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7Ci0gICAgICAgICAgICAgICAgbV9y
ZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siKTsKKyAgICAgICAgICAgICAgICBtX3Jlc3Bv
bnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyJfcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggZTdiOGViY2Uw
NzM1Li40Zjg5ZDk3M2VjOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
QEAgLTQzLDEzICs0MywxMyBAQCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRDb29raWVKYXJQYXRoKCkK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVmYXVsdEZpbGVOYW1lID0gImNvb2tpZS5qYXIuZGIi
OwogICAgIGNoYXIqIGNvb2tpZUphclBhdGggPSBnZXRlbnYoIkNVUkxfQ09PS0lFX0pBUl9QQVRI
Iik7CiAgICAgaWYgKGNvb2tpZUphclBhdGgpCi0gICAgICAgIHJldHVybiBjb29raWVKYXJQYXRo
OworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVKYXJQYXRoKTsKIAogI2lm
IFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBk
ZWZhdWx0RmlsZU5hbWUpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjQxNwotICAgIHJldHVybiBkZWZhdWx0RmlsZU5hbWU7
CisgICAgcmV0dXJuIFN0cmluZyB7IGRlZmF1bHRGaWxlTmFtZSB9OwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjEx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50
cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0
UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVz
dFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9L
ZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4u
Y3BwCmluZGV4IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRp
YyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtl
eUNvZGUpCiB7CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToK
LSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwog
ICAgICAgICBjYXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOwor
ICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgot
ICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9z
OwogICAgICAgICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2Nr
IjsKKyAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJ
TjoKICAgICAgICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAg
ICAgICAgICAgcmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAg
ICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAg
ICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAg
ICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5E
OgotICAgICAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7
CiAgICAgICAgIC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAg
ICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAg
IGNhc2UgVktfRVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAg
ICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIi
X3M7CiAgICAgICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktf
RjU6Ci0gICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7
CiAgICAgICAgIGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1
cm4gIkY3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6
Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAg
ICAgICAgIGNhc2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJu
ICJGMTEiOworICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEy
OgotICAgICAgICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7
CiAgICAgICAgIGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAg
cmV0dXJuICJGMTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjE1OgotICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJG
MTUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAg
ICAgICAgcmV0dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAg
IGNhc2UgVktfRjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0
dXJuICJGMTgiX3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJG
MTkiOworICAgICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgot
ICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAg
ICAgICAgIGNhc2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAg
ICAgcmV0dXJuICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0
dXJuICJGMjIiOworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktf
RjIzOgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMi
X3M7CiAgICAgICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAg
ICAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAg
ICAgIHJldHVybiAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAg
IGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkhvbWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0
dXJuICJJbnNlcnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNh
c2UgVktfTEVGVDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1
cm4gIkxlZnQiX3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAi
UGFnZURvd24iOworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2Fz
ZSBWS19QUklPUjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJl
dHVybiAiUGFnZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0
dXJuICJQYXVzZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNl
IFZLX1NOQVBTSE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAg
ICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAg
ICAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwog
ICAgICAgICBjYXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAg
ICAgICAgICAgIHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9z
OwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAg
ICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJl
Y29tZXMgVSswMDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVy
biAiVSswMDdGIjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBl
cihrZXlDb2RlKSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIz
NDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0
cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRT
dHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0
cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxl
c1RleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMi
OworICAgIHJldHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3Ry
eVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdp
bi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0
ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24o
U3RyaW5nVmlldyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1p
bWV0eXBlTWFwOwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9m
aWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAi
dGV4dC9wbGFpbiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlv
bi9wZGYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0
c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgieG1sIiwgInRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRl
eHQveHNsIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9u
L3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0
aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNh
dGlvbi9yc3MreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJh
cHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmci
LCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1h
Z2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVn
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
dGlmZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImlt
YWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInR4dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBkZiJfcywgImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
cHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRt
bCJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAi
dGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3ht
bCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRt
bCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRp
b24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBs
aWNhdGlvbi9yc3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZl
Il9zLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJzdmciX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
anBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJf
cywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImlt
YWdlL3BuZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlm
ZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoIndtbCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoIndtbGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hM
KQotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQog
ICAgIFN0cmluZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2
ODVlZDk5MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3Rl
Ym9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcApAQCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBz
dGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVz
dWx0cywgY29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1h
dCA9PSB1cmxGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3Jt
YXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7Cisg
ICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNm
Rm9ybWF0ID09IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0
ID09IHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRl
eHQvcGxhaW4iKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBz
dGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVi
b2FyZEN1c3RvbURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3Rl
Ym9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAg
ICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFk
ZCgidGV4dC91cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRt
bCIpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9h
cmRUeXBlcy5hZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRv
bVBhc3RlYm9hcmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9h
cmQ6OnJlYWRPcmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3Ry
aW5nJiB0eXBlKQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1J
TUVUeXBlKHR5cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQp
CkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1f
ZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAot
ICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBh
c3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAt
NDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwg
Y29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhU
TUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRv
Q0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAg
IG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBj
Zmh0bWxEYXRhKTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNm
aHRtbERhdGEpOwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNl
dERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2Jh
bEZyZWUobWVkaXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRp
dGxlU3RyKQogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwu
aXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0
cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIs
ICIuVVJMIiwgdHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVS
TE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250
ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwog
ICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3
ICs3NjAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBh
c3RlYm9hcmRVUkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1M
IHRvIGJlIGFibGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5r
CiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hh
cj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVS
TC51cmwsIHRpdGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01h
cmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAg
ICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBp
ZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAg
ICAgICAgICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJl
YWRpbmdQb2xpY3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShD
Rl9URVhUKSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRM
RSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBUaGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTgg
b3IgZXZlbiBXaW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAg
ICAgICAgICAgdGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRh
KSk7CisgICAgICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4o
R2xvYmFsTG9jayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7
CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC05NTAsNyArOTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVz
Y3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxG
cmVlKG1lbU9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5z
ZXJ0KCIuIiwgMCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRo
ID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRl
bnNpb24sIGZhbHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5
Niw3ICsxMDk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2Jq
ZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRh
dGE7Ci0gICAgbWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9D
RkhUTUwobWFya3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRp
dW0geyB9OwogICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNi
ZTJkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZv
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5k
b3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAg
ICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93
c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5k
b3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dz
IENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNl
IFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1
cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4g
IldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBX
aW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAi
V2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5k
b3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4
IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4w
IjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0g
V2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4g
ZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVy
KG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBt
aW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAg
c3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0
ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAg
cmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChw
cm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQot
ICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsg
eDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJD
SElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAg
IHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgy
OWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3
IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAg
ICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFs
c2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6
OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVu
dDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJl
dmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFu
ZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6
Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlm
ICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJy
b3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0g
ZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3Nh
Z2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1
Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZv
aWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3Vs
dCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25z
ZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2
YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1
bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3Vs
dDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1
OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lk
IChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4
dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAg
ICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdl
dE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwo
Q29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3Np
bmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93
c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7
CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChD
b21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVj
dChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAg
ICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3Np
bmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBh
dXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3
aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5k
b3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09y
aWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5k
b3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUt
PnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1Np
emUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2lu
ZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAg
ICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAg
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1Np
emUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJz
ZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0
YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmls
ZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAg
ICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRz
LT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwog
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRp
YyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24o
ZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNl
KCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAg
ICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFz
QXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBs
b2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRv
IHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNl
dFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50
SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1
bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmco
KSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9u
KGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVu
dC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcg
KzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1
cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7Igot
ICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5n
Q29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAg
LTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBh
dXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3Vs
dC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxp
dGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJm
dW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBk
b2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAg
ICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAt
MjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3Ry
aW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAg
ICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxl
bmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBp
ZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAg
ICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUn
LCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAg
ICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAg
IGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAg
IGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0
cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+
IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAg
ICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmpl
Y3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNv
b2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJf
cykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21h
aW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVh
bigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29y
KGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29v
a2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNv
b2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJz
YW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tp
ZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29y
KCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCAr
MjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJj
ZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVu
c3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFs
dWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJ
bnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25T
b3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2gg
KGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgot
ICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2Fz
ZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJj
ZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNh
c2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAg
ICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3Vj
aDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3Vj
aCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJu
ICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4g
IktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0
U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJl
dHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3Jp
Z2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBl
KFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBj
YXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdw
b3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmln
aW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJl
dHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6
Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50
IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElO
U1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYg
KGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERS
IikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0
U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBp
ID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltp
XTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBd
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5n
ID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBj
aGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0p
OwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3Ry
aW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNl
cmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAo
IXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0
LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94
eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29j
a3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2Jq
ZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFs
aWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAg
ICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVy
c2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0
LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNp
b25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIs
MzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9y
PENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMu
c2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFi
aWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJl
aGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5k
IG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJl
aGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBu
b3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
dW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2
aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJp
bmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9y
Il9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVf
b3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9h
ZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3Ry
YXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFs
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRT
dHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIi
X3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2Fw
YWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0z
MiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVz
KGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBp
ZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisg
ICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9z
LCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRk
cikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0
OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9y
dCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0
UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJn
ZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2Vy
KHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBv
cnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJT
b2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAK
aW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJl
cXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50Jiwg
Q29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9u
c2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11
dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9y
bWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3Jt
YXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNl
KSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0K
aW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6
Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNv
bnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRp
c2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0
aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24g
ZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFW
YWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRl
eHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNv
cHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBz
dG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JT
U0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEz
OgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6
Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2Fz
ZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAg
ICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6
CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRl
eCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBA
IGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRo
b2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
K2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcg
Kik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBj
cmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0
IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJl
c0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBp
ZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmluZzp3aXJlXSA9
PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobG9jYWwu
bGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3RoICE9IHdpcmUu
bGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBs
b2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAgY2hhciB3aXJl
VHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewot
ICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFi
bGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYgc3RyY2hyKCJC
YyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBhdXRvIG1hcENo
YXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8vIGBib29sYCBh
bmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICByZXR1cm4gYyA9
PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBsb2NhbC5s
ZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXSkgIT0gbWFw
Q2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTcwLDkg
Kzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVP
YmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBm
b3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5n
IHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBT
dHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVd
Ll90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1
cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1l
dGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4
Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBu
b3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUo
c2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVP
YmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0
UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0
UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2Nv
bCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGlj
IE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNl
bGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1p
bmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9w
cm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0
cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25h
dHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAg
ICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGlu
ZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0
aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0
YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQot
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0
YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJs
b2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClf
aW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90
ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJl
V2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90
eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5
QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3Is
IGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2ln
bmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51
dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxv
Y2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBp
bnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsK
ICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJl
cGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRh
KCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBO
U0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWdu
YXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0
dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9k
Oihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9j
YXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBj
aGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0g
ICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJs
b2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVP
YmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
KSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2Fw
dHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJl
bW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9j
YXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9i
amVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9i
amVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
CmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBA
IC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZp
Y2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxz
QmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRv
U3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cu
dXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAg
ICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJp
Il9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9z
dGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMg
U3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAg
ICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50
XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0
bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVi
cm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBz
Oi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJl
dHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90
cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4
IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0K
QEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5
c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9h
cl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0
aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1
dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmln
Z2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1l
bnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMw
NTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUs
NyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1l
bnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBD
TU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNl
Iik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0
dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUw
MmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2Vi
RnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlm
IChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJs
ZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAt
Ym91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERv
bWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9M
T0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkg
KzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29t
bWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEi
LCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAg
IlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBs
YXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAot
ICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJL
ZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIi
LAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9z
LCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2
NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xl
SXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAg
ICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJf
cywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVy
cywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0g
ICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1
Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcg
QEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hv
dWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAi
aVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0
aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50
V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24u
bW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25z
dCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIo
KQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZP
Uk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24n
dCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4g
c291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIg
cmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFw
cENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEki
OworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRp
dFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3Ry
aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEy
NjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2
LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVu
dCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5
U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0g
ICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3Vt
ZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxs
cHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVl
cnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygp
ID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZSht
ZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAx
MDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUs
NyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhT
dHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNs
aWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3Ry
aW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAK
IGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5n
VmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9j
YXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVh
MzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNv
dXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9z
ZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0
b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5n
IFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJy
aWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3
ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJp
bmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNw
bGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9q
aSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFt
aWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJl
c291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBj
b25zdCBXVEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVz
b3VyY2U6On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQx
MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAg
LTM0LDEzICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRP
YmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7
CiB9CiAKIFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0K
IAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Ny
aXB0V29ybGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlu
bGluZSBXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3Js
ZD4mJiB3b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAK
ICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0
V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsK
IH0KIAogV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBA
IFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92
ZShtX3dvcmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0
V29ybGQ6OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Vj
dXJpdHlPcmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyAr
NDksMTMgQEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3Jp
Z2luKiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmln
aW4pCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlNlY3VyaXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0
eU9yaWdpbiJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4o
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2Vj
dXJpdHlPcmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4
YmI4MGEyZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1Zh
bHVlKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNl
cmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJp
YWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJp
YWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZh
N2Y2Ny4uMDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRS
ZW5kZXJlci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRS
ZW5kZXJlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVy
ZXIoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5k
ZXJlciJfcyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRS
ZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVy
Il9zKTsKIH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCmluZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3Bw
CkBAIC00NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2Vu
ZGVyKHNlbmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRl
SW5zdGFuY2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4u
NTA5OWJhMGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyAr
NDIsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQp
OwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
Il9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAg
LTM3LDEzICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0
IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
Q3JlZGVudGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlh
bCJfcyk7CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3Jl
ZGVudGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlh
bCJfcyk7CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUlu
c3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3Rl
Y3Rpb25TcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9u
U3BhY2UuY3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShj
b25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3Bh
Y2UocHJvdGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rp
b25TcGFjZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsK
IH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0
ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJl
c3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApp
bmRleCBhNWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmlu
ZyBsb2NhbGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkK
IFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNl
Ojp+V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJM
UmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFu
Y2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2Ug
LSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFu
Y2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8i
KSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJl
c291cmNlUmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5n
KCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcAppbmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwx
MyArMzUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNz
Q291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVy
biJfcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJM
UGF0dGVybigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVz
ZXJDb250ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4u
ZTU1YTI0MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcg
KzQ0Niw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2Vi
VmlldygpCkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2Vi
Vmlld0NvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXci
X3MpOwogfQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDEx
ICsxOTk1LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBB
UkFNIC8qbFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7
CiAgICAgICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRv
cigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBm
cmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAg
Y2FzZSBVbmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVu
ZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFu
ZCgiVW5kbyJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICBy
ZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAg
ICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAg
ICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2Vi
Vmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAg
ICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50
LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJw
cmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlm
IChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAg
ICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0
byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2
aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VM
VCBXZWJWaWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhl
Y3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09L
OwogfQogCkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0
XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0
Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8p
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IlBhc3RlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3
Ojpjb3B5VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVy
bCksICIiKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCks
IGVtcHR5U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVy
Ki8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1h
bmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgp
OwogICAgIHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViV29ya2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05
MCwxMSArOTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVh
dGVJbnN0YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJz
UHJpdmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUi
X3MpOwogfQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vy
c1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2
YXRlIl9zKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Ny
b3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1Ro
cmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTEx
MywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQog
CiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBB
U1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6
ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6
ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxF
UihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBA
IC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBs
ZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVw
bGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRp
ZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0x
IikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXIt
MS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0x
LTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEy
dSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMy
MzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZy
YW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAgICAg
bmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24o
cmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9uOiAn
ICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBl
bnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFz
cyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3NiwyNCBA
QCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5p
dGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBBU0NJ
SUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAg
Y2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVz
cG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9z
Y3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3Bv
bnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAg
ICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNo
KCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRj
aGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJv
bSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAi
LyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAg
ICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQs
IE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0g
fSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8
c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAg
ICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHRO
UyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29m
dFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIu
Z2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZf
dCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNw
b25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3Nj
cmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7
IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQo
XCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkp
KTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAg
ICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAor
ICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwog
ICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBA
QCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRl
ZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsK
LSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAg
ICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0
KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCld
XV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNz
UGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNF
KAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkg
ewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNF
IjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZh
dWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0
ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21l
c3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAs
NyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZl
bnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdl
KCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBA
QCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0
ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUg
fSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAg
ICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAg
ICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAog
ICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhw
ZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3Jp
ZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNl
T3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9u
LCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRl
ZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdl
cy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBm
dW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09V
UkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1p
c3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8i
X3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmln
dXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZh
dWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNz
aW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NE
T0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9D
KAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFt
ZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6
aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3Qg
Y2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNv
bnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5
PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERl
dmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTAp
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAi
L2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVU
ZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQg
Y2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6
OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAg
V2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBX
VEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmll
ciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBC
cm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1
LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50
Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBj
b25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1z
ZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcign
L3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJD
RSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVy
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0
ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBA
IC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3
LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09V
UkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBl
dmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJz
KQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91
bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWlu
Qnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIv
bWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3Jp
cHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dl
YnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykK
ICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29y
a2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9t
IGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZy
b20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3Vu
ZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRo
TG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWlu
Lmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7
IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0
Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwog
CiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxP
cmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJl
Z2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRp
b24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdp
dGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUz
YWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBA
IC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9m
Q29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28i
IH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBl
IiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1v
cmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZv
byJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVu
dC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNz
U3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2
ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAg
ICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwi
IH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJi
YXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50
LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3ki
X3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
cHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9u
UGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3Ry
IH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRv
ICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJh
dGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5h
bHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkx
NWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRl
bnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRN
b2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRp
b25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9k
ZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29u
dGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dT
aXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAg
ICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBh
aXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25E
ZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6
Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJL
aXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWly
PFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVs
ZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1
dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dp
dGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNv
bW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlcklu
dGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRv
IFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVy
byk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVm
ZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lv
bkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRD
b250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEki
LCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwg
QXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAg
ICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8g
dGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcs
IGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAg
ICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1v
YmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAi
c2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5n
ICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBF
Q1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEw
MDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRp
YyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0
cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsg
JmFuOEJpdFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBi
b29sPiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5n
LCB0cnVlIH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5j
b20iKTsKKyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAg
YnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484783"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456481</attachid>
            <date>2022-04-02 15:59:48 -0700</date>
            <delta_ts>2022-04-02 16:41:36 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>199134</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQu
LmQ0ODQxZGYzZGZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5j
cHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtb3VzZUV2ZW50KFBh
Z2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmluYWw7CiAKICAgICBGbG9h
dFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9yU2V0dGluZyhBU0NJSUxp
dGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVyYWN0aW9uUmVnaW9uPiBh
Y3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAgICAgICAgU3RyaW5nIGtl
eTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFsdWU7CisgICAgICAgIEFT
Q0lJTGl0ZXJhbCBrZXkgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBBU0NJSUxp
dGVyYWwgbmFtZSB7IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpIH07CisgICAgICAgIGJvb2wgdmFsdWUg
eyBmYWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0
aW5ncyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAK
LWJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3Ry
aW5nJiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGlu
ZyhBU0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBt
X3NldHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcg
KzQyNiw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zl
cmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFy
UmVjdChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7
CisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4
dC5zZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3Io
Q29sb3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdp
b25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwKIAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9u
IHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAh
dmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnRE
YXRhID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxE
YXRhIGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21v
dXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZv
aWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAo
Ym9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0
YSkgewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92
ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlm
IChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJj
bGlwIikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNo
Il9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhB
bHBoYSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAx
LCBoYXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhh
KDAuMDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAg
ICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9y
U2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9y
U2V0dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9y
Ojp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVu
dC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgw
KSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIElu
dGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIg
ZmxvYXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1
ZUZvclNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JT
ZXR0aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAg
ICAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVn
aW9uKCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9
ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2
YWx1ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BH
cmFkaWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndh
c2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91
bGRVc2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewog
ICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAg
ICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1
YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24o
KSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZh
bHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAg
ICAgICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50
RGF0YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0s
IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAg
ICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xv
cjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJh
Y2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29s
b3JXaXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZh
bHNlOwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JT
ZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAg
ICAgICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwog
CiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1
ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgp
LnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAg
ZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUg
KiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRp
dXM7CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50
KGhhc0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUy
Miw5IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVy
bGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNv
cj4gY3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisg
ICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0
ID0gbm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikp
CisgICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJz
b3JUb1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9u
KCkpOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojpt
b3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9t
b3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGlu
YXRlczsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYg
IXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRm
b3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0
aW5nKCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5k
ZXggNDc3NGNlMDhhNWI4Li5lMDE2ZjkyMWQ1ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQpAQCAtNjMsMTUgKzYzLDE1IEBAIGJvb2wgU2V0
dGluZ3NCYXNlOjpwbGF0Zm9ybURlZmF1bHRNZWRpYVNvdXJjZUVuYWJsZWQoKQogCiB2b2lkIFNl
dHRpbmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMoKQogewotICAgIHNldFN0
YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyIsIFVTQ1JJUFRfU0lNUExJ
RklFRF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFBy
b04iLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRG
YW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iLCBVU0NSSVBUX0hBTkdVTCk7Ci0KLSAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTZXJpZkZvbnRG
YW1pbHkoIlRpbWVzIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoIkhlbHZldGljYSIsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIlBpbmdGYW5nIFRDIl9zLCBVU0NSSVBUX1RSQURJVElPTkFMX0hBTik7CisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBTQyJfcywgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7
CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiJfcywgVVND
UklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7CisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJB
cHBsZSBTRCBHb3RoaWMgTmVvIl9zLCBVU0NSSVBUX0hBTkdVTCk7CisKKyAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0Rml4ZWRGb250
RmFtaWx5KCJDb3VyaWVyIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2VyaWZGb250RmFt
aWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNhbnNTZXJpZkZvbnRGYW1p
bHkoIkhlbHZldGljYSJfcywgVVNDUklQVF9DT01NT04pOwogfQogCiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEy
Li41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3
ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7
IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJB
Z2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50
VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcg
b3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1l
Rm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVy
c2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGlu
YXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
Z3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcg
QEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihB
dWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChn
X29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRl
LAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMs
ICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsK
IAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRp
b1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVh
dGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxl
ID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigi
RmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dy
YXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0
aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9P
RVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVy
YXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
QU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdp
ZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xs
b3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChB
U0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1F
OiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hh
cmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0
aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5k
ZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxh
ciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAg
ICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRo
ZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFk
blBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiBy
b3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRp
YyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJh
bnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6
Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhl
ZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJl
Y2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lz
aW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24o
dHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFu
c2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9y
bS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5t
MzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMiks
ICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAn
LCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBG
b3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAnICcsIEZvcm1h
dHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywgRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1i
ZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1zdGF0aWMgdm9p
ZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0
cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dD
b2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NS
R0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgpKQpAQCAtNzYy
LDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAKICAgICAvLyBQ
cmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBp
bmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9y
KGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVu
dCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihs
YXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJDb2xvciBpZiBu
ZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciIs
IENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBw
cmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywgQ0FDRkxheWVy
R2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQg
bWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMg
PSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAK
aW5kZXggYjkzYmMzNGNjNGQ0Li4xZjUxNjkxZWY5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKQEAgLTM0MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFtaWx5TmFt
ZVN0cmluZ0Zyb21GYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJldHVybiBm
YW1pbHk7CiAKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFt
ZXNJbmRleDo6U3RhbmRhcmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0
KEZhbWlseU5hbWVzSW5kZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJzZXJpZiI7
CisgICAgICAgIHJldHVybiAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1l
c0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAgICAgIHJl
dHVybiAic2Fucy1zZXJpZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsKICAgICBp
ZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6TW9ub3Nw
YWNlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICByZXR1cm4g
Im1vbm9zcGFjZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFt
aWx5TmFtZXNJbmRleDo6Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vyc2l2ZSI7
CisgICAgICAgIHJldHVybiAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5h
bWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAgICAgIHJl
dHVybiAiZmFudGFzeSI7CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lmIFBMQVRG
T1JNKEdUSykKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFt
ZXNJbmRleDo6U3lzdGVtVWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0ZW0tZm9u
dCIpCiAgICAgICAgIHJldHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlmCiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBGQ19WRVJT
SU9OIDwgMjEzOTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IDFkNmFlMmUxMmU3ZC4uZmQ5Zjc4ZTdkMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBB
dWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkK
IAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4g
Y29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwot
ICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9u
LmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFp
blRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5
NDJjZTIyNTQxLi4xMjA3YzM1YTExM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCkBA
IC02MTMsNyArNjEzLDcgQEAgc3RhdGljIGdib29sZWFuIHBhcnNlR3N0U3RydWN0dXJlVmFsdWUo
R1F1YXJrIGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIHsKICAgICBpZiAoYXV0
byBqc29uVmFsdWUgPSBnc3RTdHJ1Y3R1cmVWYWx1ZVRvSlNPTih2YWx1ZSkpIHsKICAgICAgICAg
YXV0byogb2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxKU09OOjpPYmplY3QqPih1c2VyRGF0YSk7
Ci0gICAgICAgIG9iamVjdC0+c2V0VmFsdWUoZ19xdWFya190b19zdHJpbmcoZmllbGRJZCksIGpz
b25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CisgICAgICAgIG9iamVjdC0+c2V0VmFsdWUoU3Ry
aW5nIHsgZ19xdWFya190b19zdHJpbmcoZmllbGRJZCkgfSwganNvblZhbHVlLT5yZWxlYXNlTm9u
TnVsbCgpKTsKICAgICB9CiAgICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCmluZGV4IDJkOWMwZTllNDUzOC4uYmQ2YmU2ZjdhNjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMTc2
LDcgKzE3Niw3IEBAIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBSZXN1
bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENoZWNr
SGFyZHdhcmVDbGFzc2lmaWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsKICAg
ICAgICAgZm9yIChHTGlzdCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBmYWN0
b3JpZXMgPSBnX2xpc3RfbmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBmYWN0
b3J5ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+ZGF0
YSk7Ci0gICAgICAgICAgICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2dl
dF9tZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAgICAg
ICAgICBTdHJpbmcgbWV0YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YShm
YWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1dG8g
Y29tcG9uZW50cyA9IG1ldGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29tcG9u
ZW50cy5jb250YWlucygiSGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdIYXJk
d2FyZSA9IHRydWU7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNj
YW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIK
ICAgICB9CiAKICAgICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFzRWxl
bWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIsICJ2
aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZ
ZXMpOwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3VwcG9y
dGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29kZXJB
dmFpbGFibGUpIHsKKyAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlw
ZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYmIGF2
MURlY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21T
dHJpbmcoImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAg
ICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2Fy
ZSk7CkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6Omlu
aXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAgICB9
CiAKLSAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENv
bmZpZ3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3VwcG9y
dGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywg
ImF1ZGlvL21wNCJfcyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAgICBt
X2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
M2MwZDhmNzNjNDJiLi43ZWJiYTQzMjJlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmNyZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5p
c1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3Bs
YXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVs
ZW1lbnQqIGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJF
TEVBU0VfQVNTRVJUKGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcg
KzE3MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2Fn
ZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciht
ZXNzYWdlLCAmZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJS
T1IoIkVycm9yICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3Vy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVy
ci0+bWVzc2FnZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3Nh
Z2UgfTsKIAogICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5
OwogICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJP
UiwgR1NUX1NUUkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0
cnVjdHVyZSwgImh0dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNU
KHBpcGVsaW5lKCksICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQs
IHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVj
dHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJM
IHVybCB7IHVyaSB9OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9
OwogICAgICAgICAgICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1
cmwpKTsKIAogICAgICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyAr
MjEyNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVP
ZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9
IG51bGxwdHI7CiAgICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdf
VElUTEUsICZ0aXRsZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5z
ZXRDb250ZW50KHRpdGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZy
b21VVEY4KHRpdGxlKSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmNvbmZpZ3VyZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19v
YmplY3Rfc2V0KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5n
ZXQoKSwgbnVsbHB0cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25m
aWd1cmVkIGZpbGUgZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3du
bG9hZFRlbXBsYXRlLmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0
cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOwor
ICAgIFN0cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdl
dCgpIH07CiAgICAgcHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5y
ZXBsYWNlKCJYWFhYWFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxi
YWNrKE1lZGlhUGxheWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwog
ICAgIGdfb2JqZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxv
Y2F0aW9uIiwgJmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5M
SUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAg
ICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChk
b3dubG9hZEZpbGUuZ2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVu
bGluayBtZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmls
ZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBA
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAg
ICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQg
dXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBp
dC4KICAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/
IFVSTCgpIDogbV91cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9j
YXRpb24pOworICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xv
Y2F0aW9uIH0pOwogCiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7
CiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAm
cGxheWJpblVybFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJs
IHsgcGxheWJpblVybFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmlu
ZyB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09
IG5ld1VybCkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxh
eWJpbiBhbHJlYWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25z
dCBVUkwmIHVybCkKIAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgp
OwogICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVk
aWEtcGxheWVyIjsKKyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAg
IGNvbnN0IGNoYXIqIHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9j
b2xJcygibWVkaWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyAr
MzkxOCw3IEBAIEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0
RGF0YUZyb21Qcm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIq
IGRhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24o
ZXZlbnQuZ2V0KCksICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAg
ICAgICAgIGluaXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAg
ICAgICAgaW5pdERhdGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRh
IH0pOwogICAgICAgICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5U
X1NFUU5VTShldmVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25F
dmVudChHc3RFdmVudCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlE
ID0gbnVsbHB0cjsKICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3Rf
ZXZlbnRfcGFyc2VfcHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXRE
YXRhLCBudWxscHRyKTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRL
ZXlTeXN0ZW1VVUlELCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRl
cmVkKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThh
MzAxYzY3Li4zMmVkM2FlOGIyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmgKQEAgLTQ3MSw3ICs0NzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJv
Y2Vzc1RhYmxlT2ZDb250ZW50cyhHc3RNZXNzYWdlKik7CiAgICAgdm9pZCBwcm9jZXNzVGFibGVP
ZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqKTsKIAotICAgIFN0cmluZyBlbmdpbmVEZXNjcmlw
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiOyB9CisgICAgU3RyaW5n
IGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciJf
czsgfQogICAgIGJvb2wgZGlkUGFzc0NPUlNBY2Nlc3NDaGVjaygpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIGJvb2wgY2FuU2F2ZU1lZGlhRGF0YSgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRl
QmFzZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKaW5kZXggZGNhMmMyMWZkNjMwLi4w
M2VkYWM4YzhlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdldExhbmd1YWdlQ29kZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAg
IFN0cmluZyBsYW5ndWFnZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0Vf
Q09ERSwgbGFuZ3VhZ2UpKSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3Vh
Z2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1
YWdlID0gU3RyaW5nIHsgZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3Vh
Z2UudXRmOCgpLmRhdGEoKSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sg
JWQncyBsYW5ndWFnZSBjb2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVl
ID0gbGFuZ3VhZ2U7CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMK
ICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0
X2dldF9zdHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAg
ICBHU1RfREVCVUcoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdW
YWx1ZS5nZXQoKSk7Ci0gICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZh
bHVlID0gU3RyaW5nVHlwZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1l
TWV0YWRhdGFHU3RyZWFtZXIuY3BwCmluZGV4IDg5NDc1NDA1YzgwOS4uZDdiZTgwNTE4ZWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlk
ZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAt
MTIzLDcgKzEyMyw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1l
bnQoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdl
dCgpLCBwcm9iZVR5cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50
ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZp
ZWRCdWZmZXIsIG1ldGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVf
SU5GT19CVUZGRVIoaW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZv
KSA9IG1vZGlmaWVkQnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1l
dGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4odXNlckRhdGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAo
KSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9P
SzsKICAgICB9LCBnc3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAt
MTM1LDcgKzEzNSw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1l
bnQoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQogICAgICAgICAgICAg
cmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSBy
ZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0cmluZyBlbGVtZW50
TmFtZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9OwogICAgICAgICBhdXRv
IHZhbHVlID0gbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVtZW50TmFtZSk7CiAg
ICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6
bWFrZV9wYWlyKHZhbHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCkpKTsKICAgICAg
ICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUuLmQ2NDA0YzEyMGNhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNTUs
NyArMTU1LDcgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmln
dXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29k
ZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsK
KyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRp
ZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dl
YktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggNzU0YjNmZjQ4MzkwLi5kMGFkNjcyZDcx
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01
OTYsNyArNTk2LDcgQEAgc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoR1F1
YXJrIGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIAogICAgIEdTVF9ERUJVRygi
QXBwZW5kaW5nIGV4dHJhIGhlYWRlcjogXCIlczogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250
ZW50LmdldCgpKTsKICAgICBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxS
ZXNvdXJjZVJlcXVlc3QqPih1c2VyRGF0YSk7Ci0gICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZp
ZWxkKGZpZWxkTmFtZSwgZmllbGRDb250ZW50LmdldCgpKTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQ
SGVhZGVyRmllbGQoU3RyaW5nIHsgZmllbGROYW1lIH0sIFN0cmluZyB7IGZpZWxkQ29udGVudC5n
ZXQoKSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0
ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
ICE9IG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywg
IlBvc3RpbmcgdGFzayB0byByZXF1ZXN0IFIldSAlcyByZXF1ZXN0ZWRQb3NpdGlvbj0lIiBHX0dV
SU5UNjRfRk9STUFUICIgc3RvcFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbWJlcnMt
PnJlcXVlc3ROdW1iZXIsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSwgbWVtYmVycy0+cmVxdWVz
dGVkUG9zaXRpb24sIG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7Ci0gICAgVVJMIHVybCB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9OworICAgIFVSTCB1cmwgeyBTdHJpbmcgeyBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCkgfSB9OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsK
ICAgICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0
YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1lbWJl
cnMtPnJlZmVycmVyKTsKIAogICAgIGlmIChwcml2LT5odHRwTWV0aG9kLmdldCgpKQotICAgICAg
ICByZXF1ZXN0LnNldEhUVFBNZXRob2QocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSk7CisgICAgICAg
IHJlcXVlc3Quc2V0SFRUUE1ldGhvZChTdHJpbmcgeyBwcml2LT5odHRwTWV0aG9kLmdldCgpIH0p
OwogCiAjaWYgVVNFKFNPVVApCiAgICAgLy8gQnkgZGVmYXVsdCwgSFRUUCBBY2NlcHQtRW5jb2Rp
bmcgaXMgZGlzYWJsZWQgaGVyZSBhcyB3ZSBkb24ndApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0
ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ug
d2FudCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KICAgICBpZiAoIWdfYXNj
aWlfc3RyY2FzZWNtcCgibW92aWVzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEo
KSkKICAgICAgICAgfHwgIWdfYXNjaWlfc3RyY2FzZWNtcCgidHJhaWxlcnMuYXBwbGUuY29tIiwg
dXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFn
ZW50KCJRdWlja3RpbWUvNy42LjYiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KCJRdWlja3RpbWUvNy42LjYiX3MpOwogCiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0
aW9uIHx8IG1lbWJlcnMtPnN0b3BQb3NpdGlvbiAhPSBVSU5UNjRfTUFYKSB7CiAgICAgICAgIEdV
bmlxdWVQdHI8Y2hhcj4gZm9ybWF0ZWRSYW5nZTsKQEAgLTY4MSwxOSArNjgxLDE5IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0
ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvcm1hdGVkUmFu
Z2UucmVzZXQoZ19zdHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwg
bWVtYmVycy0+cmVxdWVzdGVkUG9zaXRpb24pKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChz
cmMsICJSYW5nZSByZXF1ZXN0OiAlcyIsIGZvcm1hdGVkUmFuZ2UuZ2V0KCkpOwotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFuZ2UsIGZvcm1hdGVk
UmFuZ2UuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6UmFuZ2UsIFN0cmluZyB7IGZvcm1hdGVkUmFuZ2UuZ2V0KCkgfSk7CiAgICAgfQog
ICAgIEFTU0VSVChtZW1iZXJzLT5yZWFkUG9zaXRpb24gPT0gbWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQZXJzaXN0ZW50IGNvbm5lY3Rp
b24gc3VwcG9ydCAlcyIsIHByaXYtPmtlZXBBbGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIp
OwogICAgIGlmICghcHJpdi0+a2VlcEFsaXZlKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIik7CisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xv
c2UiX3MpOwogCiAgICAgaWYgKHByaXYtPmV4dHJhSGVhZGVycykKICAgICAgICAgZ3N0X3N0cnVj
dHVyZV9mb3JlYWNoKHByaXYtPmV4dHJhSGVhZGVycy5nZXQoKSwgd2ViS2l0V2ViU3JjUHJvY2Vz
c0V4dHJhSGVhZGVycywgJnJlcXVlc3QpOwogCiAgICAgLy8gV2UgYWx3YXlzIHJlcXVlc3QgSWNl
Y2FzdC9TaG91dGNhc3QgbWV0YWRhdGEsIGp1c3QgaW4gY2FzZSAuLi4KLSAgICByZXF1ZXN0LnNl
dEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRhdGEsICIxIik7CisgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAi
MSJfcyk7CiAKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5zdXJlR1JlZihzcmMpLCByZXF1ZXN0ID0g
V1RGTW92ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJd
IHsKQEAgLTg4MSw3ICs4ODEsNyBAQCBjb25zdCBnY2hhciogY29uc3QqIHdlYktpdFdlYlNyY0dl
dFByb3RvY29scyhHVHlwZSkKIAogc3RhdGljIFVSTCBjb252ZXJ0UGxheWJpblVSSShjb25zdCBj
aGFyKiB1cmlTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIFVSTCB7IHVyaVN0cmluZyB9OworICAgIHJl
dHVybiBVUkwgeyBTdHJpbmcgeyB1cmlTdHJpbmcgfSB9OwogfQogCiBzdGF0aWMgZ2NoYXIqIHdl
YktpdFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGlu
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0Fw
cGVuZFBpcGVsaW5lLmNwcAppbmRleCBmZTQ3OWQ2YmI1MjcuLjFhZjBlNTU0ZDgyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGQ6OnR1
cGxlPEdSZWZQdHI8R3N0Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBlLCBGbG9hdFNp
emU+IEFwcGVuZFBpcGVsaQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBj
YXBzTWVkaWFUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNj
YW5uZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigpOwotICAgIGlm
ICghZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5cGUpKSB7Cisg
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBvcmlnaW5hbE1l
ZGlhVHlwZSB9KSkgewogICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6SW52YWxpZDsK
ICAgICB9IGVsc2UgaWYgKGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzLCBHU1RfVklE
RU9fQ0FQU19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6ZSA9IGdldFZp
ZGVvUmVzb2x1dGlvbkZyb21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9vcihGbG9hdFNp
emUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKaW5kZXggODMxYzJiMmM2ZWZiLi4yY2VjNjg0NjZmZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1T
RTo6bG9hZChjb25zdCBTdHJpbmcmKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmLCBNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQqIG1lZGlhU291cmNlKQogewotICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1h
a2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8v
IiA6IHVybC5zdHJpbmcoKSk7CisgICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVk
aWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iX3MgOiB1cmwuc3Ry
aW5nKCkpOwogICAgIEdTVF9ERUJVRygiTG9hZGluZyAlcyIsIG1zZUJsb2JVUkkuYXNjaWkoKS5k
YXRhKCkpOwogICAgIG1fbWVkaWFTb3VyY2UgPSBtZWRpYVNvdXJjZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAppbmRleCA3M2UyNDg0NWNiMzMuLjkxOTYzZDMyOTA5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnNHTE9wZW5HTC5jcHAKQEAgLTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9u
c0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICAvLyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhl
cgogICAgIC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2Js
aXQgYW5kIEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxp
dCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9mcmFtZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9
PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1w
bGUiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5H
TEVfaW5zdGFuY2VkX2FycmF5cyIpIHsKLSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAg
ICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFu
Y2VkIikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0
YW5jZWQiKSk7CisgICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9z
KSk7CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZm
ZXJfc1JHQiIpKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX3RleHR1cmVfc1JHQiJfcykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfZnJhZ19kZXB0aCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAg
IC8vIERlc2t0b3AgR0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlm
IChuYW1lID09ICJHTF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29s
IEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgLy8gSWYgR0xfQVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1
cmVfZmxvYXQgaXMgYXZhaWxhYmxlIHRoZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCwgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4
dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciBhcyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdM
X09FU190ZXh0dXJlX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0
IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdM
X09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zs
b2F0Il9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJl
X2Zsb2F0Il9zKTsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYg
KG5hbWUgPT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShH
VEspKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92
ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAg
ICAgfQogCkBAIC0xNDcsMTQgKzE0NywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxh
dGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9k
IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X3NoYWRlcl90ZXh0dXJlX2xvZCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBp
ZiAobmFtZSA9PSAiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmls
dGVyX2FuaXNvdHJvcGljIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBp
ZiAobmFtZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0g
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3
X2J1ZmZlcnMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfYnVmZmVycyJfcyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjMxLDcgKzIzMSw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVu
c2lvbnMoKQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNp
b25zR0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRp
YyBjb25zdCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VT
X3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1Zl
cnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9z
KTsKICAgICByZXR1cm4gc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2MuLjMw
NDBjZWJkYTlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAg
LTE3NCwxMiArMTc0LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAo
R0xzaGFkZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAg
ICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAg
IHJldHVybiAiIjsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3Jt
R0xPYmplY3QsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0
ZXJhdG9yIHJlc3VsdCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIp
OwogCiAgICAgaWYgKHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgp
KQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJl
c3VsdC0+dmFsdWU7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3Bl
bkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVj
dAogICAgIH0KIAogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291
cmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1
Li5iOTExMTAyNTk4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcApAQCAtMjY0
LDcgKzI2NCw3IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMRVM6OnBsYXRmb3JtU3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXQVJSQVlTSU5TVEFOQ0VE
QU5HTEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xF
IikpOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFBy
b2NBZGRyZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIikpOwogICAgICAgICAgICAg
bV9zdXBwb3J0c0FOR0xFaW5zdGFuY2VkQXJyYXlzID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlm
IChtYWpvclZlcnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRh
aW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChtYWpv
clZlcnNpb24oKSA+PSAzIHx8IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9pbnN0YW5jZWRfYXJyYXlzIl9zKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpKSB7CiAgICAgICAgICAgICBtX2dsVmVydGV4QXR0
cmliRGl2aXNvckFOR0xFID0gOjpnbFZlcnRleEF0dHJpYkRpdmlzb3I7CiAgICAgICAgICAgICBt
X2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdBcnJheXNJbnN0YW5jZWQ7CiAg
ICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0VsZW1l
bnRzSW5zdGFuY2VkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKaW5kZXgg
Y2FhYWI2ZmM1OThiLi4wYTZhODhjZjFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmNwcApAQCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAg
cmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3Rl
bmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVw
dGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAg
ICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3Rl
bmNpbCkgewotICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2ls
RXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWRE
ZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2ls
RXh0ZW5zaW9uU3RyaW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAg
IGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcp
KSB7CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvblN0cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2ls
IGlzIHRydWUuCiAgICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxz
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTIuLmFm
NzVlMGQwOTk5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3
ICs0MzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBh
bnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3Qg
YmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAv
LyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNo
YXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2
b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NH
TGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NH
TGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVp
KiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCog
ZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCmluZGV4IGMzNWIyZjBmMTVkOS4uN2I1NGEwMWYz
ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcApAQCAt
ODYsNyArODYsNyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhT
dGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogfQogCiBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
MTA4LDcgKzEwOCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9z
KGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAgICAgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9u
JiBleHRlbnNpb25zID0gZ2V0RXh0ZW5zaW9ucygpOwogICAgICAgICAvLyBVc2UgYSAyNCBiaXQg
ZGVwdGggYnVmZmVyIHdoZXJlIHdlIGtub3cgd2UgaGF2ZSBpdC4KLSAgICAgICAgaWYgKGV4dGVu
c2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQorICAgICAgICBp
ZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKSkK
ICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVO
Q0lMOF9FWFQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGludGVybmFsRGVwdGhTdGVuY2ls
Rm9ybWF0ID0gR0xfREVQVEhfQ09NUE9ORU5UOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMRVMuY3BwCmluZGV4IDgzYjliODZjNTMyNy4uM2FlNjJiZjZlZWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIAogICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJl
cXVpcmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVu
Y2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBz
dXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9v
bCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8
fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIl9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29s
IG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBs
ZXZlbCwgR0NHTGVudQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0
dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIl9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1
dGVzKCk7CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5z
aW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAo
YXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlz
YW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlh
bGlhcyA9IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4
YzZjMDUuLmM3YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIu
Y3BwCkBAIC0zNCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFw
cGVyRlBTQ291bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgw
KQogewotICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9X
X0ZQUyIpOworICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9T
SE9XX0ZQUyIpIH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBT
ZWNvbmRzKHNob3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYg
bV9mcHNJbnRlcnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKQEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmlt
YXRpb25TdGFydGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNs
aWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0
QW5pbWF0aW9uU3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAs
NyBAQCBzdGF0aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmR1bXBBZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRp
b25TZXQ8TGF5ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAo
b3B0aW9ucyAmIExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQot
ICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2Jh
Y2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0
U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9u
cyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggMzY4NzIyYTM2ZjU4Li5lOTU3ODI5MmIxZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29u
c3QgSW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQo
KQogewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4g
ImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQ
YXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3Li44ZDVjNDNkZTgzOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNTQsMTEgKzU0
LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAgcmV0dXJuIGlz
Q2xhc3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFzc2ljTW9kZV0g
IT0gVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0KIAotU3RyaW5n
IG9zTmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCkK
IHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFzc2ljUGhvbmUo
KSkKLSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1MiOworICAgICAg
ICByZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQogCiBzdGF0aWMg
U3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5t
bQppbmRleCA0NzU3NGZjNDVjODAuLmJlNDZlMWUwZWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQpAQCAtODM4LDcgKzgzOCw3IEBAIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKQogewogICAgIFdlYkFWUGxheWVyQ29udHJv
bGxlciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBsYXllckNvbnRyb2xsZXIoKTsKICAgICBp
ZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250cm9sbGVyLmV4dGVybmFsUGxheWJhY2tB
Y3RpdmUpCi0gICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nl
c3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsKKyAgICAgICAgZXh0ZXJuYWxQbGF5YmFj
a0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCiAgICAgICAgIG1f
dmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYwN2YzNjZiZjcyZi4uNGZh
ODJiYmRlMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNw
cApAQCAtMTYzLDcgKzE2Myw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxl
PiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgYXV0byBz
ZWxlY3RlZFRyYWNrcyA9IE1lZGlhUmVjb3JkZXJQcml2YXRlOjpzZWxlY3RUcmFja3MobV9zdHJl
YW0pOwogICAgIGF1dG8gbWltZVR5cGUgPSB0aGlzLT5taW1lVHlwZSgpOwogICAgIGlmICghbWlt
ZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFja3MudmlkZW9UcmFjayA/ICJ2
aWRlby9tcDQiIDogImF1ZGlvL21wNCI7CisgICAgICAgIG1pbWVUeXBlID0gc2VsZWN0ZWRUcmFj
a3MudmlkZW9UcmFjayA/ICJ2aWRlby9tcDQiX3MgOiAiYXVkaW8vbXA0Il9zOwogCiAgICAgR1NU
X0RFQlVHKCJDcmVhdGluZyB2aWRlbyBwcm9maWxlIGZvciBtaW1lLXR5cGUgJXMiLCBtaW1lVHlw
ZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgYXV0byBjb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1p
bWVUeXBlKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVy
UHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAg
ICAgICBpZiAoY29kZWNzLmNvbnRhaW5zKCJ2b3JiaXMiX3MpKQogICAgICAgICAgICAgYXVkaW9D
YXBzTmFtZSA9ICJhdWRpby94LXZvcmJpcyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmNv
bnRhaW5zKCJvcHVzIl9zKSkKLSAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1v
cHVzIjsKKyAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC1vcHVzIl9zOwogICAg
ICAgICBlbHNlIGlmIChjb2RlY3MuZmluZElmKFtdKGF1dG8mIGNvZGVjKSB7IHJldHVybiBjb2Rl
Yy5zdGFydHNXaXRoKCJtcDRhIik7IH0pICE9IG5vdEZvdW5kKQogICAgICAgICAgICAgYXVkaW9D
YXBzTmFtZSA9ICJhdWRpby9tcGVnLCBtcGVndmVyc2lvbj00Il9zOwogICAgICAgICBlbHNlIGlm
IChjb250YWluZXJUeXBlLmVuZHNXaXRoKCJ3ZWJtIikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNTE2OTA0
NWM3MDVmLi4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAyLDE1IEBA
IHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0cmluZ1Jl
ZiBkb21haW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7CiAgICAg
aWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVycm9yRG9t
YWluQ29jb2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7CisgICAg
ICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21h
aW4gPT0ga0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0gIkNGVVJM
RXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIl9zOwog
ICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAgICBtX2Rv
bWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lY
RXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluT1NT
dGF0dXMpCi0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAg
ICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChk
b21haW4gPT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZF
cnJvckRvbWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRvbWFpbldp
blNvY2siX3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApAQCAtMTkw
LDEzICsxOTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVhbUVycm9y
IGVycm9yKQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NGU3RyZWFt
RXJyb3JEb21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAgICBtX2Rv
bWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU1BPU0lY
RXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JE
b21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9t
YWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAg
ICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRleCA0NTli
ZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0y
MzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1
ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkg
ewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUu
aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06Omdl
dEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwu
ZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAg
ICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZp
bGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUo
KSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVt
YmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RG
aWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3Vy
bC5jcHAKaW5kZXggZTBlZWY2ODgwZjJiLi4wNzFiYjFhNDdiZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZv
Q3VybC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmljYXRlSW5m
bzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6dmVyaWZp
Y2F0aW9uRXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlfdmVyaWZ5
X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVybiBTdHJp
bmcgeyBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKSB9
OwogfQogCiBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5mbzo6bWFr
ZUNlcnRpZmljYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApp
bmRleCA2MTM2NTMxYjViMWMuLjZiMTZmYzM0ZGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODIsNyArMzgy
LDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNlYXJjaENv
b2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LAogCiAgICAgU3RyaW5nIHJlcXVlc3RQYXRoID0g
cmVxdWVzdFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocmVxdWVzdFBhdGguaXNFbXB0
eSgpKQotICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIjsKKyAgICAgICAgcmVxdWVzdFBhdGggPSAi
LyJfczsKIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVz
dFVybCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q29va2llVXRpbC5jcHAKaW5kZXggNmQzNDY4ZTQyMjI1Li4wNGU2NGNkMmM3YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAK
QEAgLTE4NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwm
IHVybCkKIAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlm
IChwYXRoLmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVy
biAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNoUG9zaXRp
b24gPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikK
LSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgcmV0dXJu
IHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmlu
ZGV4IDdiNDY4NTVhMDUxNS4uYTdhMTUyN2M4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTYxLDEw
ICs2MSwxMCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1
cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFzZUZpbGVu
YW1lKHVybC5sYXRpbjEoKSk7CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZChtX2Jhc2Vu
YW1lKTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAgIG1faGVh
ZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZpbGVuYW1l
LmFwcGVuZChtX2Jhc2VuYW1lKTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250
ZW50Iik7CisgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7CiB9CiAK
IEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5IEBAIGJv
b2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
cmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQp
IHsKICAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAgaGVhZGVy
RmllbGQuYXBwZW5kKCI6ICIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIl9zKTsK
ICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJfcyk7CiAg
ICAgICAgIENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRpbjEoKTsK
ICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVyRmllbGRM
YXRpbjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAgIG1fY2Fj
aGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
TWFuYWdlci5jcHAKaW5kZXggM2JkMmNjNzQyODZlLi43MDJjNWIzMWEwMWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFu
YWdlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpzZXRDYWNo
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIik7CisgICAgbV9jYWNoZURpci5hcHBlbmQoIi8iX3Mp
OwogCiAgICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpAQCAtMTM4LDgg
KzEzOCw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBpZiAobV9k
aXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBhdGgobV9j
YWNoZURpcik7Ci0gICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOworICAgIGF1
dG8gaW5kZXhGaWxlUGF0aCA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgImluZGV4LmRhdCJfcyk7
CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAgIEZpbGVT
eXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmls
ZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
CmluZGV4IDcyOGNiODhiZmIwNS4uM2U1ZDZmMWM5MGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQyOSwyNiAr
NDI5LDIzIEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVh
ZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTdHJp
bmcgaGVhZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFsdWUuaXNF
bXB0eSgpKSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhhdCB0aGlz
IGhlYWRlciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQoIjsiKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQodmFsdWUp
OworICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsKICAgICB9
CiAKLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVxdWVzdEhl
YWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92ZVJlcXVl
c3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRlciB3aXRo
IG5vIGNvbnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRpc2FibGVk
LiAKLSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoiKTsKLQot
ICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9IG1ha2VT
dHJpbmcobmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVy
KSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJp
bmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi5iMDkyNTZiMTk4M2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93
bmxvYWQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OndpbGxTZW5k
UmVxdWVzdCgpCiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlmIChzaG91
bGRSZWRpcmVjdEFzR0VUKG5ld1JlcXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAgICBuZXdS
ZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBN
ZXRob2QoIkdFVCJfcyk7CiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7
CiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cAppbmRleCAyYmFmOTQyZGJjOTYuLjdlYjA4NzBkNzk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01NTksNyAr
NTU5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBQVVQoKQogICAgIG1fY3VybEhhbmRsZS0+
ZW5hYmxlSHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8vIERpc2FibGUgdGhlIEV4cGVjdDogMTAw
IGNvbnRpbnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigi
RXhwZWN0Iik7CisgICAgbV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJFeHBlY3Qi
X3MpOwogCiAgICAgYXV0byBlbGVtZW50U2l6ZSA9IG1fZm9ybURhdGFTdHJlYW0uZWxlbWVudFNp
emUoKTsKICAgICBpZiAoIWVsZW1lbnRTaXplKQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3Q6OnNldHVwU2VuZERhdGEoYm9vbCBmb3JQdXRNZXRob2QpCiB7CiAgICAgLy8gY3Vy
bCBndWVzc2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMgd2Ugc3Bl
Y2lmeSB0aGUgaGVhZGVyCiAgICAgaWYgKG1fZm9ybURhdGFTdHJlYW0uc2hvdWxkVXNlQ2h1bmtU
cmFuc2ZlcigpKQotICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRy
YW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+YXBwZW5k
UmVxdWVzdEhlYWRlcigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiX3MpOwogICAgIGVsc2Ug
ewogICAgICAgICBpZiAoZm9yUHV0TWV0aG9kKQogICAgICAgICAgICAgbV9jdXJsSGFuZGxlLT5z
ZXRJbkZpbGVTaXplTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3JtRGF0YVN0cmVh
bS50b3RhbFNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKaW5k
ZXggMzg5N2UwMWM2ZDA3Li5iM2FiOGQxY2I2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1
CiAgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNw
b25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAgIGlmIChk
KCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAgICAgbV9y
ZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5z
ZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNlMDczNS4u
NGY4OWQ5NzNlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC00
MywxMyArNDMsMTMgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0Q29va2llSmFyUGF0aCgpCiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRGaWxlTmFtZSA9ICJjb29raWUuamFyLmRiIjsKICAg
ICBjaGFyKiBjb29raWVKYXJQYXRoID0gZ2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFUSCIpOwog
ICAgIGlmIChjb29raWVKYXJQYXRoKQotICAgICAgICByZXR1cm4gY29va2llSmFyUGF0aDsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llSmFyUGF0aCk7CiAKICNpZiBQTEFU
Rk9STShXSU4pCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGVmYXVs
dEZpbGVOYW1lKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTI0MTcKLSAgICByZXR1cm4gZGVmYXVsdEZpbGVOYW1lOworICAg
IHJldHVybiBTdHJpbmcgeyBkZWZhdWx0RmlsZU5hbWUgfTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5jMjBlYzhlNzIxMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3
b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNz
d29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZl
bnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcApp
bmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3Ry
aW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2Rl
KQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAg
ICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAg
ICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAg
ICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAg
ICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7Cisg
ICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAg
ICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAg
ICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAg
cmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBj
YXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0
dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAg
ICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAg
ICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0
dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNl
IFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAg
cmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
OgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAg
ICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJu
ICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1Ogot
ICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJG
NyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAg
ICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAg
ICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1
cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjEx
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAg
ICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAg
ICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVy
biAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
NToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9z
OwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNl
IFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAg
ICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAi
RjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoK
LSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNl
IFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJu
ICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAi
SW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZL
X0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJM
ZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VE
b3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktf
UFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4g
IlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAi
UGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19T
TkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAg
cmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAg
ICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAg
ICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAg
ICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAg
ICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAg
ICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAg
cmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVz
IFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUr
MDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5
Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdz
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5n
c1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcg
dXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1
cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAg
ICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQs
MzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmlu
Z1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlw
ZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3
aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQv
cGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRm
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlw
dCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInht
bCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hz
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRt
bCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24v
cnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImlt
YWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2
Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYi
LCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9p
Y28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYi
X3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9z
LCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
Y3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3Ms
ICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQv
aHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3ho
dG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRp
b24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywg
ImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3Zn
eiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJf
cywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJp
bWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9w
bmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBT
dHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5
OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGlj
IHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMs
IGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0g
dXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCkt
PmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAg
ICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1h
dCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBw
bGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3Bs
YWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpv
cHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRD
dXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJk
Ojp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAg
IGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRl
eHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsK
KyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlw
ZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0
ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpy
ZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAog
ICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlw
ZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAt
MzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFP
YmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJv
YXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3
ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0
IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7
CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRN
TCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJr
dXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1s
RGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxE
YXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRh
KGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVl
KG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0
cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxs
QVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcg
ZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVS
TCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRp
dGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0
cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBD
U3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYw
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJv
YXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBi
ZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAg
IGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRh
dGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJs
LCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAo
cGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAg
IEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6
OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAg
ICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5n
UG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVY
VCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JE
YXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2
ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAg
ICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOwor
ICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2Jh
bExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAg
ICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUw
LDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0
b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZSht
ZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgi
LiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZp
bGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9u
LCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyAr
MTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRl
TWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwot
ICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1M
KG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsg
fTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUyZGI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwy
NSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2Fz
ZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBD
RSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAu
TkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5k
b3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5k
b3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93
czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRv
d3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5
ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0Ljkw
Il9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7Cisg
ICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRv
d3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWls
eU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5v
cik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3Ip
OwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0YXRp
YyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVjdHVy
ZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJldHVy
biAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJvY2Vz
c29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAgICAg
ICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCJf
czsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVD
VFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICByZXR1
cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4MjlkODcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCB2
b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQogICAgIHBh
Z2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZhbHNlKTsK
IAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5n
bGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNp
bmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVByZXZpZXdM
b2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
Q29tbWFuZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1
bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRp
b25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0
byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVy
cm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2Jq
ZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9y
T2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNzYWdlKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNjNS4uZDcx
ZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFNl
c3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQmJik+
JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3Jp
cHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Il9z
KTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVy
cm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTksMTMg
KzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRleHQgPSBy
ZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAgICAgICAg
ICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmpl
Y3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQpIHsKICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1h
bmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29u
dGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdD
b250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBpZiAoIXVybCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1JlY3Qoc3Rk
OjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAogICAgICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAgICAgICAgICAgYXV0byB3
aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93
T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93T3Jp
Z2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2lu
LT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNl
dE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAgICB9CiAg
ICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93U2l6
ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5zZXRE
b3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dTaXplLT5z
ZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1Np
emUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOworICAgICAgICAgICAgd2lu
ZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAgICAgICAg
ICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dTaXplKSk7
CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgic2V0V2lu
ZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11dGFibGUg
ewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0ZpbGVVcGxv
YWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgogICAgIGF1
dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVz
aFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAg
IHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09
PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAgICAgICAg
cmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhhc0F0dHJp
YnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6
IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJh
bWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJp
bmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52
YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRWRp
dGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSCiAg
ICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRz
LT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwog
Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVt
ZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1lbnQucmVh
ZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3ICsxODcw
LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1l
bnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0dXJuIHRy
dWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIKLSAgICAg
ICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2luZ0NvbnRl
eHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBAIC0yMTcw
LDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgYXV0byBm
aWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1bHQucmVz
dWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmlsaXRpZXMo
KS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAgICAgICAgICAiZnVuY3Rp
b24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgZG9jID0g
ZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAgICAgICAi
ICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAgLTIxODYs
NyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAgICAgICAg
ICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5sZW5ndGgs
IGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgaWYgKGVs
ZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAgICAgICAg
ICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxlJywgbWVz
c2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAgICAgICAg
ICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAgICAgICAgICAgICBhdXRv
IGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBhcmd1
bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmco
KSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWls
dEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAgICAgYXV0
byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29va2llT2JqZWN0LT5z
ZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBjb29raWVP
YmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iX3MpKTsK
ICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9tYWluLnZh
bHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xlYW4oInNl
Y3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVj
dC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9vcihmYWxz
ZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNvb2tpZS5l
eHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBjb29raWUu
ZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNp
dGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29raWVPYmpl
Y3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9u
ZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzggKzI2OTEs
MzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3VyY2VTdGF0
ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5lbnN1cmUo
aWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZhbHVlOwog
fQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3QgSW5wdXRT
b3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uU291cmNl
VHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNoIChpbnB1
dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToKLSAgICAg
ICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNhc2UgSW5w
dXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UucG9p
bnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewogICAgICAgICBjYXNlIFBv
aW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91c2UiOworICAgICAgICAg
ICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91Y2g6Ci0g
ICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJldHVybiAiVG91Y2giX3M7
CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVybiAiUGVu
IjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJuICJLZXli
b2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJj
ZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOworICAgICAgICByZXR1cm4g
IldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6
VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2lu
dGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBQ
b2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3cG9ydCI7
CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpU
eXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOworICAgICAgICByZXR1cm4g
IlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50OgotICAg
ICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7CiAgICAg
fQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZlci9XZWJE
cml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTIuLjU5MTg0NzBiODVjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGludCBXZWJE
cml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIFVTRShJTlNQRUNU
T1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlmIChjb25z
dCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQUREUiIpKQot
ICAgICAgICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRFbnZWYXI7CisgICAgICAgIHRhcmdldFN0cmlu
ZyA9IFN0cmluZyB7IHRhcmdldEVudlZhciB9OwogI2VuZGlmCiAgICAgZm9yIChpbnQgaSA9IDEg
OyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3ZbaV07CkBA
IC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgcG9ydFN0cmluZyA9IFN0
cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAg
LTk3LDcgKzk3LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdGFyZ2V0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHRhcmdldFN0cmluZyA9
IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAK
QEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxp
emVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94
eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRW
YWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmpl
Y3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNvY2tzUHJv
eHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICghc29ja3NQcm94eSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYg
cHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1ZhbGlkKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAgICAgYXV0
byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24i
KTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRW
YWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJzaW9uVmFs
dWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcyLDMwICs4
NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3RvcjxDYXBh
YmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVzLnNldFdp
bmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRp
ZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21w
dEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsKKyAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAgICAgICAg
ICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3Rp
ZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5
Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywg
Imlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVlX29yKFBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJh
dGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5
OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRl
Z3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgh
Y2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
Q2FwYWJpbGl0aWVzU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxp
dGllc1NvY2tldC5jcHAKaW5kZXggMGY2Yzg3ODIwMDk1Li4yYjY3MTM0OWQzNWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAtMzIsMTIg
KzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGllcyhjb25z
dCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpTT046OlZh
bHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAgaWYgKG1h
dGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFyZ2V0QWRk
clZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQorICAgIGlm
IChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJfcywgdGFy
Z2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQog
ICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAgICBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9ydDsKLSAg
ICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiLCB0
YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQp
KQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9y
dCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJn
ZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQb3J0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0
LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCmluZGV4
IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tl
dC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUVFBSZXF1ZXN0
SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYsIENvbm5l
Y3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJlc3BvbnNlIHsK
ICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
LAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCIs
CisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0Il9z
LAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNwb25zZSkpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCmluZGV4
IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5k
RW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlC
dWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAg
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVk
IgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
IGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJl
VG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAg
IGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRpb24sIGNv
cHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBz
dG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0
dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8gIklmIGFu
eSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICgh
dmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6
ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4i
Ci0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJv
dG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAg
ICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAg
ICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NT
TFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0
dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAg
IGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlk
ZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFz
cyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29s
IG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5nICopOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0K
QEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRl
RW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJp
bmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxv
Y2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0gPT0gIE5T
T3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0
aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0
aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwu
bGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0g
ICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUg
PSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKLSAgICAg
ICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgot
ICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigiQmMiLCB3
aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBDaGFyYWN0
ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAgYW5kIGBz
aWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMgPT0gJ0In
ID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3Ro
OworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAg
IGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1hcENoYXJh
Y3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5ICs5Njcs
OCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0
RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0
OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1v
dGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5n
IGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlw
ZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkK
KyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RT
aWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRp
b24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNv
bXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVj
dG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0
UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lz
dHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnBy
b3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0
cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJp
dGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9j
b2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7
CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNT
RVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNp
Z25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25h
dHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0
TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0lu
ZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9r
ZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmpl
Y3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJp
bmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhP
YmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0
cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2Nr
U2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsK
KyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVy
ZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgp
LmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2ln
bmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2Nh
dGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUo
d2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAg
ICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sg
c2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2co
QCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJl
OiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29u
c3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAg
ICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tl
ciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAg
ICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3
aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0
UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewor
ICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVC
bG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVP
YmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
KSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RF
bmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRl
eCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEs
OCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9v
a3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VV
UkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmlu
ZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNl
Yy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29v
Z2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0
dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsK
KyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90
cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmlu
ZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAg
cmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYg
KFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0g
ICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3Rw
bD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3Np
bmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3
dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4g
Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNh
ZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2
NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0y
OTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5zeXN0ZW1Q
cmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVp
Y2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRy
aWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25f
dGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5
c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQs
IE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOwor
ICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1
dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJlMDJlYzhl
M2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1l
KiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJh
bWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8g
ZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5k
IGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4g
fSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBz
Y3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VS
Uk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMs
MjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQp
IHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAw
NUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
OjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAg
ICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJf
cywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVy
cywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAg
ICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIi
X3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxp
YzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAi
VSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisg
ICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAg
ICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywK
KyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVh
azsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0
cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2
b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9u
ZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5h
bWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhB
cHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmlu
ZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3Ry
aW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAg
ICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1B
QykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3Jl
YXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJj
ZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVy
bnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAg
ICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQu
VGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tl
bikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0cmluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZj
MTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBA
IC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBs
aW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6
Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJl
dHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5y
ZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9
LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZk
b2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFR
dWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2
NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAg
aW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5n
VmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6
OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYp
CiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBpbmxp
bmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcs
IFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9u
LCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJj
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2Uu
bW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3Zl
cnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2
YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4
U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVu
Y29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3
Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICop
c3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRp
bmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxp
c3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsK
KyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgi
QXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5n
cygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJj
ZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3Qg
V1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNl
Ojp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwx
MyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQog
CiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdv
cmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUg
V2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYg
d29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAg
KytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxk
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAK
IFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJT
Y3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93
b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxk
OjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEz
IEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1
cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmln
aW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2Vj
dXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5
T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBh
MmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgp
CiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNl
cmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxp
emVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXpl
ZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXpl
ZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcu
LjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4
dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVy
ZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVy
ZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4
dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIi
X3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVy
ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7
CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApp
bmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAt
NDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihz
ZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3Rh
bmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTli
YTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEz
IEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7
CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywx
MyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVk
ZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3Mp
OwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRp
YWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3Mp
OwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9u
U3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNl
LmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAK
IFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXgg
YTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9j
YWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJV
UkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldl
YlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3Bv
bnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0g
bmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28g
aXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5t
X3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0
cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsK
ICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
aW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1
LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJM
UGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3Mp
OwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEy
NDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYs
NyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXco
KQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdD
b3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsK
IH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5
NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAv
KmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAg
ICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5j
b21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUu
ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2Ug
VW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIiku
ZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVu
ZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJu
IGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6
OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlm
IChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBl
KCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtl
eUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5
RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8v
IFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVj
aWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVk
aXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUo
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0K
IApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVu
a25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcyku
ZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0
ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29w
eVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAi
Iik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0
eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJE
ZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldv
cmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEg
KzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5z
dGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsK
IH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJf
cyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1Ro
cmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUg
KzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAg
IEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAi
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0w
LTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAi
KSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNW
QykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMw
LDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBU
aGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50
YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgog
ICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRv
dGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMu
LmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRF
U1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykg
ewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUp
OwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBj
bGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNB
cHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRl
cmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRB
bGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3
IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwi
KTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhw
ZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5o
dG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2Vy
dmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVy
dCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQt
VHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZl
cicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3
IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0
aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0g
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlw
dD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsg
Ii8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNv
bnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9t
IHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dL
V2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRh
dGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2Vy
dmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
bmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+
J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
Il9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEo
ewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAg
ICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3Rh
dGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAK
ICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAg
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7
ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAK
ICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpA
QCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdp
blRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAg
ICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZh
bHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYy
MCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBo
YXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9u
IGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVT
VChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBw
SW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7
Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAi
L21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAv
LyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0
aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmll
bnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVu
dGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmly
ZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0
KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8
c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rp
b24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7
CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9u
U2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7
IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERh
dGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgog
fQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9D
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxo
dG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFs
bG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBz
Oi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwv
aWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIq
IGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0
bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VP
cmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAg
ICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFt
ZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9
IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBu
dWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFu
VXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVh
ckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
KCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBp
bml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjpp
bml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsK
KyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3Nl
clByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4
MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRy
b2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3Qg
Y2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBA
IC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0
ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1
LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycp
LnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgK
IAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQu
ZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsK
QEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9t
YWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVz
IH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4u
aHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJD
b250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0
ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRl
RGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAg
aXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBs
b2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVz
c2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBh
cHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdv
cmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2Fs
aG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1s
IiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVz
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAg
IFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lu
c107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lz
dGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3Ry
YXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1
Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9j
YWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNi
Li41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMx
Nyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQ
cm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0s
Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0
ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2lu
IiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3Mg
fSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlw
ZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywg
InNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNv
blByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNU
KFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXAp
CiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNl
cnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAg
eyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIv
ZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7
ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9
IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBl
Il9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAi
c2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Q
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0K
KyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBj
b25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9k
ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5t
bQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVs
ZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
K1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRN
b2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBz
aXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYg
KGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0Ns
YXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2
aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJl
dGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdh
dGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRp
b25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJ
IiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRh
aW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
Pj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9u
YWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJf
cyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdl
YlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0
TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRl
ID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5k
ZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZh
Y2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwog
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3Rp
dmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5k
bGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFp
blN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmls
XTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxp
Y2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8g
TWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBk
ZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAg
IGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUv
MTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBs
ZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNl
ckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RS
VUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcq
LCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhC
aXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4g
ZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1
ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7
CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFr
Rm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484789"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456483</attachid>
            <date>2022-04-02 16:25:55 -0700</date>
            <delta_ts>2022-04-02 16:47:13 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>201828</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0
Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQ
YWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxv
YXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZv
clNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlM
aXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4g
YWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBr
ZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBB
U0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlM
aXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZhbHVl
IHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0
dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQog
Ci1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0
cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRp
bmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDog
bV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3
ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92
ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVh
clJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkg
eworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lv
biB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24gfHwg
IXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRpZW50
RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFs
RGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9t
b3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2
b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0g
KGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERh
dGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1v
dmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBp
ZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygi
Y2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2Fz
aCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRo
QWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBo
YSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsK
ICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xv
cjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEo
MCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJ
bnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3RleHBy
IGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9y
U2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAg
ICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJl
Z2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQg
PSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYg
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9w
R3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3
YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hv
dWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXApIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0
dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9u
KCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2
YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdS
ZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVu
dERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29s
b3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAgICBi
YWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNv
bG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBm
YWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9y
U2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ry
b3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAg
ICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsK
IAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
IGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVu
dChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1
MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3Zl
cmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJz
b3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQor
ICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JUb1Nl
dCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIp
KQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vy
c29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nv
b3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlv
bigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6
bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1f
bW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRp
bmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVudC50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYm
ICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0
dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmlu
ZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNl
dHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBT
ZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4p
OwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBM
SUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQ
cm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhl
ZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250
RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFN0
YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4p
OworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVT
Q1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
QXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9u
dEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9udEZh
bWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgx
Mi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUg
eyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2Vy
QWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2Vu
dFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFt
ZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1Zl
cnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NBU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxlUmF0
ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0aGlz
LCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRyKSk7
CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVk
aW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3Jl
YXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJs
ZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1
cmF0aW9uID0gNV9zOwogCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9s
bG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwo
QVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhN
RTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNo
YXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3Rpbmcg
dGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmlu
ZGV4IGQ5ZDM2NzQxODNhOS4uZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5oCkBAIC0zNTMsNyArMzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3Vs
YXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAg
ICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0
aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRo
U3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZv
aWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4
dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVh
ZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xz
aXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1
ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSog
cm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0
aWMgdm9pZCBwcmludFRyYW5zZm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRy
YW5zZm9ybTNEJiB0cmFuc2ZvcgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFBy
ZWNpc2lvbih0cmFuc2Zvcm0ubTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm0yMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTI0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZv
aWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBT
dHJpbmcmIGxhYmVsLCBDR0NvbG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENH
Q29sb3JSZWYgY29sb3IpCiB7CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9T
UkdCQUxvc3N5KGNvbG9yKSk7CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2
MiwxMCArNzYyLDEwIEBAIHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVp
bGRlciwgY29uc3QgUGxhdGZvcm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8g
UHJpbnQgYmFja2dyb3VuZENvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwg
aW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xv
cihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRl
bnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3Io
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYg
bmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3Ii
LCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAg
cHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXll
ckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50
IG1hc2tzVG9Cb3VuZHMgaWYgbmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRz
ID0gbGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJl
ZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5h
bWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4g
ZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5h
bWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYi
OworICAgICAgICByZXR1cm4gInNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFt
ZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICBy
ZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAg
aWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9z
cGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJu
ICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZh
bWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUi
OworICAgICAgICByZXR1cm4gImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlO
YW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiOworICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFU
Rk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5h
bWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZv
bnQiKQogICAgICAgICByZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0g
ICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVS
U0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZkOWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
QXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2Fwcygp
CiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+
IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsK
LSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlv
bi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2
OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApA
QCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVl
KEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1
dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJlVmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAg
IGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEp
OwotICAgICAgICBvYmplY3QtPnNldFZhbHVlKGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBq
c29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5v
bk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAppbmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3
Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVz
dWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAg
ICAgICAgIGZvciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFj
dG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9yaWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFj
dG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRh
dGEpOwotICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9n
ZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAg
ICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEo
ZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRv
IGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBv
bmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikpIHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFy
ZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
CiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0Vs
ZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAi
dmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6
WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBv
cnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVy
QXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5
cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBh
djFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9t
U3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAg
ICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2Rl
ckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5h
ZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdh
cmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpp
bml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAg
IG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAg
fQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChD
b25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBv
cnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2Rpbmcs
ICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAg
bV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4
IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdv
cmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
OjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAgIGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+
aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9w
bGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RF
bGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBS
RUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwogICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3
ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3Nh
Z2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3Io
bWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VS
Uk9SKCJFcnJvciAlZDogJXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBl
cnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNz
YWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0
eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJS
T1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNfTk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVz
c2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShz
dHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBIVFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFU
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1
Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVS
TCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0g
fTsKICAgICAgICAgICAgICAgICBtX29yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
dXJsKSk7CiAKICAgICAgICAgICAgICAgICBpZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcg
KzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxl
T2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUg
PSBudWxscHRyOwogICAgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFH
X1RJVExFLCAmdGl0bGUpOwogICAgICAgICBpZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+
c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAgICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpm
cm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAgICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZlcihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdf
b2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUu
Z2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29u
ZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBsYXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBT
dHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsK
KyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5n
ZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxvYWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgu
cmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0KIApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxs
YmFjayhNZWRpYVBsYXllclAKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsK
ICAgICBnX29iamVjdF9nZXQocGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1s
b2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVO
TElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7Cisg
ICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgo
ZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1
bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZp
bGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAg
ICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50
IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5kIHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8g
aXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0gZ3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikg
PyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xv
Y2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdM
b2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3Ry
OwogICAgICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwg
JnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVy
bCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsKKyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJp
bmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0gfTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9
PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBs
YXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGlyZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29u
c3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVsZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQo
KTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1wdHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1l
ZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1lbnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAg
ICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRpYVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3Rv
Y29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVkaWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcg
KzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5p
dERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UoR3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVy
KiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAgICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9u
KGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAg
ICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAg
ICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0
YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVO
VF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAz
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9u
RXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAgIGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJ
RCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVyKiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0
X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0
RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50
S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsKKyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50
ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAog
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4
YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBy
b2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxl
T2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3Jp
cHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmlu
ZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIi
X3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4u
MDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFt
ZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVy
OjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAg
ICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdF
X0NPREUsIGxhbmd1YWdlKSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1
YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5n
dWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1
YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNr
ICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0
YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1
ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdT
dHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBT
CiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlz
dF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAg
ICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFn
VmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2
YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFt
ZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1Zp
ZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAg
LTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVt
ZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5n
ZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2lu
dGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlm
aWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZpZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JF
X0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAgICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5m
bykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVz
LnNldChyZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdz
dF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBt
ZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1w
KCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVf
T0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAg
LTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVt
ZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAg
IHJldHVybiBHU1RfUEFEX1BST0JFX09LOwogCi0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVu
dE5hbWUgeyByZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0
byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwog
ICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6
Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAg
ICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1
LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZp
Z3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAg
ICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2Nv
ZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7
CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5k
aWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3
MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAt
NTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdR
dWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUco
IkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29u
dGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8
UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJG
aWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRU
UEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQu
Z2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11
dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlv
biAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19H
VUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJz
LT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVl
c3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2
LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3Jp
Z2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7
CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1i
ZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAg
ICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9
KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29k
aW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11
dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdl
IHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2Fz
Y2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRh
KCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIs
IHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJB
Z2VudCgiUXVpY2t0aW1lLzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2Vu
dCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3Np
dGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBH
VW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11
dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJh
bmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIs
IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRl
ZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0K
ICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBv
c2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0
aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQi
KTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNs
b3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1
Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nl
c3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IElj
ZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAg
IHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwg
IjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVy
XSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNH
ZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3Qg
Y2hhciogdXJpU3RyaW5nKQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICBy
ZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3
ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxp
bmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9B
cHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0
dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBlbmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRT
aXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0g
Y2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFkQ2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlT
Y2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBp
ZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgewor
ICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxN
ZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3RyZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7
CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJ
REVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRW
aWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRT
aXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMyYjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0Uu
Y3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJN
U0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3Vy
Y2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBt
YWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjov
LyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1l
ZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0
cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxvYWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCku
ZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3Ro
ZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9i
bGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZm
ZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2Js
aXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUg
PT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2Ft
cGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FO
R0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAg
ICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3Rh
bmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5z
dGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8
fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJf
cykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0Ii
KSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJf
c1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVm
ZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAg
ICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBp
ZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9v
bCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0
dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0
dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3Rl
eHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJH
TF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9m
bG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVy
ZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlm
IChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0o
R1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
QVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UK
LSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVf
dmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgog
ICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBs
YXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAg
aWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2Zp
bHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAg
aWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJh
d19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGlt
cGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRl
bnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5z
aW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09F
U192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNW
ZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJf
cyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4z
MDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBA
IC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYg
KEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAg
ICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAg
ICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9y
bUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+Ojpp
dGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVy
KTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQo
KSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSBy
ZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmpl
Y3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNv
dXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5
NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2
NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRz
RXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlz
SW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNF
REFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAg
IG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBp
ZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFq
b3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0
dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAg
bV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwog
ICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVt
ZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4
IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZm
ZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAg
IHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURl
cHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewog
ICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0
ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAg
ICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5n
KSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNp
bCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVs
c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5h
Zjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMs
NyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQg
YW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90
IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAg
Ly8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBj
aGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0
aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAg
dm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQq
IGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFm
M2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAg
LTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhT
dGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRo
U3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAg
LTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJP
cyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1v
biYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0
IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRl
bnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAg
aWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykp
CiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RF
TkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNp
bEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNp
emUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyBy
ZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3Rl
bmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYg
c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJv
b2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwg
fHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAvLyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9v
bCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQg
bGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVB
dHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmli
dXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVu
c2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYg
KGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRp
YWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKaW5kZXggYzhjYWM0
OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVy
LmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVyRlBTQ291bnRlcjo6VGV4dHVyZU1h
cHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDApCiAgICAgLCBtX2ZyYW1lQ291bnQo
MCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hP
V19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50IHsgZ2V0ZW52KCJXRUJLSVRf
U0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBtX2Zwc0ludGVydmFsID0g
U2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUoJm9rKSk7CiAgICAgaWYgKG9rICYm
IG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgwMjE4MDU1Li43NjY5YTExZGJhMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBj
bGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFz
dEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkw
LDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0
aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYg
KG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlQ29udGVudExheWVycykK
LSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9i
YWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4
dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlv
bnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OC4uZTk1NzgyOTJiMWUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAt
NjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNv
bnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJk
KCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCI7CisgICAgcmV0dXJu
ICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFjNy4uOGQ1YzQzZGU4Mzk1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTU0LDExICs1
NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2ljUGhvbmUoKQogICAgIHJldHVybiBp
c0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBfY2xhc3NpY01vZGVd
ICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3JpZ2luYWxQYWQ7CiB9CiAKLVN0cmlu
ZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgp
CiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgIWlzQ2xhc3NpY1Bob25l
KCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVybiAiaVBob25lIE9TIjsKKyAgICAg
ICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9uZSBPUyJfczsKIH0KIAogc3RhdGlj
IFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXllckNvbnRy
b2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAg
aWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNr
QWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tT
ZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAgICAgIGV4dGVybmFsUGxheWJh
Y2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsIGVt
cHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBt
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdmMzY2YmY3MmYuLjRm
YTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmls
ZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgIGF1dG8g
c2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tzKG1fc3Ry
ZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsKICAgICBpZiAoIW1p
bWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAi
dmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJh
Y2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJfczsKIAogICAgIEdT
VF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBlICVzIiwgbWltZVR5
cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50VHlwZSht
aW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5l
clByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAg
ICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAgICAgICAgIGF1ZGlv
Q2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5j
b250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyJfczsKICAg
ICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29k
ZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF1ZGlv
Q2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAgZWxzZSBp
ZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkw
NDVjNzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBA
QCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdS
ZWYgZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAg
IGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRv
bWFpbkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAg
ICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVS
TEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsK
ICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9k
b21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJ
WEVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9T
U3RhdHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAg
ICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAo
ZG9tYWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NG
RXJyb3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5X
aW5Tb2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5
MCwxMyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJv
ciBlcnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVh
bUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21h
aW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9k
b21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJ
WEVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9y
RG9tYWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRv
bWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5
YmYyYTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAt
MjM1LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkp
IHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxl
LmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpn
ZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJs
LmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAg
ICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChm
aWxlUGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVl
KCkpCiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51
bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0
RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5m
b0N1cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUlu
Zm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlm
aWNhdGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3Zlcmlm
eV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3Ry
aW5nIHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikg
fTsKIH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1h
a2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAK
aW5kZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4
Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hD
b29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9
IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1w
dHkoKSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0g
Ii8iX3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVl
c3RVcmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
CkBAIC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJM
JiB1cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBp
ZiAocGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1
cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0
aW9uID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24p
Ci0gICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVy
biBwYXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApp
bmRleCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwx
MCArNjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYg
dXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxl
bmFtZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNl
bmFtZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hl
YWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFt
ZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29u
dGVudCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQog
CiBDdXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBi
b29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5k
KSB7CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRl
ckZpZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7
CiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJG
aWVsZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwog
ICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7
CiAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxk
TGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2Nh
Y2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZU1hbmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2Fj
aGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9z
KTsKIAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4
ICsxMzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1f
ZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1f
Y2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBh
dXRvIGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3Mp
OwogCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZp
bGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNw
cAppbmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYg
KzQyOSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhU
VFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhl
YWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3Ry
aW5nIGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhp
cyBoZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7
CisgICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVl
KTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAg
fQogCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RI
ZWFkZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1
ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0
aCBubyBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxl
ZC4gCi0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0K
LSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtl
U3RyaW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRl
cikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3Ry
aW5nJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERv
d25sb2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2Vu
ZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hv
dWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3
UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIp
OwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5j
cHAKaW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcg
KzU1OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUt
PmVuYWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEw
MCBjb250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIo
IkV4cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0
Il9zKTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRT
aXplKCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1
cmxSZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1
cmwgZ3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNw
ZWNpZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5r
VHJhbnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJU
cmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVu
ZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNl
IHsKICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+
c2V0SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJl
YW0udG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmlu
ZGV4IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5k
bGVEZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRs
ZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBD
dQogICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVz
cG9uc2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAo
ZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3Bv
bnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUu
LjRmODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAt
NDMsMTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAg
ICAgY2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsK
ICAgICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7Cisg
ICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExB
VEZPUk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1
bHRGaWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAg
ICByZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIu
Y3BwCmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0z
NDAsMTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFy
eT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVy
c2lvbihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7
CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmlu
ZyB0bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVS
X2dldF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmlu
ZyB7IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9Owog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2Li5j
MjBlYzhlNzIxMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQ
YXNzd29yZEVudHJ5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tl
eUV2ZW50V2luLmNwcAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEw
MSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25l
ZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNl
IFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4g
IkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJD
b250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBW
S19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJu
ICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBj
YXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAi
V2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFS
OgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFy
Il9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOwor
ICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBj
YXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVy
biAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgot
ICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9z
OwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUi
OworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgot
ICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJG
MyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAg
ICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAg
ICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1
cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7
CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBj
YXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4g
IkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7Cisg
ICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAg
ICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBj
YXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEz
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAg
ICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVy
biAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
NzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9z
OwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAg
IHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNl
IFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAi
RjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAg
ICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAi
RjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6
Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9z
OwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAg
ICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAg
ICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwog
ICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAg
ICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAg
ICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAg
ICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAg
ICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAg
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAg
ICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19S
SUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJS
aWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNj
cm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19T
RUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4g
IlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAi
OworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0
aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAg
ICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0
b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNh
Li44MDdkNTcyMzQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBTdHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJp
bmcgYWxsRmlsZXNUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAi
YWxsIGZpbGVzIjsKKyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVU
eXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBl
UmVnaXN0cnlXaW4uY3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CkBAIC03NCwzNCArNzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9y
RXh0ZW5zaW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBtaW1ldHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vZmlsbCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgidHh0IiwgInRleHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAi
YXBwbGljYXRpb24vcGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGlj
YXRpb24vcG9zdHNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0
L2NzcyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhzbCIsICJ0ZXh0L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxp
Y2F0aW9uL3gtamF2YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJh
cHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIs
ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3Mi
LCAiYXBwbGljYXRpb24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFy
Y2hpdmUiLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgic3ZnIiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJz
dmd6IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAi
aW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBl
ZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInRpZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImljbyIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1h
Z2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJwZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInBzIl9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoImh0bWwiX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
Imh0bSJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9z
LCAidGV4dC94bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQv
eHNsIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gt
amF2YXNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGlj
YXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywg
ImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNz
Il9zLCAiYXBwbGljYXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
d2ViYXJjaGl2ZSJfcywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgic3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImpwZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImpwZWciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
bmciX3MsICJpbWFnZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywg
ImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFn
ZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28i
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYg
VVNFKEpQRUdYTCkKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRp
ZgogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZm
NmMzOGM4Li42Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhh
c0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0
cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3Jt
YXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmkt
bGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYg
KGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1h
dC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3Vs
dHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9z
KTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6
cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3Ry
aW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdp
bikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0g
ICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9h
cmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9z
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlU
b1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
KGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdE
YXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJk
VHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0
YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdl
dENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYg
dHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmpl
Y3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAg
aWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAg
ICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEp
OworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlT
dHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xv
YmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxF
RChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAg
ICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBB
U1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQu
CiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmws
IHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVt
UGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBT
dHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsg
IlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwog
CkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3Jt
YXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFz
IGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAg
VmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBh
c3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhU
TUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwg
ZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsK
ICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JE
YXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFp
blRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRB
dmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAg
IGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwg
bm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNv
ZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxM
b2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nh
c3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9j
ayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbElt
YWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAg
ICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0
ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwog
ICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRU
aXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDAp
IHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRh
YmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBh
c3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3Rv
cjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAg
IG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdN
RURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGVi
ZC4uZTE2NTMzYmUyZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUlu
Zm8uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5j
bHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC04NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0
cmluZygpCiAgICAgY2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBj
YXNlIFdpbmRvd3NDRTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJl
dHVybiAiV2luZG93cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVy
biAiV2luZG93cyBDRSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7
CiAgICAgY2FzZSBXaW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAg
ICAgICAgcmV0dXJuICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwog
ICAgIGNhc2UgV2luZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAg
ICByZXR1cm4gIldpbmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJl
dHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3Mg
OTg7IFdpbiA5eCA0LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJu
ICJXaW5OVDQuMCI7CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2
ZXJzaW9uID49IFdpbmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0g
ICAgcmV0dXJuIGZhbWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJp
bmc6Om51bWJlcihtaW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFq
b3IsICcuJywgbWlub3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSAr
MTUzLDExIEBAIHN0YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3Ry
aW5nIGFyY2hpdGVjdHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkp
Ci0gICAgICAgIHJldHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsK
ICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVS
RV9BTUQ2NCkKLSAgICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4g
IjsgV2luNjQ7IHg2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJP
Q0VTU09SX0FSQ0hJVEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQi
OworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEz
Li4wY2Y0MjQ4MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4
Niw3ICs1ODYsNyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdl
JiBwYWdlKQogICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JU
ZXN0aW5nKGZhbHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdM
b2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAg
IExlZ2FjeVByZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2NzYzY2EzLi44MzU5
NjliZmEzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDEx
IEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJl
c3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJj
b2RlIik7CisgICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9z
KTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVz
c2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9y
TWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICgh
ZXJyb3JNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1
MjQ2YmFhNjNjNS4uZDcxZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsy
MjgsNyBAQCB2b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENv
bW1hbmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9u
c2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9v
bGVhbigicmVzdWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9n
KSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENv
bW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93
c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0
Iik7CisgICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNl
T2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2lu
Z0NvbnRleHQpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVz
dWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVy
bCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8g
dXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBp
ZiAoIXVybCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNl
dFdpbmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiB5LCBzdAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAg
ICAgICAgICAgYXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAg
ICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAg
ICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAg
ICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAg
ICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAg
IHBhcmFtZXRlcnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikp
OwogICAgICAgICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAg
IGF1dG8gd2luZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3
aW5kb3dTaXplLT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAg
ICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAg
ICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOwor
ICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1
ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92
ZSh3aW5kb3dTaXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRv
QmFja2VuZCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVz
cG9uc2UpIG11dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVs
ZW1lbnRJc0ZpbGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAg
IGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0
cmluZygpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0K
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAg
ImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50
b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAg
ICAgICAgIiAgICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBl
bGVtZW50Lmhhc0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4g
eyAnZmlsZVVwbG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwog
CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJh
bWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJy
b3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lv
bjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZv
aWQgKENvbW1hbmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7
CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9K
U09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtd
ID0KKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAg
ICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVk
IHx8IGVsZW1lbnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpA
QCAtMTg3MCw3ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25z
dCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAg
ICAgICAgcmV0dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJu
IGZhbHNlOyIKLSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1l
dGVycyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5n
KCJicm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFs
dWUoKSk7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5
cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAg
ICAgICAgICAgYXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJl
c3VsdChyZXN1bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8
fCBjYXBhYmlsaXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNl
KSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAg
ICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAg
ICAgICAgICAiZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAg
IiAgICBsZXQgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAg
ICAgICAgICAgICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVt
ZW50OyIKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlz
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAg
ICAgICAgICAgICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVu
dC52YWx1ZS5sZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAg
ICAgICIgICAgaWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIK
ICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50
ZXJhY3RhYmxlJywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAg
ICAgICAgICAgICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAg
ICAgICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAg
ICAgICAgICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQp
LT50b0pTT05TdHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNP
Tjo6T2JqZWN0PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBj
b29raWUpCiAgICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAg
Y29va2llT2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNv
b2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIp
KTsKKyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFs
dWVfb3IoIi8iX3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBj
b29raWUuZG9tYWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3Qt
PnNldEJvb2xlYW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25s
eS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lv
biJfcywgIWNvb2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBp
cmVzIl9zLCBjb29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsK
KyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0
ZS52YWx1ZV9vcigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAg
LTI2OTEsMzggKzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6
aW5wdXRTb3VyY2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3Rh
dGVUYWJsZS5lbnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRl
cmF0b3ItPnZhbHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5
cGUoY29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBh
dXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAg
ICAgc3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlw
ZTo6Tm9uZToKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9z
OwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAo
aW5wdXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewog
ICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91
c2UiOworICAgICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVy
VHlwZTo6VG91Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJl
dHVybiAiVG91Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAg
ICAgIHJldHVybiAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAg
ICAgcmV0dXJuICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAg
Y2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOwor
ICAgICAgICByZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUo
UG9pbnRlck9yaWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9u
T3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBl
KSB7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0
dXJuICJWaWV3cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQ
b2ludGVyT3JpZ2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOwor
ICAgICAgICByZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBl
OjpFbGVtZW50OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVs
ZW1lbnQiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNl
L1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTIuLjU5MTg0
NzBiODVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02MSw3ICs2
MSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQog
I2lmIFVTRShJTlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5n
OwogICAgIGlmIChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9U
QVJHRVRfQUREUiIpKQotICAgICAgICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRFbnZWYXI7CisgICAg
ICAgIHRhcmdldFN0cmluZyA9IFN0cmluZyB7IHRhcmdldEVudlZhciB9OwogI2VuZGlmCiAgICAg
Zm9yIChpbnQgaSA9IDEgOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFy
ZyA9IGFyZ3ZbaV07CkBAIC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1l
bnQoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAg
cG9ydFN0cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKQEAgLTk3LDcgKzk3LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVu
dChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAg
IHRhcmdldFN0cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQ
cm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAg
ICAgICAgaWYgKCFwcm94eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBw
cm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZh
bHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAg
ICBhdXRvIHNvY2tzUHJveHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICgh
c29ja3NQcm94eSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUw
LDcgKzQ1MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5
KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tz
VVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1ZlcnNpb24iKTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBw
cm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICgh
c29ja3NWZXJzaW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IApAQCAtODcyLDMwICs4NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNz
aW9uKFZlY3RvcjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2Fw
YWJpbGl0aWVzLnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dp
dGNoIChjYXBhYmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRp
c21pc3MiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
dW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2Vw
dDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2Nl
cHQiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBh
YmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJk
aXNtaXNzIGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3Rp
ZnkiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFj
Y2VwdCBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
X3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcjo6SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAg
ICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9t
cHRCZWhhdmlvciJfcywgImlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0
ZWd5LnZhbHVlX29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNh
c2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgIm5vbmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQ
YWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgIm5vcm1hbCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFBhZ2VMb2FkU3RyYXRlZ3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgImVhZ2VyIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmICghY2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKaW5kZXggMGY2Yzg3ODIwMDk1Li4yYjY3MTM0
OWQzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1Nv
Y2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0
LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNh
cGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAg
UmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFk
ZHI7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRB
ZGRyIiwgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdl
dEFkZHIpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFy
Z2V0QWRkciJfcywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5n
KHRhcmdldEFkZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFk
ZHI7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQg
dGFyZ2V0UG9ydDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0
OnRhcmdldFBvcnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRl
Z2VyKHRhcmdldFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJz
b2NrZXQ6dGFyZ2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUt
PmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQg
PSB0YXJnZXRQb3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9I
VFRQU2VydmVyU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJT
b2NrZXQuY3BwCmluZGV4IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2
b2lkIEhUVFBSZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRF
bmRwb2ludCYsIENvbm5lY3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3Bv
bnNlIHJlc3BvbnNlIHsKICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7
IGNoYXJzZXQ9dXRmLTgiLAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxp
ZCBIVE1MIGZvcm1hdCIsCisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlk
IEhUTUwgZm9ybWF0Il9zLAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92
ZShyZXNwb25zZSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFu
ZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYg
c291cmNlLCBjb25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNv
dXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2
YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+
Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29k
ZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJj
ZSwgY29uCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVu
c2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwg
ZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0
aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRp
b25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJh
dGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNv
cHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNv
CiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNm
aWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3Rp
bmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBl
cnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcg
c3RyaW5nRm9yU1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExT
UHJvdG9jb2wxMzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFBy
b3RvY29sQWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9z
OwogICAgIGNhc2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3du
IjsKKyAgICAgICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4
U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENv
ZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQs
NSArNDQsNSBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
LWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJik7Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICos
IE5TU3RyaW5nICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3Rl
T2JqZWN0Q29kZXIubW0KQEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGlj
dGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQp
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwp
CiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJp
bmc6d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
aWYgKGxvY2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0
aCAhPSB3aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQg
bGVuZ3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAg
IGNoYXIgd2lyZVR5cGUgPSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2ly
ZVR5cGUpIHsKLSAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50
ZXJjaGFuZ2VhYmxlLgotICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYm
IHN0cmNocigiQmMiLCB3aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
YXV0byBtYXBDaGFyYWN0ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAv
LyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAg
cmV0dXJuIGMgPT0gJ0InID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3Ro
ID0gbG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsg
aSsrKSB7CisgICAgICAgIGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6
aV0pICE9IG1hcENoYXJhY3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTk3MCw5ICs5NjcsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9u
KFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUp
CiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25F
eGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAot
ICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJp
bmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9k
U2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRo
b2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0
aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52
b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0Ojpt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNp
Z25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVP
cGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0
dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNl
bF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBs
eUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
X1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJk
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVP
YmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJl
bW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1
cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRl
eCkKK3N0YXRpYyBOU1N0cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9j
b2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVp
cmVkLCBub24taW5oZXJpdGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5j
b2RpbmcgPSBfcHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3Rv
ciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5
QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVn
ZXIgYgogCiAgICAgQVNTRVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RU
eXBlRW5jb2RpbmcpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAK
ICAgICBOU01ldGhvZFNpZ25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9k
U2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAg
ICBBU1NFUlQodGFyZ2V0TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNp
Z25hdHVyZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IHJldHVybiBbdGFyZ2V0TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1l
bnRJbmRleDpibG9ja0luZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBA
IC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0
aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJl
IHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCku
ZGF0YSgpXS5fdHlwZVN0cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1
cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9u
LnNlbGVjdG9yLCBpKTsKKyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtO
U01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tT
aWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHBy
b3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVk
QmxvY2tTaWduYXR1cmUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2ln
bmF0dXJlKSB7CiAgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2
YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25h
dHVyZSIpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJl
c0FyZUNvbXBhdGlibGUod2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJl
KSkgewotICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRh
dGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51
dGY4KCkuZGF0YSgpLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkg
YmxvY2sgc2lnbmF0dXJlOiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2lu
dm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVP
YmplY3RJbnZvY2F0CiAgICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxs
Q2hlY2tlcj4gY2hlY2tlciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJl
cGx5SUQpOwotICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGlu
Z0NhcHR1cmVCbG9jayh3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFj
ZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAq
aW52b2NhdGlvbikgeworICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9y
d2FyZGluZ0NhcHR1cmVCbG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50
ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0
aW9uICppbnZvY2F0aW9uKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtb
V0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2Rl
ciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbQppbmRleCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdD
b2NvYS5tbQpAQCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFz
ZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3
YXJlRGV0YWlsc0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVy
IGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0
dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1
cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJp
IjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/
dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3Np
bmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDgg
QEAgc3RhdGljIFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0
ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsK
ICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3Zp
ZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9j
b21wbGFpbi5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0
dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJf
czsKKyAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9y
dF9lcnJvci8/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2Nv
YS5tbQppbmRleCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
cjo6ZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0
ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAg
IHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8s
ICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVt
UHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1
aWNrbG9va19idXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJv
bGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50
NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0
Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAg
ICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlv
bmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53
ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFj
YWEyYi4uZmJlMDJlYzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXIKICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0
aW9ucygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWls
cyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3Qg
aW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6
QXBwQm91bmREb21haW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+
bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAi
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4i
KTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQg
aW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdF
X1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2Vy
IHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpA
QCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBz
d2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6
VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAg
IEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3Ms
CisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAi
S2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAg
ICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2
NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAiYiJfcywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUr
MDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUki
X3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVy
cywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJf
cywgIktleUkiX3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1
IiwgInUiLAotICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1
Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQs
NyArNDMyNCw3IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwm
KSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1
aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFn
ZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFy
ZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRD
b25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2
LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewog
I2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8v
IFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNo
ZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJ
ZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAg
ICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9o
b3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRp
ZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYw
YzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAt
NzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0g
TWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1
bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3Vt
ZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHls
ZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVy
biBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJl
bmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0u
ZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
aW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0y
NzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5n
T2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBX
ZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3Jk
KGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3Ry
aW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFk
R3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZk
Li5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1h
aW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
LSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5n
CiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5n
KFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVy
LT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRm
YTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
QEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5
bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVy
ZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBs
ZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dy
YXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpV
UkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJl
c291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9
CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2Vi
UmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIu
LmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Ny
aXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmpl
Y3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2Jq
ZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRP
YmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3Jp
cHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVj
dCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyAr
NDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01X
cmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCks
IHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRX
b3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYs
NyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3Js
ZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQq
IFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApA
QCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3Vy
aXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5j
cHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJp
YWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVl
Ojp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01Q
dHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVy
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRl
eCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVy
KiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2Vi
VGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVy
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRl
eHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAg
ICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9
CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4
NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApA
QCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJU
KG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0K
IAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
KiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5h
NTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENy
ZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVu
dGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNy
ZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlh
bCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFs
OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
UHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0
aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJv
dGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJV
UkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9u
U3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25T
cGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNw
YWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0
YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0
YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJV
UkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9u
c2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9u
c2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRw
IHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQot
ICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0s
ICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCks
IDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3Rh
bmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdl
YlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAg
ICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENP
TVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6
Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYy
ZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
QEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3Vu
dCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJW
aWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2Vi
Vmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkK
IAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3
UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQo
d1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBm
cmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAg
ICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5j
b21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRv
cigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAg
ICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7
CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhl
Y3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBA
QCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQm
IGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVu
dCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7
CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3du
KSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFi
b3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYg
ZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3
IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgi
Q29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpj
dXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNv
bW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQz
LDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAv
KnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3Io
KS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVj
dXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAg
ICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNU
UlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRv
S1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3
Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3du
KiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3Mp
LmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMx
ZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1By
aXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRl
LmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJp
dmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2
YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtl
cnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJX
b3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNr
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2su
Y3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2lj
KQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUo
KSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVj
dG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVj
dG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNv
cHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9F
USgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNp
ZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBC
YXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBN
U1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3Rk
OjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUo
KSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFT
U0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRl
eCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0
LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVz
dFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0
cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVu
KGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4
Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJD
RSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsK
IGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0
ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBl
LCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7
CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlw
ZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNw
b25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAg
IGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQu
cmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRo
ZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJf
czsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZl
dGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJm
ZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRl
cyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwg
eyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpz
IH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAg
fV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3Qg
Y2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3Rl
eHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBj
b25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWlu
U1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5o
dG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9
IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cu
anMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVy
dCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3
MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRp
YyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAg
IHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAg
ICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3Bv
bnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAot
ICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5
dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9z
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVu
dGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYs
OCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNB
cHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0s
CisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwg
c2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBb
TlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZl
cjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwg
V2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJ
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIi
U1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5
LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExp
c3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVy
bmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycp
OwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9y
dFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYs
OCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVm
YXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAg
ICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVl
c3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0
aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0Njhl
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZp
Y2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VP
cmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxy
ZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2Vp
dmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVz
ID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJU
RVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICsz
MzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0Pgot
KVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0
aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAg
ICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBS
IkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4x
OjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7
Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3
LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3Rh
dGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxi
b2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1Qo
V2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJh
bWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxs
cHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0g
ICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9z
LCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0
YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAg
ICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlk
ZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQog
CiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygp
CiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFy
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29y
ZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVz
dElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFy
dCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tV
c2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAog
Ci1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0Pgot
KVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
VW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBs
b2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVn
aXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNX
UkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRC
eXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50
KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2
aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRt
bCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cu
anMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9z
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9y
ZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMs
NyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vydmlj
ZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBz
ZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3Rl
ZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDog
SGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAi
TWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBh
biBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDgg
QEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAg
ICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5y
ZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1U
eXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwK
ICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3Nh
Z2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVu
cmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5k
ZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdh
dGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1v
ZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1s
IiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNv
bnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1s
Il9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7
IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3Bl
bmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwg
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSAr
ODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5D
b29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAg
ICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28i
IH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0s
IEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIo
ewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAi
dGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdp
biIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAg
VEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwog
CiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0
X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5X
aXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2
OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJy
ZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0
Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1h
a2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRp
b25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJ
Il9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBS
ZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNz
Pgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
K3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2
aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAi
VGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
IHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRl
bnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2
aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAg
SVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7
CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBh
bmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2Vu
dF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29u
dGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAg
IHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2Vy
IGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRv
IFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0
OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNr
dG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAg
ICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMx
YWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50
ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5
cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8
U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFu
OEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3
LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9z
KTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484788"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456484</attachid>
            <date>2022-04-02 16:47:13 -0700</date>
            <delta_ts>2022-04-02 17:40:44 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>233799</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQwYzA0
Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQ
YWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxv
YXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZv
clNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlM
aXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4g
YWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBr
ZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBB
U0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVNDSUlM
aXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZhbHVl
IHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1fc2V0
dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9OwogfQog
Ci1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0
cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRp
bmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5nIDog
bV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQyNiw3
ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92
ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5jbGVh
clJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiKSkg
eworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNvbnRl
eHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNvbG9y
KENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJlZ2lv
biB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24gfHwg
IXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRpZW50
RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFkaWFs
RGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0gbV9t
b3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBAQCB2
b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBbJl0g
KGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERh
dGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdURk1v
dmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9LCBB
bHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAgICBp
ZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGluZygi
Y2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2Fz
aCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAgIGdy
YWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRo
QWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsg
MSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBo
YSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1ZUZv
clNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsK
ICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xv
cjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEo
MCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9pZCBJ
bnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3RleHBy
IGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFs
dWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVlRm9y
U2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAKICAg
ICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0ZvclJl
Z2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQg
PSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYg
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9w
R3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3
YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAoc2hv
dWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXApIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0
dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9u
KCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2
YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRpbmdS
ZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAgICAg
ICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFkaWVu
dERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAgICAg
ICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29s
b3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAgICBi
YWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2spLmNv
bG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFjdGlv
blJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQgPSBm
YWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9y
U2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ry
b3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAgICAg
ICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3VuZDsK
IAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRv
JiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
IGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFkaWVu
dChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5ICs1
MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3Zl
cmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxDdXJz
b3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIpKQor
ICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JUb1Nl
dCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIp
KQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgY3Vy
c29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50c0Nv
b3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlv
bigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6
bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAgIG1f
bW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29vcmRp
bmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVudC50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYm
ICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0
Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0
dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCmlu
ZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29sIFNl
dHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9pZCBT
ZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9IQU4p
OwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJTVBM
SUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQ
cm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRGaXhl
ZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZGb250
RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250RmFt
aWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNldFN0
YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9IQU4p
OworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3MsIFVT
Q1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
QXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVkRm9u
dEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9udEZh
bWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250RmFt
aWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRkMDgx
Mi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2Vy
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAtMzQs
NyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5cGUg
eyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRVc2Vy
QWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJBZ2Vu
dFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3RyaW5n
IG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9zTmFt
ZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGluZ1Zl
cnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3Rp
bmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NBU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxlUmF0
ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0aGlz
LCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRyKSk7
CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVk
aW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3Jl
YXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJs
ZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYwMDAx
MGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5n
IHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlmIChj
aGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0dXJu
ICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40Il9z
OwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0xMzYs
NyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBwbGlj
YXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAgICAg
ICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBmaW5h
bEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50ID0g
c3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcvJyAr
IGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xB
TkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
TmFtZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwog
CkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBp
eGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNv
bnRlbnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8g
dXNlIEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNv
bnN0cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlh
bGl6ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFs
d2F5cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNh
OS4uZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMs
NyArMzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQg
YW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90
IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAg
Ly8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBj
aGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0
aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAg
dm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdD
R0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdD
R0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXpl
aSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQq
IGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRy
YW5zZm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFu
c2ZvcgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTIxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBD
R0NvbG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3Ip
CiB7CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9y
KSk7CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBA
IHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxh
dGZvcm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3Vu
ZENvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJh
Y2tncm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZv
cm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dy
b3VuZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJp
bnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRC
b3JkZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWls
ZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9y
KGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMg
aWYgbmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tz
VG9Cb3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRj
YzRkNC4uMWY1MTY5MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0z
NDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFt
aWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAg
aWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5k
YXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0lu
ZGV4OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1
cm4gInNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2Vy
aWYiOworICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBm
YW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0g
ICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7
CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6
OkN1cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1
cm4gImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZh
bWlseU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3ki
OworICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAg
aWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3Rl
bVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICBy
ZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOwor
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZh
ZTJlMTJlN2QuLmZkOWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hF
Q0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2Rl
Y191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0
aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmlu
ZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0
KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIw
N2MzNWExMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3
IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElk
LCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0g
Z3N0U3RydWN0dXJlVmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmpl
Y3QtPnNldFZhbHVlKGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtf
dG9fc3RyaW5nKGZpZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAg
fQogICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyLmNwcAppbmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBH
U3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3Np
ZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xp
c3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0
X25leHQoZmFjdG9yaWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAg
ICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFj
dG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBt
ZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMo
IkhhcmR3YXJlIikpIHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpA
QCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFs
aXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAg
YXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5
cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBF
bGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAo
KG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0
aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7Cisg
ICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29u
ZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxh
YmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIp
LCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2Rl
ckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1Vz
aW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygi
eC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcg
KzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2Rl
cnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9N
cGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpE
ZWNvZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRh
aW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3Mp
OwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5
cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1p
bWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4u
N2ViYmE0MzIyZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcApAQCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IK
IAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1Np
bmsoKQogewotICAgIGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigp
ID8gInZpZGVvIiA6ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9Q
bGF5ZXIoKSA/ICJ2aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1Np
bmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChh
dWRpb1NpbmspOwogICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSog
bWVzc2FnZSkKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5v
dXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDog
JXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7Cisg
ICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAg
ICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYg
KGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1f
RVJST1JfQ09ERUNfTk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkK
ICAgICAgICAgZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRw
LWhlYWRlcnMiKSkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAi
UHJvY2Vzc2luZyBIVFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwog
ICAgICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmlu
ZyhzdHJ1Y3R1cmUsICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsK
KyAgICAgICAgICAgICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAg
ICAgICBtX29yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAg
ICAgICAgICAgICBpZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5
KEdzdFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAg
ICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUp
OwogICAgICAgICBpZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRs
ZSk7CisgICAgICAgICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkp
OwogICAgICAgICAgICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYs
NyArMjE2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVE
b3dubG9hZEJ1ZmZlcihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVt
ZW50LCAidGVtcC10ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIp
OwogICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRv
d25sb2FkIHRlbXBsYXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5n
ZXQoKSwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxv
YWRQcmVmaXhQYXRoID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3
RG93bmxvYWRQcmVmaXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1
cmdlT2xkRG93bmxvYWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhY
IiwgIiIpKTsKIH0KIApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXll
clAKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9n
ZXQocGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3du
bG9hZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZ
KCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdl
dCgpKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVt
cG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3Vn
aC4gV2UgbmVlZCB0byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAg
ICAgLy8gYXBwZW5kIHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVS
TCBiYXNlVXJsID0gZ3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJs
OwotICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAg
ICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAog
ICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29i
amVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIu
b3V0UHRyKCksIG51bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxT
dHIuZ2V0KCkgfTsKKyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJs
U3RyLmdldCgpIH0gfTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAg
ICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBo
YW5kbGVkIHJlZGlyZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAK
ICAgICBhdXRvIGVsZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxl
bWVudElkLmlzRW1wdHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7Cisg
ICAgICAgIGVsZW1lbnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0
eXBlID0gaXNNZWRpYVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3Ry
ZWFtIikgPyAibWVkaWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0
RGF0YSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVj
dGlvbk1lc3NhZ2UoR3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0
cjsKICAgICAgICAgICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAm
ZXZlbnRLZXlTeXN0ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0
YS5hcHBlbmQoe2V2ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRh
LmFwcGVuZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAg
ICAgIG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQu
Z2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQq
IGV2ZW50KQogICAgIGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAg
ICAgR3N0QnVmZmVyKiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3By
b3RlY3Rpb24oZXZlbnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7
Ci0gICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwg
aW5pdERhdGF9KTsKKyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7
IGV2ZW50S2V5U3lzdGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNh
ZThiMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29u
dGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5
KEdzdFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlw
dGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29s
IGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNh
dmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJp
dmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJh
Y2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUs
NyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNv
ZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3Vh
Z2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdl
KSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYz
OV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7
IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRh
KCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2Ug
Y29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAg
aWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpA
QCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFn
KEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91
dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRh
Z3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJU
cmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwot
ICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5
cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVh
bWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0
YUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBl
LCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBHc3RQYWRQcm9iZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRh
XSA9IGVuc3VyZVZpZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGlu
Zm8pKTsKICAgICAgICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1
ZmZlcjsKLSAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJl
dF9jYXN0PGNoYXIqPih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1l
c3RhbXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9j
ZXNzaW5nVGltZXMuc2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRh
KSB9LCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19U
SU1FX05PTkUpKTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0
X2VsZW1lbnRfZ2V0X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBA
QCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFE
X1BST0JFX09LOwogCi0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4odXNlckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVy
cHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEt
PnByaXYtPnByb2Nlc3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5w
cml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1
ZS5maXJzdCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1Rf
UEFEX1BST0JFX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggNDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZv
aWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2Fw
cygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNo
YXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkp
KTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJh
dGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxP
bk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBA
IHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRy
YSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0
Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUs
IGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0
cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5z
dG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sg
dG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAi
IHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVy
LCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBt
ZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5k
YXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgp
IH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5z
ZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2Vi
S2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxX
ZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7
CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhU
VFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShT
T1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVk
IGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNz
IHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAo
Im1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8
ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRm
OCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1l
LzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcu
Ni42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJz
LT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3Ry
ZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVl
c3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVx
dWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsK
KyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdl
LCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVt
YmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAg
IEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMi
LCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXBy
aXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAg
IGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChw
cml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMs
ICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0
IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyAr
ODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5
cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5n
KQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3Ry
aW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRV
cmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKaW5kZXggZmU0NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdz
dENhcHM+LCBBcHBlbmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBl
bGkKIAogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShk
ZW11eGVyU3JjUGFkQ2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5
U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmln
dXJhdGlvbjo6RGVjb2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVn
aXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpD
b25maWd1cmF0aW9uOjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsK
ICAgICAgICAgc3RyZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlm
IChkb0NhcHNIYXZlVHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9Q
UkVGSVgpKSB7CiAgICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25G
cm9tQ2FwcyhkZW11eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
CmluZGV4IDgzMWMyYjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyAr
MTI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3Qg
U3RyaW5nJikKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
KiBtZWRpYVNvdXJjZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRp
YXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5n
KCkpOworICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJs
LnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBH
U1RfREVCVUcoIkxvYWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBt
X21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAK
aW5kZXggNzNlMjQ4NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVu
R0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxh
dGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5H
TEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUg
YXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRl
bnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUu
CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICBy
ZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJf
YmxpdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9h
cnJheXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAg
ICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3Rh
bmNlZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7Cisg
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0
dXJlX3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9m
cmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2Zy
YWdfZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdM
IGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xf
T0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xP
cGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
IC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2
YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQs
IEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9h
dF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9m
bG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAi
R0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAK
ICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAg
cmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJh
eV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29i
amVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3
LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNF
eHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
ICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdM
X0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3Bp
YyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4g
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7Cisg
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3
X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0
IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsy
MzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpp
c1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBz
dXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlf
b2JqZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVj
dCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJu
IHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwx
MiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVy
U291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9
PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBl
ID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8v
IEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJ
bnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQg
PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChy
ZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwog
CkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0
VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAg
ICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBi
b29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVn
bEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAg
ICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xE
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdM
RWluc3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9u
KCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFu
Y2VkX2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Ry
YXdfaW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0g
MyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2Fy
cmF5cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19p
bnN0YW5jZWQiX3MpKSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdM
RSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9n
bERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4u
MGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAg
LTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVu
ZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxp
ZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24p
Cit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJ
SUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMg
PSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAg
ICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsK
LSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmlu
ZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNF
eHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAg
ICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJp
bmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAg
ICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJv
dGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQg
ZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFz
ZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRp
b24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlM
aXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0
dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGlu
dCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwg
R0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dM
c2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVh
ZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQ
aXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2
YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRf
cGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9
IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3
aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMu
c3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBp
bnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RF
UFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApp
bmRleCA4M2I5Yjg2YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBX
ZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVw
dGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVB
dHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChh
dHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNp
b24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tl
ZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5k
ZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJf
cyk7CiAKICAgICAvLyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZC
TyA9IGZhbHNlOwpAQCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUK
IAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsK
LSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7
CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJf
cyk7CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAg
aWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211
bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50
aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJf
dG9fdGV4dHVyZSJfcykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsK
ICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJGUFNDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3
MjVkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyAr
MzQsNyBAQCBUZXh0dXJlTWFwcGVyRlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIo
KQogICAgICwgbV9sYXN0RlBTKDApCiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJp
bmcgc2hvd0ZQU0Vudmlyb25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBT
dHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9Owog
ICAgIGJvb2wgb2sgPSBmYWxzZTsKICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBT
RW52aXJvbm1lbnQudG9Eb3VibGUoJm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKaW5kZXggMGRiOTgwMjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0x
NDUzLDcgKzE0NTMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5p
bWF0aW9ucygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFy
dGVkVGltZXJGaXJlZCgpCiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0
aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlB
bmltYXRpb25TdGFydGVkKHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0
VGltZSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGlu
Z1RpbGVDcmVhdGlvblRpbWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZv
aWQgZHVtcElubmVyTGF5ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgQ29vcmRpbmEKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRp
b25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJl
ZUFzVGV4dE9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXll
clRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElu
bmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdl
dCgpLCBvcHRpb25zKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tk
cm9wIGxheWVyIl9zLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJv
YXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikK
IAogU3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1
cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9w
IHBhc3RlYm9hcmQiX3M7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJv
YXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRl
eHQ+JiYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9V
c2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9T
Lm1tCmluZGV4IDYwMTFmYTJjOWFjNy4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgaXNDbGFzc2ljUGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBb
UEFMOjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRp
b25TY2VuZUNsYXNzaWNNb2RlT3JpZ2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2Vy
QWdlbnQoKQorQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRl
dmljZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJl
dHVybiAiT1MiOwotICAgIHJldHVybiAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJf
czsKKyAgICByZXR1cm4gImlQaG9uZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2
aWNlTmFtZUZvclVzZXJBZ2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRm
YzQ1YzgwLi5iZTQ2ZTFlMGVjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3
ICs4MzgsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNv
bnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRy
b2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAg
ICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRh
cmdldFR5cGVOb25lLCAiIik7CisgICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNl
LCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwog
ICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdmMzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsx
NjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3Mg
PSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRv
IG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAg
ICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJh
dWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sg
PyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJfczsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRp
bmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBlICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRh
KCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0y
MTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlh
UmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVj
cy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVk
aW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJf
cykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAg
ICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAo
Y29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgi
bXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVk
aW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlw
ZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcx
NjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNl
RXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZF
cnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0g
a0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAg
ICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9
Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9y
RG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsK
KyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChk
b21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJ
WEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9z
OwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9
ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVy
cm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAg
IGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBA
IFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAg
IHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3Vz
dG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBt
X2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJ
WEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0
dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAg
IG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2Yw
NDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0
byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwu
ZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQo
ZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRo
KCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
ZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAg
ICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAg
ICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2Vy
OmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhw
ZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUw
ZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVz
Y3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0
cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJp
ZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlm
aWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShj
b25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1
YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0
aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0
aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAg
cmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBS
ZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
CmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4
NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBT
dHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5
KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAg
ICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZl
cnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVy
biAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmlu
ZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1
MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3Vy
bENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhh
bmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4x
KCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9o
ZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFw
cGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNl
bmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCIpOworICAgIG1f
Y29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRy
eTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVu
dHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBI
ZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0
cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgi
OiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRl
ckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxu
Iik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5n
IGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwg
aGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNl
dEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmlu
ZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGly
LmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlz
YWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lk
IEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAg
IGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBh
dGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0
aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4
YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lk
IEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhl
YWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1l
KTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFu
IGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRl
ciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIu
YXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVh
ZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5k
UmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZSho
ZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0
aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1
ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6
Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lk
IEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxv
YWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAt
MTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAg
IG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dF
VChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3Mp
OwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdS
ZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0
MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQg
Q3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRS
ZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFk
ZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAg
IG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1
dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYg
KCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1
cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0
IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRl
cgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAg
ICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGlu
ZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIo
IlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYg
KGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxh
cmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQw
Ny4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
QEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJs
RGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAo
Q3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwu
c3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2Fj
aGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRU
UFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0
dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBA
IHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAgY2hhciogY29va2ll
SmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAgICBpZiAoY29va2ll
SmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAgICAgIHJldHVybiBT
dHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAg
IHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAj
ZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUw
OWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFy
eUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wq
IHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0
cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1l
KGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9n
ZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJf
Z2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4
Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3Vy
bC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9s
bGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAv
LyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBk
YXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAgICBpZiAoY29uc3Qg
Y2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21h
aW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0
cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJv
ci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcg
KzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENv
cHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0
IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFp
bjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwu
Y3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5j
cHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFy
KiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWlu
IjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVy
cm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihp
bnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAg
aWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAg
ICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Qu
c2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShu
dWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAx
MWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNv
dXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9u
c2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJM
X0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOwor
ICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhU
VFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQ
VmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVm
YXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMy
MGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bh
c3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9LZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwCmluZGV4IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAx
IEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVk
IHNob3J0IGtleUNvZGUpCiB7CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2Ug
VktfTUVOVToKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAi
QWx0Il9zOwogICAgICAgICBjYXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNv
bnRyb2wiOworICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZL
X1NISUZUOgotICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4g
IlNoaWZ0Il9zOwogICAgICAgICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4g
IkNhcHNMb2NrIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNh
c2UgVktfTFdJTjoKICAgICAgICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJX
aW4iOworICAgICAgICAgICAgcmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6
Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIi
X3M7CiAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7Cisg
ICAgICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNh
c2UgVktfRU5EOgotICAgICAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJu
ICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0g
ICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7
CiAgICAgICAgIGNhc2UgVktfRVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7
CisgICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYz
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAg
IGNhc2UgVktfRjU6Ci0gICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjUiX3M7CiAgICAgICAgIGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNh
c2UgVktfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjgiX3M7CiAgICAgICAgIGNhc2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAg
ICAgcmV0dXJuICJGMTEiOworICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNh
c2UgVktfRjEyOgotICAgICAgICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTIiX3M7CiAgICAgICAgIGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMi
OworICAgICAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjE1OgotICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAg
cmV0dXJuICJGMTUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTYiOworICAgICAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3
OgotICAgICAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7
CiAgICAgICAgIGNhc2UgVktfRjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAg
cmV0dXJuICJGMTkiOworICAgICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjIwOgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJG
MjAiX3M7CiAgICAgICAgIGNhc2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjIzOgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0
dXJuICJGMjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJG
MjQiOworICAgICAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoK
LSAgICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7
CiAgICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAg
ICAgICAgICByZXR1cm4gIkhvbWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAg
ICAgICAgcmV0dXJuICJJbnNlcnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAg
ICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAg
IHJldHVybiAiUGFnZURvd24iOworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAg
ICAgICAgY2FzZSBWS19QUklPUjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAg
ICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAg
ICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAg
ICAgICBjYXNlIFZLX1NOQVBTSE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7
CisgICAgICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJ
R0hUOgotICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJp
Z2h0Il9zOwogICAgICAgICBjYXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Ny
b2xsIjsKKyAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NF
TEVDVDoKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAi
U2VsZWN0Il9zOwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7
CisgICAgICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRo
YXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRv
QVNDSUlVcHBlcihrZXlDb2RlKSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2Eu
LjgwN2Q1NzIzNDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xv
Y2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmlu
ZyBhbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJh
bGwgZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5
cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAK
QEAgLTc0LDM0ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JF
eHRlbnNpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1pbWV0eXBlTWFwOwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy9maWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ0eHQiLCAidGV4dC9wbGFpbiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJh
cHBsaWNhdGlvbi9wZGYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNh
dGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQv
Y3NzIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieG1sIiwgInRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
eHNsIiwgInRleHQveHNsIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGlj
YXRpb24veC1qYXZhc2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFw
cGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwg
ImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIs
ICJhcHBsaWNhdGlvbi9yc3MreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJj
aGl2ZSIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2
Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJp
bWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVn
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgidGlmZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aWNvIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInR4dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInBkZiJfcywgImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiaHRtbCJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aHRtIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3Ms
ICJ0ZXh0L3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94
c2wiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNh
dGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAi
YXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3Mi
X3MsICJhcHBsaWNhdGlvbi9yc3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3
ZWJhcmNoaXZlIl9zLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJzdmciX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgianBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgianBlZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBu
ZyJfcywgImltYWdlL3BuZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAi
aW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdl
L3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBV
U0UoSlBFR1hMKQotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlm
CiAgICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2
YzM4YzguLjY2ODVlZDk5MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcApAQCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFz
RGF0YSgpCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3Ry
aW5nPiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1h
dC5jZkZvcm1hdCA9PSB1cmxGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09
IHVybFdGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1s
aXN0Iik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAo
Zm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0
LmNmRm9ybWF0ID09IHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0
cy5hZGQoInRleHQvcGxhaW4iKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3Mp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpy
ZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvaHRtbCIpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3Mp
OworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRv
VmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlYWRPcmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0Rh
dGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRU
eXBlRnJvbU1JTUVUeXBlKHR5cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRh
VHlwZVRleHQpCkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0
Q0ZIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwog
ICAgIH0KIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAog
U3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVj
dCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBp
ZiAod2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAg
IG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7
CisgICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0
cmluZygpLCBjZmh0bWxEYXRhKTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9i
YWxEYXRhKGNmaHRtbERhdGEpOwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVE
KGRhdGEtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAg
ICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlU3RyKQogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFT
U0VSVCh1cmwuaXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4K
IAotICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwg
dGl0bGVTdHIsICIuVVJMIiwgdHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1Q
YXRoRnJvbVVSTE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0
cmluZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAi
XHJcbiIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAK
QEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1h
dCBDRl9IVE1MIHRvIGJlIGFibGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMg
YXMgYSBsaW5rCiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBW
ZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFz
dGVib2FyZFVSTC51cmwsIHRpdGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRN
TCh1cmxUb01hcmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBk
YXRhKTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwog
ICAgICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRh
dGEpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2
YWlsYWJsZShDRl9URVhUKSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAg
aWYgKEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBu
b3QgVVRGLTggb3IgZXZlbiBXaW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29k
aW5nPwotICAgICAgICAgICAgdGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExv
Y2soY2JEYXRhKSk7CisgICAgICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2Fz
dDxjaGFyKj4oR2xvYmFsTG9jayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1h
Z2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAg
ICBHbG9iYWxGcmVlKG1lbU9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRl
bnNpb24uaW5zZXJ0KCIuIiwgMCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAg
ICAgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRp
dGxlLCBleHRlbnNpb24sIGZhbHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkg
ewpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFi
bGVEYXRhT2JqZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAg
bWFya3VwVG9DRkhUTUwobWFya3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01F
RElVTSBtZWRpdW0geyB9OwogICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJk
Li5lMTY1MzNiZTJkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
eXN0ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5m
by5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1i
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3Ry
aW5nKCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNh
c2UgV2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0
dXJuICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsK
ICAgICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAg
ICAgICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAg
ICByZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAg
ICAgY2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAg
IHJldHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0
dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5
ODsgV2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4g
Ildpbk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZl
cnNpb24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAg
ICByZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmlu
Zzo6bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpv
ciwgJy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsx
NTMsMTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJp
bmcgYXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkK
LSAgICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwog
ICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJF
X0FNRDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAi
OyBXaW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9D
RVNTT1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7
CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMu
LjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2
LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2Um
IHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRl
c3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2Fk
ZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xv
YWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAg
TGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2
OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEg
QEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNv
ZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3Mp
OwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JN
ZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFl
cnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUy
NDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25z
ZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNT
aG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29s
ZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cp
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29t
bWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dz
aW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQi
KTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5n
Q29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJs
ID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1
cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlm
ICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0
V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAg
ICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAg
ICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAg
ICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAg
IHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAg
YXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAg
IHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAg
ICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVl
KCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3Zl
KHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAg
YXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3Ry
aW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAi
ZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRv
TG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAg
ICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVs
ZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7
ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAK
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
ICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pT
T05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10g
PQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAg
ImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQg
fHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBA
IC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAg
ICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4g
ZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1
ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlz
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAg
ICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVz
dWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8
IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2Up
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAi
ICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAg
ICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1l
bnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAg
ICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50
LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAg
ICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgog
ICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRl
cmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAg
ICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCkt
PnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNv
b2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29v
a2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikp
OworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1
ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNv
b2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5
LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9u
Il9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGly
ZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRl
LnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAt
MjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjpp
bnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0
ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlw
ZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAg
ICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBl
OjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChp
bnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAg
ICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3Vz
ZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJU
eXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0
dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAg
ICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAg
ICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBj
YXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7Cisg
ICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQ
b2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25P
cmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1
cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7Cisg
ICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxl
bWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3
MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAj
aWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7
CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RB
UkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAg
ICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBm
b3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJn
ID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVu
dChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBw
b3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50
KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAg
dGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFs
dWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAg
IGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAs
NyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHko
SlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NV
UkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUo
InNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Np
b24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBh
YmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0
Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlz
bWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2Vw
dCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRp
c21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNj
ZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRl
Z3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2Fz
ZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
UGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5
ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2Fw
YWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRk
cjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFk
ZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0
QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJn
ZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmco
dGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRk
cjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0
YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6
dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVn
ZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNv
Y2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+
YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9
IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hU
VFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNv
Y2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9u
c2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlk
IEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQg
SFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVu
Y29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5k
RW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBz
b3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291
cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZh
bGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5n
ZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNl
LCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5z
YXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29w
eVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28K
ICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2Zp
ZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVy
cm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJv
cigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBz
dHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQ
cm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJv
dG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7
CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24i
OworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhT
dXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1
ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
Ym9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwg
TlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0
aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9k
U2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkK
IHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmlu
Zzp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
ZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3Ro
ICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAg
Y2hhciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJl
VHlwZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRl
cmNoYW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYg
c3RyY2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBh
dXRvIG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8v
IGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICBy
ZXR1cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDpp
XSkgIT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtOTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24o
V0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4
Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0g
ICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmlu
ZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RT
aWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRo
b2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZv
Y2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1l
dGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2ln
bmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9w
ZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1
cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2Vs
X2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5
QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVt
b3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVt
b3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVy
ZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4
KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2Nv
bCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWly
ZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNv
ZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9y
LCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlC
bG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdl
ciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5
cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAg
IEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2ln
bmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
cmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVu
dEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVy
ZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24u
c2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05T
TWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1Np
Z25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4
cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJv
dG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWdu
YXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZh
bGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0
dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUp
KSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0
ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0
ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJs
b2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52
b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9i
amVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxD
aGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVw
bHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5n
Q2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNl
LCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3
YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRl
cmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRp
b24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tX
S1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fybmlu
Z0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdh
cmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIg
aXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0
cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVy
biAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmki
OworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90
cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBA
QCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQg
KnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwog
I2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlk
ZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2Nv
bXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUu
Y29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1
cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9z
OworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0
X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
OjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAg
cGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywg
Il9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1Q
cmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVp
Y2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2
NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQu
LmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAg
ICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9u
ZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNh
YTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxz
IHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBp
biBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpB
cHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIp
OworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0Vf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBA
IC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3
aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpV
bmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAg
QCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywK
KyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJL
ZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAg
InkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSsw
MDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJf
cywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9z
LCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUi
LCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUi
X3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3
ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVp
cmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdl
bnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0
aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYs
NyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lk
ZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8g
VGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hk
IGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lk
ZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAg
IG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29t
LmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hv
c3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBj
Mjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03
MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50
JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBN
ZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3Vt
ZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1l
bnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxl
KCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJu
IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVu
ZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5l
dmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3
NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdl
YkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRH
cmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQu
LmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFp
blJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
ICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcK
IHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
W2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXIt
PnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZh
Mzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHls
ZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJl
bmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAg
X3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxl
Q29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMyOTBkYWUz
Nzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAt
NjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwog
ICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6fkFj
Y2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVC
YXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0zNCwx
MyArMzQsMTMgQEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJD
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFn
Ojp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwog
fQogCiBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3BlcnR5
QmFnOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9E
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJmNjM3YWJj
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERl
bGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3du
bG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERv
d25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhhc2hTZXQ8
SVdlYkRvd25sb2FkKj46Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwogICAgIGZv
ciAoO2kgIT0gbV9kb3dubG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVsZWFzZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5j
cHAKaW5kZXggZThlNWY1YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEz
IEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5
RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURl
bGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5U3Ry
ZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFt
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
TWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJl
YW0iX3MpOwogfQogCiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQxNS4u
ZTk3YzQxMzI0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rp
b25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9u
UHJvcGVydHlCYWcuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVydHlCYWc6
OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVm
UHQKICAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdl
YkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlC
YWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVydHlCYWc6
OmNyZWF0ZUluc3RhbmNlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhU
TUxGb3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhmMjcxNjJi
YmFmMS4uZGYxZDI5ZWJhYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2Fj
aGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNh
Y2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9z
KTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBs
aWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25D
YWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNw
cAppbmRleCA4MTU3OTk2MTA3NjcuLjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNo
aXZlKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJB
cmNoaXZlOjp+V2ViQXJjaGl2ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkFyY2hpdmUiX3MpOwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXgg
OTA0YWMyZDI4MTA0Li4xMTZhYTQyMDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tG
b3J3YXJkTGlzdAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0Zvcndh
cmRMaXN0LmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6
fldlYkJhY2tGb3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlz
dDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5y
ZW1vdmUobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2Vi
QmFja0ZvcndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ2FjaGUuY3BwCmluZGV4IGRlODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBXZWJDYWNoZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2Fj
aGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAog
V2ViQ2FjaGUqIFdlYkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li41ZWIxYTM0
YTY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5j
cHAKQEAgLTQ4LDEzICs0OCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVT
dGF0aXN0aWNzOjpXZWJDb3JlU3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0
aXN0aWNzOjp+V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3Jl
U3RhdGlzdGljcyogV2ViQ29yZVN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5mNzhj
MWJkMmE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFT
b3VyY2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6
fldlYkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwog
ICAgIFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0
YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3
MjAzMTVjMy4uOGYzNzY1NDEyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFu
YWdlciogV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1h
bmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VN
YW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCBXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFTb3Vy
Y2UoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3Vt
ZW50TG9hZGVyIl9zKTsKIH0KIAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIGRhdGEpCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRlcj4g
V2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
CiBXZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsK
ICAgICBpZiAobV9kYXRhU291cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERhdGFT
b3VyY2UpOwogICAgICAgICBtX2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25s
b2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAK
IFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9h
ZDo6fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ry
b3lpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3du
bG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMs
MTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJj
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BT
b3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRl
eCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0Pihy
ZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldl
YkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxl
bWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNw
cAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1f
ZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJf
cyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVz
ZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4
MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdl
YkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZy
YW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmlu
Z0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3Ry
aW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJf
czsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJp
bmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1v
dmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRj
MjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0z
NiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Oldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmlu
ZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRN
TFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdl
YkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXgg
M2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0
eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJI
aXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9y
eTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0
b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4m
JiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0
ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0o
KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZk
YWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNT
RVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3Bl
Y3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIu
Ljc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkph
dmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5k
ZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENs
YXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdl
YkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xh
c3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRN
ZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICsz
NCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxv
b3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsK
IH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VM
b29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJf
cyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApp
bmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJh
bWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlz
dGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUp
CiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11
dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5h
dmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMg
KzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2
aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0
LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25z
dCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtu
b3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRS
ZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01
Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAg
IG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiog
V2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93
biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4
IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3Rp
ZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3
LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVm
ZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQ
cmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4
MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3Bw
CkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Ny
aXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
X3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmpl
Y3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMp
OwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNj
cmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJf
cyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5y
ZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNj
cmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDks
MTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3Jp
Z2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5k
ZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2Vi
U2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2Vi
U2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3
YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJU
ZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJl
bmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJU
ZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5k
ZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBt
X3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5
M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIs
MTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEw
Njk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRp
YWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0z
NywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJf
cyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBT
dHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0Nv
ZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNw
b25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdl
YlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGlu
c3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3Bv
bnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGlu
c3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRw
Oi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0
cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5
MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6
fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAg
IFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5
NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0s
IExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFt
KSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgp
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29s
IFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3
NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VS
TCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0
NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApA
QCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6
Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29y
a2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2
YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldv
cmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJz
UHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhi
MzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0
NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhT
dWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewog
ICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0
aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlv
bjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0g
Y2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYs
MjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0Fw
cEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAg
QVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewog
ICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3
IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwi
KTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyBy
ZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAg
ICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChm
ZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcv
ZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVk
IGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAg
IHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sg
IkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwK
KyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhciog
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1
dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRl
cyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwg
eyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpz
IH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lk
IHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZp
ZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWlu
dDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcg
UmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIp
PC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkg
PT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFs
ZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1s
J30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0g
fSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgp
KTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2
LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0
aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
Mih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7
ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
fX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAg
ICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVy
UG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9y
dCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJv
Y2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNP
VVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAg
dHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
RGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVy
KCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykg
ewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAt
NjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVl
KGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVz
c2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2
LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRV
cGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAg
ICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7
CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdl
IGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQu
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
ZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmll
bnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rl
dmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRh
dGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdy
YW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVz
c2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJU
RVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVT
T1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIg
QEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RS
RVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQ
ZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7
ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUg
ZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVy
bWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIi
RE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RP
Q0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEv
ZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Nj
b3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4x
OjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNv
bnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5Pjwv
Ym9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0
LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0
IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5
MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAg
IHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZy
YW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2
b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJD
b3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwot
ICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0
aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50
aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImlu
QXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAg
LTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxv
Zyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0
ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVT
T1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdp
c3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJl
Z2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNn
KQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
Jy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VS
Q0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dS
RVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7
CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAi
ICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29y
a2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFw
cEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsg
bWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAg
eyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtl
cnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNl
IHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3Nh
Z2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8g
ZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2Fn
ZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAt
Ym91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
bWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNj
cmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3Rl
ckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9
KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9y
QWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAi
VW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0
cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0
ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNh
c2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAi
Zm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQt
VHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNh
bWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7
ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNv
bnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBv
bGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwx
MSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJv
Y2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQ
U2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwK
KyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAg
ICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9o
dG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9
LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29u
dGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08i
X3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAg
YXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50
ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1
ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRD
b250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250
ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xh
c3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVu
dE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAy
NCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5Q
dHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdX
aXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3Rk
OjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0
aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmco
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6
cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlv
bkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0
ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdl
YktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAg
ICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2Rl
LCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwg
UmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVz
ZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6
ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBl
Y3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVj
aXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hv
dWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0
QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1v
ZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAg
ICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50
IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJW
aWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7
CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7
ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0
cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBh
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBs
ZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1
ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5n
KiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0
cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1w
bGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAog
ICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484793"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456485</attachid>
            <date>2022-04-02 17:18:10 -0700</date>
            <delta_ts>2022-04-02 17:42:28 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>235848</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRk
NC4uMWY1MTY5MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIs
MjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5
KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYg
KGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJk
RmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4g
InNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlO
YW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYi
OworICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1p
bHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAg
ICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAg
ICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1
cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4g
ImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWls
eU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOwor
ICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYg
KGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVp
RmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1
cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJl
MTJlN2QuLmZkOWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVH
U3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tf
VkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191
dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9u
LmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7
IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsm
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2Mz
NWExMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBA
IHN0YXRpYyBnYm9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0
U3RydWN0dXJlVmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3Qt
PnNldFZhbHVlKGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VO
b25OdWxsKCkpOworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9f
c3RyaW5nKGZpZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQog
ICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyLmNwcAppbmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmll
ciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3Qq
IGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25l
eHQoZmFjdG9yaWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAg
U3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9y
eSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFk
YXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1F
TlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRh
ZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhh
cmR3YXJlIikpIHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAt
MzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXpl
RGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0
byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUo
RWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVt
ZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1h
dHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAg
aWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmln
dXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxl
KSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBh
djFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5n
SGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1h
djEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQw
OSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBl
U2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVn
U3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNv
ZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5l
clR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwog
ICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVT
ZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVU
eXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2Vi
YmE0MzIyZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmNwcApAQCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAog
R3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1Npbmso
KQogewotICAgIGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8g
InZpZGVvIiA6ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5
ZXIoKSA/ICJ2aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1Npbmsg
PSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRp
b1NpbmspOwogICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVz
c2FnZSkKICAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQ
dHIoKSwgJmRlYnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMg
KHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAg
ICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAg
ZXJyb3IgPSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdf
ZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJS
T1JfQ09ERUNfTk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZWxzZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhl
YWRlcnMiKSkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJv
Y2Vzc2luZyBIVFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAg
ICAgICAgICAgICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAg
ICBtX29yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAg
ICAgICAgICBpZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdz
dFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAg
ICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwog
ICAgICAgICBpZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7
CisgICAgICAgICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwog
ICAgICAgICAgICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyAr
MjE2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3du
bG9hZEJ1ZmZlcihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50
LCAidGVtcC10ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwog
ICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25s
b2FkIHRlbXBsYXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQo
KSwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQ
cmVmaXhQYXRoID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93
bmxvYWRQcmVmaXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdl
T2xkRG93bmxvYWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwg
IiIpKTsKIH0KIApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAK
ICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQo
cGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9h
ZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFG
aWxlU3lzdGVtOjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgp
KSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9y
YXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4g
V2UgbmVlZCB0byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAg
Ly8gYXBwZW5kIHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBi
YXNlVXJsID0gZ3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwot
ICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAg
VVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAg
ICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVj
dF9nZXQobV9waXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0
UHRyKCksIG51bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIu
Z2V0KCkgfTsKKyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3Ry
LmdldCgpIH0gfTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAg
ICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5k
bGVkIHJlZGlyZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAg
ICBhdXRvIGVsZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVu
dElkLmlzRW1wdHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAg
ICAgIGVsZW1lbnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBl
ID0gaXNNZWRpYVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFt
IikgPyAibWVkaWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0
YSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlv
bk1lc3NhZ2UoR3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZl
bnRLZXlTeXN0ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5h
cHBlbmQoe2V2ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFw
cGVuZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAg
IG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0
KCkpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2
ZW50KQogICAgIGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAg
R3N0QnVmZmVyKiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3Rl
Y3Rpb24oZXZlbnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0g
ICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5p
dERhdGF9KTsKKyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2
ZW50S2V5U3lzdGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThi
MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBA
IC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVu
dHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdz
dFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlv
bigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRp
ZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVN
ZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyAr
MTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUo
R3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7
CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkg
ewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8x
KGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdz
dF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkp
IH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29k
ZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYg
KGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAt
MjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdz
dFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0
cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3Ms
IHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFj
ayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAg
ICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUg
eyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVy
LmNwcAppbmRleCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2
b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVs
ZW1lbnQpCiAgICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBb
XShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBH
c3RQYWRQcm9iZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9
IGVuc3VyZVZpZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8p
KTsKICAgICAgICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZl
cjsKLSAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3Rh
bXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9
LCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1F
X05PTkUpKTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2Vs
ZW1lbnRfZ2V0X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVs
ZW1lbnQpCiAgICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogCi0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4odXNlckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJl
dF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnBy
aXYtPnByb2Nlc3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2
LT5wcm9jZXNzaW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5m
aXJzdCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFE
X1BST0JFX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggNDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQg
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2Fwcygp
CiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+
IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsK
LSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlv
bi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1h
aW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0
YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25z
dCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBo
ZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAg
UmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4o
dXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZp
ZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmlu
ZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdl
YgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8g
cmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0
b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBw
cml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1i
ZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRh
KCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0g
fTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRB
bGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0
V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJL
aXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAK
ICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBN
ZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQ
KQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhl
cmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdl
YgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRo
ZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1v
dmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFn
X2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgp
LmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcu
Ni42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42
Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5z
dG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZv
cm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdl
YgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVw
X3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3Rl
ZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVz
dDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBT
dHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVy
cy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBw
cml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYt
PmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlm
IChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2
LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZy
ZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1l
dGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgx
LDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUp
CiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQog
ewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5n
IHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmko
R3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
aW5kZXggZmU0NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5k
UGlwZWxpbmUuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENh
cHM+LCBBcHBlbmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkK
IAogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11
eGVyU3JjUGFkQ2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nh
bm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJh
dGlvbjo6RGVjb2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0
cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25m
aWd1cmF0aW9uOjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAg
ICAgICAgc3RyZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChk
b0NhcHNIYXZlVHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVG
SVgpKSB7CiAgICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9t
Q2FwcyhkZW11eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmlu
ZGV4IDgzMWMyYjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3Ry
aW5nJikKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBt
ZWRpYVNvdXJjZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNv
dXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkp
OworICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0
cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1Rf
REVCVUcoIkxvYWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21l
ZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5k
ZXggNzNlMjQ4NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJl
ICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNp
b25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxp
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJh
eXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAg
ICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNl
ZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2lu
c3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAg
IGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJl
X3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFt
ZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdf
ZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFs
d2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VT
X3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8v
IElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWls
YWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdM
X09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9h
dCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xf
T0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAg
ICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNf
dmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9v
YmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVj
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0
ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAg
ICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1
ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZv
ciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEs
NyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1Zl
cnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBw
b3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9
IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1
cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBA
QCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291
cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBH
cmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0g
U0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIElu
dmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZh
bGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBt
X2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1
bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBA
IC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJh
bnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBp
ZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xP
cGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29s
IEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0
cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdl
dFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAg
IG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xE
UkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWlu
c3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkg
Pj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2Vk
X2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdf
aW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8
fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5
cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0
YW5jZWQiX3MpKSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9
IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2
YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1
MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVy
aW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2
b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxp
dGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBj
b250ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAg
aWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAg
ICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5z
aW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRl
bnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAg
ZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcp
OwogICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAg
ICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVj
dGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0
ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQg
b24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24u
Ci0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRl
cmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJp
YnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5
LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NH
TGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6
ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGlu
Z1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3Rk
OjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhl
bHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxp
ZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3Bh
Y2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBi
b29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBz
aXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdl
dEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVy
ZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJH
TF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3Vw
cG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRl
cm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRI
X0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRl
eCA4M2I5Yjg2YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBk
b24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGgg
aXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRy
aWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRy
aWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24o
IkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERl
cHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0
aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7
CiAKICAgICAvLyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9
IGZhbHNlOwpAQCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAog
dm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAg
ICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7Cisg
ICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7
CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYg
KGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFs
aWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9f
dGV4dHVyZSJfcykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAg
ICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJG
UFNDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVk
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQs
NyBAQCBUZXh0dXJlTWFwcGVyRlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQog
ICAgICwgbV9sYXN0RlBTKDApCiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcg
c2hvd0ZQU0Vudmlyb25tZW50ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJp
bmcgc2hvd0ZQU0Vudmlyb25tZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAg
IGJvb2wgb2sgPSBmYWxzZTsKICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52
aXJvbm1lbnQudG9Eb3VibGUoJm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAKaW5kZXggMGRiOTgwMjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUz
LDcgKzE0NTMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0
aW9ucygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVk
VGltZXJGaXJlZCgpCiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlz
LCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmlt
YXRpb25TdGFydGVkKHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGlt
ZSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1Rp
bGVDcmVhdGlvblRpbWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQg
ZHVtcElubmVyTGF5ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgQ29vcmRpbmEKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25h
bFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFz
VGV4dE9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRy
ZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVy
TGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgp
LCBvcHRpb25zKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9w
IGxheWVyIl9zLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJk
SU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAog
U3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4g
ImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBh
c3RlYm9hcmQiX3M7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJk
OjpjcmVhdGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+
JiYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2Vy
QWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CmluZGV4IDYwMTFmYTJjOWFjNy4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNDbGFzc2ljUGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFM
OjpnZXRVSUFwcGxpY2F0aW9uQ2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25T
Y2VuZUNsYXNzaWNNb2RlT3JpZ2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdl
bnQoKQorQVNDSUlMaXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmlj
ZUhhc0lQYWRDYXBhYmlsaXR5KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVy
biAiT1MiOwotICAgIHJldHVybiAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsK
KyAgICByZXR1cm4gImlQaG9uZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNl
TmFtZUZvclVzZXJBZ2VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1
YzgwLi5iZTQ2ZTFlMGVjNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4
MzgsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRy
b2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xs
ZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCAiIik7CisgICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQ
bGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdmMzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMs
NyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBN
ZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1p
bWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBt
aW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRp
by9tcDQiOworICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAi
dmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJfczsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcg
dmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBlICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkp
OwogICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcs
NyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5j
b250YWlucygidm9yYmlzIl9zKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
eC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykp
Ci0gICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAg
ICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29k
ZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0
YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
bXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5l
bmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYz
YTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJy
b3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJv
ckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NG
RXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5T
Q3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9t
YWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAg
ICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21h
aW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwog
ICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBt
X2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9y
RG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2Nr
IjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVs
c2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJl
c291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3
aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9t
OgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2Rv
bWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
a0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6
Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1f
ZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9S
ZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkx
ODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
UmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBm
c1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmls
ZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNS
ZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7
CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmls
ZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAg
ICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAg
ICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZp
bGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0
ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVm
Njg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3Jp
cHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmlu
ZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlf
Y2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNh
dGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25z
dCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFj
Li42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgp
LnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVx
dWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdp
c3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmlu
ZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4Nywx
MSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJp
bmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkg
fHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICBy
ZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNl
RmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAi
LyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygw
LCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUu
LmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENh
Y2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRs
ZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkp
OwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFk
ZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVu
ZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29u
dGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6
fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5
OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmlu
ZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAi
KTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7
CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhl
YWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0
ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVh
ZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhU
VFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4
IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3
ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFw
cGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJs
ZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1
cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGlu
ZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGgg
PSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZp
bGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZi
MDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1
cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsK
KyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVt
cHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9
IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBw
ZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVy
ID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVx
dWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFk
ZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUg
aW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhl
YWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0
SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7
CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1
cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQu
Y3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0
LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5l
d1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChu
ZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwog
ICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1
ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0MmRi
Yzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1
ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIK
LSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1f
Y3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8g
ZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFl
bGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNl
bmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdl
IHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgog
ICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAg
ICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzog
Y2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRy
YW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZv
clB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdl
KHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVz
b3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4u
YjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlk
UmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3Ry
aW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVW
YWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNU
ZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQo
Ik9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAgY2hhciogY29va2llSmFy
UGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAgICBpZiAoY29va2llSmFy
UGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAgICAgIHJldHVybiBTdHJp
bmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHJl
dHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAjZWxz
ZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsg
ZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUwOWQ3
NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUlu
Zm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNz
bCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmlu
ZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNv
bnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRf
Y3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0
X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3Vy
bC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5j
cHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBw
c2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRh
IG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hh
ciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4p
KQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmlu
ZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcgKzU4
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGN1
cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFpbjsK
IAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3Bw
CmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBj
b25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsK
K0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9y
RG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2ls
bFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYg
KHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxs
cHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAxMWMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2Up
CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX0hU
VFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOworICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAv
MS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQVmVy
c2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVmYXVs
dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVj
OGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
TGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3
b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9LZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZl
bnRXaW4uY3BwCmluZGV4IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBA
IHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNo
b3J0IGtleUNvZGUpCiB7CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktf
TUVOVToKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0
Il9zOwogICAgICAgICBjYXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRy
b2wiOworICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NI
SUZUOgotICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNo
aWZ0Il9zOwogICAgICAgICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNh
cHNMb2NrIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2Ug
VktfTFdJTjoKICAgICAgICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4i
OworICAgICAgICAgICAgcmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0g
ICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7
CiAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAg
ICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2Ug
VktfRU5EOgotICAgICAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJF
bmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAg
ICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAg
ICAgICAgIGNhc2UgVktfRVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7Cisg
ICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAg
IGNhc2UgVktfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNh
c2UgVktfRjU6Ci0gICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjUiX3M7CiAgICAgICAgIGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAg
ICByZXR1cm4gIkY3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2Ug
VktfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgi
X3M7CiAgICAgICAgIGNhc2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAg
cmV0dXJuICJGMTEiOworICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjEyOgotICAgICAgICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJG
MTIiX3M7CiAgICAgICAgIGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAg
ICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAg
IGNhc2UgVktfRjE1OgotICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0
dXJuICJGMTUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJG
MTYiOworICAgICAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3Ogot
ICAgICAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAg
ICAgICAgIGNhc2UgVktfRjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAg
ICAgcmV0dXJuICJGMTgiX3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0
dXJuICJGMTkiOworICAgICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktf
RjIwOgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAi
X3M7CiAgICAgICAgIGNhc2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAg
ICAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAg
ICAgcmV0dXJuICJGMjIiOworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNh
c2UgVktfRjIzOgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJu
ICJGMjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQi
OworICAgICAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAg
ICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAg
ICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAg
ICAgICByZXR1cm4gIkhvbWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAg
ICAgcmV0dXJuICJJbnNlcnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAg
ICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAg
ICByZXR1cm4gIkxlZnQiX3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJl
dHVybiAiUGFnZURvd24iOworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAg
ICAgY2FzZSBWS19QUklPUjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAg
ICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAg
ICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAg
ICBjYXNlIFZLX1NOQVBTSE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7Cisg
ICAgICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hU
OgotICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0
Il9zOwogICAgICAgICBjYXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xs
IjsKKyAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVD
VDoKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2Vs
ZWN0Il9zOwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7Cisg
ICAgICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQg
REVMIGJlY29tZXMgVSswMDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAg
IHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVND
SUlVcHBlcihrZXlDb2RlKSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgw
N2Q1NzIzNDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2Fs
aXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBh
bGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwg
ZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdp
c3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAg
LTc0LDM0ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRl
bnNpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJp
bmc+IG1pbWV0eXBlTWFwOwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgLy9maWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0
eHQiLCAidGV4dC9wbGFpbiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBs
aWNhdGlvbi9wZGYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlv
bi9wb3N0c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3Nz
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieG1sIiwgInRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNs
IiwgInRleHQveHNsIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRp
b24veC1qYXZhc2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxp
Y2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFw
cGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJh
cHBsaWNhdGlvbi9yc3MreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2
ZSIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oi
LCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFn
ZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgidGlmZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNv
IiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9p
Y28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInR4dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInBkZiJfcywgImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgicHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiaHRtbCJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRt
Il9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0
ZXh0L3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZh
c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBw
bGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3Ms
ICJhcHBsaWNhdGlvbi9yc3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJh
cmNoaXZlIl9zLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJzdmciX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgianBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
anBlZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJf
cywgImltYWdlL3BuZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1h
Z2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3Rp
ZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0Uo
SlBFR1hMKQotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAg
ICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4
YzguLjY2ODVlZDk5MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcApAQCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0
YSgpCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5n
PiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5j
ZkZvcm1hdCA9PSB1cmxGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVy
bFdGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0
Iik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9y
bWF0LmNmRm9ybWF0ID09IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNm
Rm9ybWF0ID09IHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5h
ZGQoInRleHQvcGxhaW4iKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwog
fQogCiBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFk
UGFzdGVib2FyZEN1c3RvbURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+
IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQog
ICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5
cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRl
eHQvaHRtbCIpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOwor
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBh
c3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVj
dG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBh
c3RlYm9hcmQ6OnJlYWRPcmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29u
c3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFN
YXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBl
RnJvbU1JTUVUeXBlKHR5cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlw
ZVRleHQpCkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZI
VE1MKG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAg
IH0KIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3Ry
aW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAq
ZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAo
d2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1h
cmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7Cisg
ICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmlu
ZygpLCBjZmh0bWxEYXRhKTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxE
YXRhKGNmaHRtbERhdGEpOwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRh
dGEtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6
Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJp
bmcmIHRpdGxlU3RyKQogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VS
VCh1cmwuaXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAot
ICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0
bGVTdHIsICIuVVJMIiwgdHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRo
RnJvbVVSTE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmlu
ZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJc
biIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAg
LTc2MCw3ICs3NjAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRV
UkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBD
Rl9IVE1MIHRvIGJlIGFibGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMg
YSBsaW5rCiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0
b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVi
b2FyZFVSTC51cmwsIHRpdGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1
cmxUb01hcmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRh
KTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAg
ICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEp
KQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAg
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4
dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWls
YWJsZShDRl9URVhUKSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYg
KEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3Qg
VVRGLTggb3IgZXZlbiBXaW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5n
PwotICAgICAgICAgICAgdGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2so
Y2JEYXRhKSk7CisgICAgICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxj
aGFyKj4oR2xvYmFsTG9jayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNi
RGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VG
aWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBH
bG9iYWxGcmVlKG1lbU9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNp
b24uaW5zZXJ0KCIuIiwgMCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAg
ZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxl
LCBleHRlbnNpb24sIGZhbHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpA
QCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVE
YXRhT2JqZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNo
YXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFy
a3VwVG9DRkhUTUwobWFya3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElV
TSBtZWRpdW0geyB9OwogICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5l
MTY1MzNiZTJkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0
ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5n
KCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2Ug
V2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAg
ICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAg
ICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAg
Y2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJl
dHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsg
V2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldp
bk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNp
b24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICBy
ZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6
bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwg
Jy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMs
MTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcg
YXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAg
ICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAg
IGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FN
RDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBX
aW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNT
T1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7Cisg
ICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBj
ZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcg
KzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBh
Z2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3Rp
bmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJD
bGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRl
ckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVn
YWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNl
L1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJm
YTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAg
Q29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0
LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUi
KTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwog
ICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdl
ID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJv
ck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZi
YWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3
IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFu
ZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5y
ZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93
aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFu
KCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsK
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlv
bjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5n
Q29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsK
KyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmpl
Y3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29u
dGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0g
YnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwg
PSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICgh
dXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6
ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2lu
ZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHks
IHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVs
QnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAg
ICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAg
ICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAg
ICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3
aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdp
bmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFy
YW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0
byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRv
d1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAg
ICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAg
ICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkp
OwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdp
bmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25z
ZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29t
bWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJn
dW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5n
KCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVu
Y3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93
ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAg
ICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1l
bnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdm
aWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAg
ICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRl
cnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3Np
bmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjpl
bGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAg
ICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05T
dHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1
bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwg
ZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0x
ODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAg
ICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFs
c2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJy
b3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgp
KTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAg
ICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0
KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNh
cGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7
CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAg
ICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAg
IGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAg
ICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7
IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29u
c3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAg
ICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZh
bHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAg
IiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAg
ICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFj
dGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAg
ICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAg
ICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAg
ICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRv
SlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpP
YmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tp
ZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
Y29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29r
aWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2ll
T2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9v
cigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tp
ZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0
Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAg
Y29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZh
bHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9z
LCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMi
X3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3Ry
aW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAg
IGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZh
bHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5
MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1
dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRh
YmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRv
ci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShj
b25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9t
YXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBz
d2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpO
b25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAg
ICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1
dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAg
ICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7
CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBl
OjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJu
ICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAg
cmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICBy
ZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNl
IElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAg
ICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2lu
dGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Pcmln
aW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
ICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4g
IlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50
ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAg
ICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVs
ZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVu
dCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4
NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYg
VVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAg
ICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdF
VF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAg
dGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3Ig
KGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0g
YXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChh
cmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0
U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFy
Z3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFy
Z2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5
PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAg
ICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5
T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUg
PSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1
dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nr
c1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyAr
NDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNP
Tjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwt
PmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNv
Y2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5
T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nr
c1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24o
VmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmls
aXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2gg
KGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlz
cyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0Ogot
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0
IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21w
dEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJl
aGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3ku
dmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQ
YWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VM
b2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFn
ZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
ZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJp
dmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2Nr
ZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3Bw
CkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJp
bGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQ
dHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsK
LSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIi
LCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRk
cikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRB
ZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFy
Z2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsK
IAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJn
ZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFy
Z2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIo
dGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tl
dDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJ
bnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRh
cmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBT
ZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tl
dC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQg
SFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBv
aW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2Ug
cmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhU
TUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRN
TCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJl
c3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29k
ZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5j
b2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3Vy
Y2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNl
LCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlk
YXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5l
cmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6
Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBj
b24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRp
c2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0
aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24g
ZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFW
YWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRl
eHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
IGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJp
bmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90
b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9j
b2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAg
ICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOwor
ICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBw
b3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
aAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0
NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9v
bCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNT
dHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9u
YXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxl
KGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsK
LSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmluZzp3
aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
bG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3RoICE9
IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3Ro
OyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAgY2hh
ciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlw
ZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNo
YW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYgc3Ry
Y2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBhdXRv
IG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8vIGBi
b29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICByZXR1
cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBs
b2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKysp
IHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXSkg
IT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
OTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tS
ZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2Vw
dGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAg
U3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsK
LSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWdu
YXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNp
Z25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RT
aWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0
aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0
dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJh
dGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVz
IGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dl
dE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5Qmxv
Y2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3Rl
T2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3Rl
T2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQ
cm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQor
c3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQs
IG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGlu
ZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0
cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9j
a1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBi
CiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVF
bmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWdu
YXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFT
U0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0
dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0
dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudElu
ZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2ln
bmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRh
KCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0
aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25h
dHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVj
dGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9j
b2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9j
a1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1
cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlk
YXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJl
Iik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7
Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSBy
ZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0Zjgo
KS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9j
ayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tl
TWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVj
dEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVj
a2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJ
RCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2Fw
dHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCBy
ZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJk
aW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZh
Y2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24g
Kmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1Jl
bW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNT
QlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVE
ZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNF
cXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6
Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAi
aHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOwor
ICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9
c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9k
aWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBz
dGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vs
c2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJU
ZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBs
YWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29t
L3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOwor
ICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vy
cm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpm
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFn
ZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9h
cHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2
aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2ts
b29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
Ojp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90
IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZk
NzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApA
QCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2Rl
bEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAg
IHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5z
ZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtp
dC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJi
Li5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3Jp
cHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgog
ICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25z
KCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsg
IlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBh
biBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBC
b3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOwor
ICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNl
Y3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVM
RUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03
MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0Nv
bW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRj
aCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRv
OgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJV
KzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAg
ICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZ
Il9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInki
X3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJi
IiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQy
Il9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6
VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywK
LSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAi
S2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAi
dSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUi
X3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3Ms
IDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0
MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNv
bnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtz
KCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQo
KSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFw
cGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNl
ckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xp
ZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5l
Y3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBA
QCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhp
cyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGlu
IG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50
aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1f
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RB
cHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
ID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1
YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYs
NyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBk
b2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRp
YVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50
KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQs
IGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1l
ZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVy
VmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFs
dWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRl
eCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3
ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0
cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVk
aXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29u
c3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmco
U3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFt
bWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJj
MmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
RGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJl
c291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2
b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsK
LSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2Vu
Y29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNl
dE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5
NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAt
MTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZToo
TlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNl
cyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0
dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29s
b3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhG
b250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMyOTBkYWUzNzk0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAtNjIs
MTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwogICAg
IG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vz
c2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVCYXNl
OjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
Y3BwCmluZGV4IDlhMWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0zNCwxMyAr
MzQsMTMgQEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
ZygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNG
RGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjp+
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQog
CiBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9E
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJmNjM3YWJjMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9h
ZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERvd25s
b2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhhc2hTZXQ8SVdl
YkRvd25sb2FkKj46Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwogICAgIGZvciAo
O2kgIT0gbV9kb3dubG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVsZWFzZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAK
aW5kZXggZThlNWY1YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBA
IHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lEZWxl
Z2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZh
dWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVs
ZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURlbGVn
YXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFt
LmNwcAppbmRleCAzNjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5U3RyZWFt
OjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1
ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVt
b3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0i
X3MpOwogfQogCiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQxNS4uZTk3
YzQxMzI0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Q
cm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJv
cGVydHlCYWcuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVydHlCYWc6Oldl
YkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHQK
ICAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFj
dGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJh
ZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWci
X3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVydHlCYWc6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhUTUxG
b3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhmMjcxNjJiYmFm
MS4uZGYxZDI5ZWJhYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGU6
OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsK
IH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlv
bkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNo
ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApp
bmRleCA4MTU3OTk2MTA3NjcuLjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZl
KFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNo
aXZlOjp+V2ViQXJjaGl2ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkFyY2hpdmUiX3MpOwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJm
YWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0
YWMyZDI4MTA0Li4xMTZhYTQyMDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExp
c3Q6OldlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3
YXJkTGlzdAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRM
aXN0LmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldl
YkJhY2tGb3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6
fldlYkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1v
dmUobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFj
a0ZvcndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxC
YWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwCmluZGV4IGRlODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ2FjaGUuY3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBXZWJDYWNoZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2Vi
Q2FjaGUqIFdlYkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li41ZWIxYTM0YTY0
NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAK
QEAgLTQ4LDEzICs0OCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0
aXN0aWNzOjpXZWJDb3JlU3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0
aWNzOjp+V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3Rh
dGlzdGljcyogV2ViQ29yZVN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5mNzhjMWJk
MmE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3Vy
Y2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6fldl
YkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwogICAg
IFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0YVNv
dXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3MjAz
MTVjMy4uOGYzNzY1NDEyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFuYWdl
ciogV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1hbmFn
ZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VNYW5h
Z2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJVW5r
bm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3Vt
ZW50TG9hZGVyLmNwcAppbmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUsNyArMzUs
NyBAQCBXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFTb3VyY2Uo
MCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50
TG9hZGVyIl9zKTsKIH0KIAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRl
cjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIGRhdGEpCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiBX
ZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsKICAg
ICBpZiAobV9kYXRhU291cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERhdGFTb3Vy
Y2UpOwogICAgICAgICBtX2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2Fk
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdl
YkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9hZDo6
fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ryb3lp
bmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9h
ZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMg
QEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3Vy
Y2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4
YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxl
bWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1
bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVs
ZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVs
ZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVu
dFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApp
bmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJy
b3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7
CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0
ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4u
MDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMs
NyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1l
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZy
YW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUo
KQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1l
OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9h
ZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBt
aW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xl
bihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5n
ID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsK
IAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdM
ZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdl
YkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNl
bGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAg
ICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3Bw
CkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUo
ZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6
fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAog
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3
Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBA
QCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdl
b2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwx
MyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdl
b2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9u
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9u
Il9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4
IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJl
cHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZy
YW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2Yx
ZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJh
Zz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0
b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
SGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJl
ZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6
V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5
KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBo
aXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0u
Z2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJI
aXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpA
QCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBo
aXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJ
dGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7
CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5
Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYklu
c3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNw
cApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcq
IGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJU
X0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rv
cjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
IFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1
ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNj
cmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNj
cmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2Ny
aXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFT
Y3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNj
cmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXgg
Y2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNz
RmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNv
cmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NG
YWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwx
MyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3Ai
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0K
IAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29w
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7
CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRl
eCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVW
aWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9
CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9
CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApp
bmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAg
ICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFi
bGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAt
OTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmln
YXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcy
LDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdh
dGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5h
dmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJ
V2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBT
dHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3du
KiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYo
KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJO
b3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlv
biJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3
ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1f
dXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2Vi
Tm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biog
YW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDky
NTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3Rp
ZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlx
dWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQog
CiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmlj
YXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNh
dGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEz
IEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJl
bmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVm
ZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMq
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJS
ZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwg
Y29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJl
c291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6
OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0
MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBA
IC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0
T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3Mp
OwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3Qi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9
CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBp
bmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29y
bGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwog
CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlw
dFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7
CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBA
QCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1v
dmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlw
dFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMg
KzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJp
dHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2lu
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNl
Y3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXgg
OGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNW
YWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
ZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2Vy
aWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2Vy
aWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2
YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0
UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRl
cmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVu
ZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0
UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJl
ciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNw
cApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3Nl
bmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0
ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2Mu
LjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMg
KzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBA
IC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRp
YWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENy
ZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRp
YWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90
ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlv
blNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywx
MyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNw
YWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0
aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7
CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAK
aW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJp
bmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUp
CiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25z
ZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVS
TFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3Rh
bmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNl
IC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3Rh
bmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8v
IiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmlu
ZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUs
MTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQu
LmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3
ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldl
YlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdl
YlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3
Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwx
MSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkg
ewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAg
IGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJV
bmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdl
YlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQog
ICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVu
dC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVy
cHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBp
ZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAg
ICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUg
dG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQg
dmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29w
dF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1
dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciov
KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5k
KCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwp
LCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0Nzcz
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUo
KTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAt
OTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3Jl
YXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vy
c1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRl
Il9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtl
cnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJp
dmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NU
aHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0x
MTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0K
IAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAi
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNp
emUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dl
ci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNp
emUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dl
ci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JT
ZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElM
RVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpA
QCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAg
ICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1w
bGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1
cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5k
aWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEt
MSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykp
OworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgx
MnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBj
MjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3
IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJG
cmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAg
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9u
KHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjog
JyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAog
ZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xh
c3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQg
QEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcElu
aXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVND
SUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhw
ZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAg
IGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJl
c3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwv
c2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNw
b25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAg
ICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZy
b20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0g
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlw
dD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsg
Ii8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNv
bnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9t
IHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tX
ZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0
LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8g
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9
IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAi
PHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAg
ICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsg
e3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0g
fSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hl
ZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNv
ZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcy
LmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2
X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVz
cG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9z
Y3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0
KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30p
KSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwK
KyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsK
ICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDgg
QEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0
ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7
Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIv
c3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0s
IGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAg
ICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9y
dCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxl
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgp
XV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vz
c1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5
IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJD
RSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdt
ZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewog
ICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIw
LDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2
ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDgg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRh
dGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
IH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAg
ICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAK
ICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4
cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9y
aWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZp
Y2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRh
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlv
biwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50
ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2Fn
ZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNU
UkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VS
Q0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAg
ZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNP
VVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJt
aXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIv
Il9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVm
YXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlz
c2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9D
RE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RP
QygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJh
bWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3Bl
Omh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkw
OTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0
IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9k
eT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBE
ZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0g
fQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkw
KTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsg
Ii9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1l
VGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lk
IGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3Jl
OjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAg
IFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktp
dC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMg
dm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZp
ZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBw
QnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgy
NSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMg
Y29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyht
c2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
Jy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VS
Q0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3Rl
ckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lz
dGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpA
QCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9z
dy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0Ui
OworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIi
U1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsg
ZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRF
U1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2Vy
cykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFp
bkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAi
L21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsg
eyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2Ny
aXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMp
CiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdv
cmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJv
bSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBm
cm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91
bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0
aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFp
bi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwg
eyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlw
dEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5
dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsK
IAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxs
T3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBV
bnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5y
ZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0
aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RX
aXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJl
M2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpA
QCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VP
ZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAog
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9v
IiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUt
b3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJm
b28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRl
bnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGlj
eSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
ID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBA
QCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vz
c1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2Vy
dmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAg
ICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAg
ICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1s
IiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAi
YmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVu
dC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5
Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9
IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dL
V2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50
aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0
ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5
MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250
ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50
TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0
aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1v
ZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwg
NzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0Nv
bnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENH
U2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8
Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRo
b3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpw
YWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9u
RGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3Rk
OjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2Vi
S2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFp
cjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRl
bGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6
b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9w
dGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktp
dEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBh
dXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdX
aXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBh
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVj
b21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJ
bnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcs
IGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVpl
cm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RF
ZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNp
b25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxk
Q29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJ
IiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUs
IEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAg
ICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRv
IHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7Cisg
ICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJN
b2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
InNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmlu
ZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAx
MDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0
aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxT
dHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7
ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwg
Ym9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmlu
ZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUu
Y29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAg
IGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484790"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456486</attachid>
            <date>2022-04-02 17:42:28 -0700</date>
            <delta_ts>2022-04-02 18:12:59 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>238053</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4ZTU2
NzgyNDIzMS4uM2I3YTc1ZGM3OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwi
OworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5k
YXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCmluZGV4IDMzMDEwOGM2NmRhYS4uYjFmNGM2NDdhNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
QEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3Vj
Y2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRv
IHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5
ZDBjZjYwZS4uYmNiNjc1MWVkYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFy
dGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBt
X2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9hbmltYXRpb25TdGFydFRpbWUpOwogCiAgICAg
bV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50
ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25t
ZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsK
ICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUo
Jm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgw
MjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0g
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmly
ZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlv
bnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJ
bmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwg
ImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAg
ICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFz
dGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFj
Ny4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2lj
UGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5
KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVy
biAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9u
ZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsK
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5
ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7Cisg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA2MDdmMzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVu
Y29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNv
bnRhaW5lclBybwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0
ZTo6c2VsZWN0VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWlt
ZVR5cGUoKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVk
VHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBt
aW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1
ZGlvL21wNCJfczsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3Ig
bWltZS10eXBlICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVu
dFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0
cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpjb250YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9z
KSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAg
ICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRp
b0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0g
ImF1ZGlvL3gtb3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRv
JiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3Vu
ZCkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249
NCJfczsKICAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUlu
aXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRm
b3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8
IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3Vz
dG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
X3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAg
ICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAi
Q0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21h
aW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAg
ICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFp
biA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3Rh
dHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21h
aW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAg
ICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21h
aW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21h
aW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291
cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4p
IHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFp
biA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJy
b3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21h
aW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAg
ICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWlu
ID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0
dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1
ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0
Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0g
ICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVE
ZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAg
YXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmls
ZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0
ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmlj
ZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0
UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0g
Zm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nl
cnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3
YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2Vy
dGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmlj
YXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBD
ZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewot
ICAgIHJldHVybiBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVy
cm9yKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmco
bV92ZXJpZmljYXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0
ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+
IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAg
IFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAg
aWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7Cisg
ICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdp
c3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4u
MDRlNjRjZDJjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVs
dFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRo
KCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0
aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAg
ICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlm
ICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVy
biAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlv
bik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVu
dHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlRW50cnkuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNo
ZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIK
ICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJG
aWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQo
Ii5oZWFkZXIiKTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAK
ICAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50
RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVu
ZCgiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkK
QEAgLTEzOSw5ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFk
ZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsK
ICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0
LT5rZXk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVy
RmllbGQuYXBwZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFs
dWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0g
aGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhl
YWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVu
Z3RoKCkpOwogICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+
a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAy
YzViMzFhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3Vy
bENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rvcnkp
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1f
Y2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBs
b2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNh
dmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5k
KCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2Fj
aGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRl
eEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxl
ID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250
ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJl
cXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhh
bmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVy
OwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsg
dG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAg
ICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwg
JzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAg
ICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1l
LCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIp
OworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBD
dXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAg
ICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhl
YWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBo
ZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7Cisg
ICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVz
dEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJl
cXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5
NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQg
Q3VybERvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5l
d1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09y
aWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAg
ICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0
LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRl
bnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVU
KCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBE
aXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUt
PnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3Zl
UmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zv
cm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5
Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0
TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNv
ZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRh
U3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5h
cHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAg
ICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBj
aHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAg
ICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxf
b2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2
b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1
cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2lu
Z2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2Up
KSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykg
ewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAg
ICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNw
cAppbmRleCBlN2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DdXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVs
dENvb2tpZUphclBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUg
PSAiY29va2llLmphci5kYiI7CiAgICAgY2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VS
TF9DT09LSUVfSkFSX1BBVEgiKTsKICAgICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0
dXJuIGNvb2tpZUphclBhdGg7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tp
ZUphclBhdGgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJu
IGRlZmF1bHRGaWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNT
TEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVp
bnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4g
U1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lv
bihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewot
ICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3Ns
KSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJy
ZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3
MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcg
QEAgc3RhdGljIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29u
c3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2Rv
bWFpbiByZXR1cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUg
aXMgbm8gcHJpdmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFp
biA9IHBzbF9yZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4g
dG9wUHJpdmF0ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21h
aW4gfTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3
OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJv
ciYpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1f
c3NsRXJyb3JzIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUy
OS4uOTlkMDZhMjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9y
OjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNv
dXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNv
dXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXgg
OWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00
NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAg
ICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNH
RVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9z
KTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3
UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1
cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3Bv
bnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJj
ZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJl
c3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0g
ICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lv
bigiSFRUUC8xLjAiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJT
SU9OXzFfMToKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNl
dEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VS
TF9IVFRQX1ZFUlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7Cisg
ICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENVUkxfSFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2Fj
eVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0
aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4IGFh
ZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRpYyBTdHJpbmcga2V5
SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtleUNvZGUpCiB7CiAg
ICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToKLSAgICAgICAgICAg
IHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgICAgICBjYXNl
IFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAgICAg
cmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICAgICAg
cmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9zOwogICAgICAgICBj
YXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAgICAg
ICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJTjoKICAgICAgICAg
Y2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAgICAgICAgICAgcmV0
dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1cm4g
IkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAgICAgIGNhc2UgVktf
RE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAg
ICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAgIC8v
ICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAgICByZXR1cm4gIkVu
dGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAgIGNhc2UgVktfRVhF
Q1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgICAgICByZXR1cm4g
IkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjI6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICByZXR1cm4gIkY0IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktfRjU6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7CiAgICAgICAgIGNh
c2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6Ci0gICAgICAgICAg
ICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjki
X3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOworICAg
ICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEyOgotICAgICAgICAg
ICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgICAgIGNh
c2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAgcmV0dXJuICJGMTQi
OworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2UgVktfRjE1OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAgICAg
cmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAgIGNhc2UgVktfRjE4
OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0dXJuICJGMTgiX3M7
CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgotICAgICAgICAgICAg
cmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAgICAgcmV0dXJuICJG
MjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjIzOgotICAgICAg
ICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMiX3M7CiAgICAgICAg
IGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAgICAgICAgICAgcmV0
dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAgIGNhc2UgVktfSE9N
RToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICByZXR1cm4gIkhvbWUi
X3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQi
OworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNhc2UgVktfTEVGVDoK
LSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiX3M7
CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iOwor
ICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2FzZSBWS19QUklPUjoK
LSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZVVw
Il9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0dXJuICJQYXVzZSI7
CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNlIFZLX1NOQVBTSE9U
OgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgICAgICByZXR1cm4g
IlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgcmV0
dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgICAgICBjYXNl
IFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAgICAgICAgICAgIHJl
dHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAgICAgICAgICAgIHJl
dHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgICAgICBj
YXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1cm4g
IlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdG
LgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiAiVSswMDdGIjsK
KyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBlcihrZXlDb2RlKSwg
NCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6
ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIzNDMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNw
cApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxvYWRG
aWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9hZCI7
CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJldHVy
biAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXgg
YjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBAQCBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBz
dHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFwOwog
ICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGggaW5p
dGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFpbiIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwgInRl
eHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1s
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlvbi94
LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uvc3Zn
K3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJpbWFn
ZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3
bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCJf
cywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywgImFw
cGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJhcHBs
aWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiX3Ms
ICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRleHQv
aHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1sIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwreG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciX3Ms
ICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9zLCAi
aW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAiaW1h
Z2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdlL2pw
ZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCJf
cywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMi
X3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQogICAgIFN0cmluZyBy
ZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2ODVlZDk5MzY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAt
MjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBzdGF0aWMgdm9pZCBh
ZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29uc3Qg
Rk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxGb3Jt
YXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3JtYXQoKS0+Y2ZGb3Jt
YXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHJlc3Vs
dHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09IHBs
YWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4
dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iKTsK
KyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURh
dGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVz
U2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICAgICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmkt
bGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCIpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRU
eXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRPcmln
aW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQog
ewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgQ2xp
cGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUp
OwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCkBAIC0zNDEsNyAr
MzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0YU9iamVjdC5n
ZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAotICAgIHJldHVybiAi
IjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI1LDcgKzQyNSw3
IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1
cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRv
TWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAgIG1hcmt1cFRvQ0ZI
VE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBjZmh0bWxEYXRhKTsK
ICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEpOwog
ICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRtbEZv
cm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVt
LmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxU
b0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQogICAg
IFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJSSgp
KTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1BhdGgg
PSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIiwgdHJ1
ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJs
LCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5nKCJb
SW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJpbmcg
Y29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwp
CiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFibGUg
dG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYgKDo6
T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAg
ICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxl
KSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0ZWJv
YXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAgICAgICAgSEdMT0JB
TCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6U2V0Q2xp
cGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAgICAgOjpH
bG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ks
IHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAmJiA6
Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEgPSA6
OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTggb3IgZXZlbiBXaW5k
b3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAgICAgICAgICAgdGV4
dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSk7CisgICAgICAg
ICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayhj
YkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAg
ICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTAsNyArOTUw
LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxGcmVlKG1lbU9iaik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwgMCk7
CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRoID0gZmlsZVN5c3Rl
bVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24sIGZhbHNl
KTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5Niw3ICsxMDk2LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAo
Y29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgbWFy
a3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9DRkhUTUwobWFya3Vw
LCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRpdW0geyB9OwogICAg
IG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNiZTJkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4NSwy
NSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdpbmRv
d3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9zOwog
ICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiOwor
ICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3MzXzE6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRvd3Mg
My4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6Ci0g
ICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5OCJf
czsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBXaW4g
OXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7CiAg
ICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAgICAg
cmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05UMykg
PyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFtZSAr
IFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9CiAK
IHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdPUkQg
cHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9rZW5G
b3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7IFdP
VzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNo
aXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICByZXR1
cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwogICAg
IGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lB
NjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAiOyBX
aW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50
ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRP
dXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigp
LnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9u
KCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6
c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5k
UmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29t
bWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVy
cm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9y
ID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdl
dFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3Qt
PmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6
aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21w
bGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRv
IGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0
Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxv
ZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAg
ICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEz
IEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVz
dWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8g
YnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29u
dGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3Vs
dDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5n
ZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQt
PmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0
OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09y
aWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNl
dERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERv
dWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91
YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0
KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgi
d2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJs
ZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0
RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXpl
LT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFy
YW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAg
ICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFt
ZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0x
NzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25z
dCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1
bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5n
KGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGlj
IGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIg
YXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIK
ICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1
dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4g
eyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdt
dWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2Ug
fTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJv
d3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkp
OwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRv
IGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hT
dHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBz
dGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsi
CiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSki
CiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2
b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBG
dW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAg
ICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7
CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRs
ZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3
MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxv
YWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7
CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmlj
dEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1
cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50
Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0
IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2
LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50
SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAg
ICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVu
dC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJv
b3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAi
ICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAn
RWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOwor
ICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1l
bnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+
cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAg
LTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21h
dGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tp
ZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmlu
ZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmco
InBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNv
b2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3Io
ZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9z
LCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRC
b29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7
CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnku
dmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywg
Y29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7
CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBT
ZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0
IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10g
eyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYg
aW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNv
bnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNl
LnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1
cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJj
ZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlw
ZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5
cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1
cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAg
ICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAg
ICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAg
ICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsK
KyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBl
OjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwi
X3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5
cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmln
aW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJP
cmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAg
ICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBv
aW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRl
ciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJl
dHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJE
cml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNl
cnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2
ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZlclNl
cnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NL
RVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNoYXIq
IHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAgICAg
IHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3Ry
aW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkgPCBh
cmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1LDcg
Kzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsg
YXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcsNyAr
OTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikK
ICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAg
ICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0
YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5n
IHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQx
LDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5
KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBz
VVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAg
ICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJz
b2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRW
YWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZh
bHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9i
amVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tz
VmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAg
ICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJz
b2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBA
QCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGll
cz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVj
dC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhh
bmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlz
bWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZp
b3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJp
bmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywg
ImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNt
aXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2Nl
cHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJp
bmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3Jl
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRT
dHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpO
b25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdl
TG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1h
bDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxv
YWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFn
ZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VM
b2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmls
aXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmls
aXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29j
a2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIg
QEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046
Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRh
cmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hlZENh
cGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFsdWUp
ICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1hdGNo
ZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAgICAg
IGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxKU09O
OjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlmICht
YXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdldFBv
cnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisgICAg
aWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9zLCB0
YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQp
KQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwIGIv
U291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzliN2Nh
NGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBT
ZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVy
OjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklE
CiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAg
ICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAg
ICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAg
ICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAg
ICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4
YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0Nv
bW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRv
VGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUp
KSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgot
ICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZh
aWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZh
bGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEs
NyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29u
c3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0
ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewog
ICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAg
ICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJl
LiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChT
U0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICBy
ZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJl
dHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9j
b2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4gIlVu
a25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZk
ODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rp
b25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9k
U2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNTQs
MjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVk
T2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYgd2ly
ZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwgPT0g
d2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmluZzp3aXJlXSA9PSAgTlNPcmRlcmVk
U2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkgIT0g
d2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5ndGgo
KTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
Y2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdpcmVb
aV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJlVHlwZSkgewotICAgICAgICAgICAg
Ly8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCi0gICAgICAg
ICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYgc3RyY2hyKCJCYyIsIHdpcmVUeXBl
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBhdXRvIG1hcENoYXJhY3RlciA9IFtd
KHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBj
aGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICByZXR1cm4gYyA9PSAnQicgPyAnYycg
OiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7CisgICAg
Zm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG1h
cENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDppXSkgIT0gbWFwQ2hhcmFjdGVyKFt3
aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTcwLDkgKzk2Nyw4IEBAIHN0
YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVy
ICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZv
Y2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhv
ZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxN
ZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5n
LlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5T
U3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVy
ZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21w
YXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3Jt
YXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJs
ZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDog
IihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJl
bW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9
CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2ws
IFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpy
ZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJ
bnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0
aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRN
ZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5
NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2Nv
bCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0
aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJl
ICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0
aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RT
aWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1
cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RT
aWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90
eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9k
Oihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9j
YXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJl
QmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBl
czpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwot
ICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1
cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAg
ICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25h
dHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgp
XS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUg
PSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNl
bGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwo
KSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxv
Y2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xv
ZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1
cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVk
QmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZv
a2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9
ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJL
aXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAg
fTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVw
bHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJl
cGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9j
a1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3Ry
eSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAg
IGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3
aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAg
ICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIg
YWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0
aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUx
MzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4
IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1
bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmlu
ZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlBy
b3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNv
bS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29t
L3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0
dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJl
dHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZh
cmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9y
dEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4g
cmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3Vs
dC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAg
cmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFy
aSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBv
cnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNl
Yy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9z
OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNl
NS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsy
OTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0
cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdB
Y3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tf
YnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVk
KG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQi
X3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJl
dmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJp
bmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnko
KSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNl
TmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAg
IHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5z
ZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUx
LDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1l
LCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hv
dWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRl
IEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWlu
Il9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAg
Ym91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9h
ZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
NzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2
b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAg
IGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6
IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJf
cywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywg
OTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86
Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUr
MDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAg
ICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAi
YiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAg
ICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDki
LCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAg
IlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1Iiwg
IktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAg
ICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdl
YlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2lu
Z0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikK
LSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0s
ICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0
aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAx
MDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENs
aWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICgh
bV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAh
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0
IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxk
cyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUg
bnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5n
SWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBt
X2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2Vi
S2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAg
ICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9P
TClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9j
dW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUo
bWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1l
ZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZp
ZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVh
dGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3Ig
eyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50
LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0
LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5
OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBp
bnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0
b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lk
IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9y
PFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCog
YmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAt
MjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJP
T0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRl
eHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3By
aXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmdd
KTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
ZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAg
LSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBm
cmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5z
ZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdp
bmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFs
bGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRp
bmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNv
bG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0
TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVC
YXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMyOTBkYWUzNzk0MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vz
c2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQg
d2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwogICAgIG1fb2JqZWN0LT5zZXRXcmFw
cGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJs
ZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vzc2libGVCYXNlKCkKIHsKICAg
ICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJs
ZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9z
KTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVCYXNlOjpjcmVhdGVJbnN0YW5jZShB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IDlhMWYwMTEy
MjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIENGRGljdGlv
bmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5
QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjp+Q0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDT01QdHI8Q0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJmNjM3YWJjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKQEAgLTQ1LDEz
ICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIERlZmF1bHREb3dubG9hZERlbGVn
YXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiB9CiAK
IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVs
dERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhhc2hTZXQ8SVdlYkRvd25sb2FkKj46Oml0ZXJh
dG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwogICAgIGZvciAoO2kgIT0gbV9kb3dubG9hZHMu
ZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKaW5kZXggZThlNWY1YzRjYzEx
Li4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1
bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVs
dFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHR5cGVkZWYgZW51bSBXZWJF
eHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6RGVmYXVsdFBvbGlj
eURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6
On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpzaGFyZWRJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRj
ZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
TWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZl
cikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1l
bW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIl9z
KTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBDT01QdHI8
TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9u
UHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQxNS4uZTk3YzQxMzI0NzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCkBAIC00
NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFn
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHQKICAgICAsIG1fZnJhbWUoV1RG
TW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnOjp+
V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJBY3Rp
b25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4mJiBmb3Jt
LCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhmMjcxNjJiYmFmMS4uZGYxZDI5ZWJhYjM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApA
QCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OldlYkFwcGxpY2F0aW9uQ2Fj
aGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRp
b25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAog
V2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3Njcu
LjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAg
LTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiX3Mp
OwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0YWMyZDI4MTA0Li4xMTZhYTQy
MDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJk
TGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tG
b3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNr
Rm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJk
TGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgp
CkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExp
c3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRl
ODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUu
Y3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDYWNo
ZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUi
X3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGUqIFdlYkNhY2hlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li41ZWIxYTM0YTY0NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTQ4LDEzICs0OCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0aXN0aWNzOjpXZWJDb3JlU3Rh
dGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJD
b3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzOjp+V2ViQ29yZVN0YXRp
c3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljcyogV2ViQ29yZVN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5mNzhjMWJkMmE4NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdlYkRh
dGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAg
ICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2U6On5XZWJEYXRhU291cmNl
KCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQogICAg
ICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwogICAgIFdlYkRhdGFTb3VyY2VDb3Vu
dC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291
cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0YVNvdXJjZTo6Y3JlYXRlSW5zdGFu
Y2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3MjAzMTVjMy4uOGYzNzY1NDEyNTZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
QEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFuYWdlciogV2ViRGF0YWJhc2VNYW5h
Z2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1hbmFnZXI6OldlYkRhdGFiYXNlTWFu
YWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0
YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VN
YW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAppbmRl
eCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBXZWJEb2N1bWVudExv
YWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFTb3VyY2UoMCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsKIH0KIAog
UmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIGRhdGEpCkBAIC00
Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNy
ZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiBXZWJEb2N1bWVudExvYWRlcjo6
fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsKICAgICBpZiAobV9kYXRhU291cmNl
KSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERhdGFTb3VyY2UpOwogICAgICAgICBtX2Rh
dGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNw
cAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkOjp+V2ViRG93
bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKICAg
ICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQgKCVwKSIs
IHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRy
b3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAK
aW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6
V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRy
b3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3Mp
OwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERN
RVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2MWYx
NzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJv
cGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpX
ZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDog
bV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJf
cyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZygp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBXZWJF
bGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVhMWMu
LjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJy
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYs
MTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+
V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJy
b3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJh
bWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpA
QCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwog
ICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgp
CkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6
OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJp
bmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAg
IGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7Cisg
ICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNv
ZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFt
ZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwo
KQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0g
ICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUo
KSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5l
eGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAK
aW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzksMTMg
QEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQdHI8
RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlz
dGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZyYW1l
PiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9j
YXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcxYWRk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2Nh
dGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9j
YXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0
YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09NUHRy
PFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZUlu
c3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24o
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdl
b2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJFU1VM
VCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4uODZh
M2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVw
cmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpX
ZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhU
TUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJl
cHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJl
cHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+
V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50
LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBXZWJI
VE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4ZTVm
NmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4
OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9G
cm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlz
dG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAg
ICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5j
ZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJI
aXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAK
aW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0ZW06
OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAgICBo
aXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJ
dGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9
CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBAQCBX
ZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJz
KCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJ
dGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUxLDEz
IEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcs
IFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJW
aWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rvcigp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
Ykluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9y
Il9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6ZnJv
bnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2Ny
aXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAK
QEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3Jp
cHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsK
IH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2Vi
SmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42ZWUw
NzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNz
RmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0
b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xh
c3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklUT3Bl
cmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
S2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xh
c3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5kZXgg
OTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVzc2Fn
ZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxv
b3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3Nh
Z2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjkuLmY1
MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3Rh
dGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGlj
cy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRT
dGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3Rp
Y3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3Rp
Y3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjYu
LjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0
YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFi
bGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6
V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShp
c011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBXZWJN
dXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJsZUlu
c3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJM
UmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRh
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAppbmRl
eCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmlnYXRp
b25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZp
Z2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBXZWJO
YXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2UqIHJl
c3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJlZGly
ZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAK
aW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRp
b246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3Bl
cnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlm
aWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2Uo
KTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVh
dGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJ
UHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNkODg0
MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRp
b25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6Oldl
Yk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9u
Q2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25D
ZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9
CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5k
ZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVuY2Vz
KiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVmZXJl
bmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZl
cmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5k
ZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3Vy
Y2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcm
CiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3Vy
Y2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3Vy
Y2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0
T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAK
IFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRP
YmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdv
cmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRl
eCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29y
bGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAg
YWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3Vu
dDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdv
cmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6
fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7
CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
U2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdv
cmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdv
cmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApp
bmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3Vy
aXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmln
aW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQog
CiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4i
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjEx
ZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6
ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVk
SlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytn
Q2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1Zh
bHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJf
cyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQog
ewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJT
ZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2Vy
aWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdl
YlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00
MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUlu
c3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBX
ZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNV
TFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0
ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEz
IEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVu
dGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAg
V2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVk
ZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJV
UkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJV
UkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAx
OWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJM
UHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNw
YWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFj
ZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQ
cm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3Rl
Y3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5
Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnRE
ZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6
V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJl
c3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJ
bnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJl
c3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJ
V2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBT
dHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdU
Rjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5j
ZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4
NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAg
IC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJD
b250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3
OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcg
KzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmll
dyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29s
IFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQog
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNl
bGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxl
Y3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAg
ICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOwor
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1
dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRv
cigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUu
ZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRp
bmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBl
KCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8g
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVu
dCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7
IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vz
bid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21t
YW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQg
YmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShf
SW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1h
bmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3
ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2Vu
ZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNv
bW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwog
ICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUo
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJT
VFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5
VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJW
aWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVj
dXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtl
cnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRl
LmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdl
YldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2Vi
V29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29y
a2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRl
eCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBU
RVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgx
dSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZh
dWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAog
ICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAog
ICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNT
RVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAi
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0x
LTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NF
UlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIg
QEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRv
IGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFt
YmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9F
USg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsK
IAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3Rv
ckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQ
cml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
U1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcg
KzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3Jp
cHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25z
ZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQg
OiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVu
VGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRp
YXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAK
LSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVND
SUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxw
dHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gn
LCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsn
PHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTog
J3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5l
dyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0Pidd
LCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNl
VHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcp
KSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJf
czsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAt
MzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdz
V2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgn
L2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2Zl
dGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBw
SW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3Bv
bnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAg
ewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisg
ICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9y
dCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29m
dFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAg
ICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3Ms
IHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpz
IH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1
OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJ
bml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
U1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2Vw
dGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2
ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5j
IGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRp
YWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0
ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0
cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5
UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFs
dWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJf
cywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBz
Y3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZp
ZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdv
cmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpp
bmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBA
IC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9u
RXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQog
Ci1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBl
cm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09V
UkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4
dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9
IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBA
IC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1z
dGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5Pgog
PGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVy
b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4x
OjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9i
b2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9
IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFt
ZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9D
RE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBl
cm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9z
LCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVU
ZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxs
cHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5k
ZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
QEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7
CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
VGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0
SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2
b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2Vy
Q29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIi
U1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUw
LDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUg
QEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rp
b24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsK
IAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4
OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBt
YWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFs
c2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBs
ZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdv
cmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2Vydmlj
ZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4u
aHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNE
b25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5y
ZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAg
eyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVE
YXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05Njcs
NyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdv
cmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25l
ID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2Vz
cyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFp
bi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkz
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDgg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkK
ICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0s
IHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIi
IH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAg
ICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQv
aHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2lu
Il9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAg
ICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24u
aHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1Pcmln
aW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9o
dG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4i
X3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7
CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAz
M2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNv
dmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAi
LyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENv
bnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcg
KzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5
cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0
Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXpl
TWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250
ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3
Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRl
bnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBh
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUg
c2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0Ns
YXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50
TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUg
c2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRl
bGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhb
W0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyAr
MzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9k
ZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBp
UGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVw
V2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAi
VGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9k
ZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAg
ICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJN
b3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5
LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZv
ckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0
IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVl
LCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRl
bnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0p
OwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGlj
eURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dl
YlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2Vu
dCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWlu
LmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFy
eVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBl
eGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1
NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBh
Y3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAot
ICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFV
UkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1
bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484795"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456487</attachid>
            <date>2022-04-02 18:12:59 -0700</date>
            <delta_ts>2022-04-02 18:23:27 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>244287</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4ZTU2
NzgyNDIzMS4uM2I3YTc1ZGM3OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwi
OworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5k
YXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCmluZGV4IDMzMDEwOGM2NmRhYS4uYjFmNGM2NDdhNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
QEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3Vj
Y2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRv
IHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5
ZDBjZjYwZS4uYmNiNjc1MWVkYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFy
dGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBt
X2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9hbmltYXRpb25TdGFydFRpbWUpOwogCiAgICAg
bV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50
ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25t
ZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsK
ICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUo
Jm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgw
MjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0g
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmly
ZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlv
bnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJ
bmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwg
ImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAg
ICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFz
dGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFj
Ny4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2lj
UGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5
KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVy
biAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9u
ZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsK
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5
ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7Cisg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0Ny4uYWU0MzllMzBmMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikK
IAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKLSAgICB0ZXh0
LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgbmFtZSgp
LCBjb250ZXh0KCkpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTgiX3MsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQog
ewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHVybC51cmwuc3RyaW5nKCkp
OworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdXJsLnVybC5zdHJpbmco
KSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRU
eXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAg
ICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7CisgICAgd3Jp
dGVTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdGV4dCk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGxhdGZvcm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcAppbmRleCBhMzRkYzIyMGJiYjkuLjg0
MzIzMWQzYjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTc3MywxMDEgKzc3
MywxMDEgQEAgU3RyaW5nIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvcldQ
RUtleUNvZGUodW5zaWduZWQga2V5Q29kZSkKICAgICBjYXNlIFdQRV9LRVlfTWVudToKICAgICBj
YXNlIFdQRV9LRVlfQWx0X0w6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9SOgotICAgICAgICByZXR1
cm4gIkFsdCI7CisgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9DbGVh
cjoKLSAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Rvd246Ci0gICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgIHJl
dHVybiAiRG93biJfczsKICAgICAgICAgLy8gIkVuZCIKICAgICBjYXNlIFdQRV9LRVlfRW5kOgot
ICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAv
LyAiRW50ZXIiCiAgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKICAgICBjYXNlIFdQRV9LRVlf
S1BfRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKLSAgICAgICAgcmV0dXJuICJFbnRl
ciI7CisgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0V4ZWN1dGU6
Ci0gICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE6Ci0gICAgICAgIHJldHVybiAiRjEiOworICAgICAgICByZXR1
cm4gIkYxIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjoKLSAgICAgICAgcmV0dXJuICJGMiI7Cisg
ICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YzOgotICAgICAgICByZXR1
cm4gIkYzIjsKKyAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjQ6Ci0g
ICAgICAgIHJldHVybiAiRjQiOworICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9GNToKLSAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgIHJldHVybiAiRjUiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Y2OgotICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgcmV0dXJu
ICJGNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjc6Ci0gICAgICAgIHJldHVybiAiRjciOworICAg
ICAgICByZXR1cm4gIkY3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GODoKLSAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y5OgotICAg
ICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjEwOgotICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICAgIHJldHVybiAiRjEwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMTE6Ci0gICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgcmV0
dXJuICJGMTEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMjoKLSAgICAgICAgcmV0dXJuICJGMTIi
OworICAgICAgICByZXR1cm4gIkYxMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjEzOgotICAgICAg
ICByZXR1cm4gIkYxMyI7CisgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMTQ6Ci0gICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0YxNToKLSAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICByZXR1
cm4gIkYxNSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE2OgotICAgICAgICByZXR1cm4gIkYxNiI7
CisgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTc6Ci0gICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxODoKLSAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICByZXR1cm4gIkYxOCJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjE5OgotICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgIHJldHVy
biAiRjE5Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjA6Ci0gICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMToKLSAgICAgICAg
cmV0dXJuICJGMjEiOworICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjIyOgotICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMjM6Ci0gICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgcmV0dXJu
ICJGMjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyNDoKLSAgICAgICAgcmV0dXJuICJGMjQiOwor
ICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICBjYXNlIFdQRV9LRVlfSGVscDoKLSAgICAgICAg
cmV0dXJuICJIZWxwIjsKKyAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9Ib21lOgotICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICByZXR1cm4gIkhvbWUiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0luc2VydDoKLSAgICAgICAgcmV0dXJuICJJbnNlcnQiOworICAg
ICAgICByZXR1cm4gIkluc2VydCJfczsKICAgICBjYXNlIFdQRV9LRVlfTGVmdDoKLSAgICAgICAg
cmV0dXJuICJMZWZ0IjsKKyAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgIGNhc2UgV1BFX0tF
WV9QYWdlX0Rvd246Ci0gICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIl9zOwogICAgIGNhc2UgV1BFX0tFWV9QYWdlX1VwOgotICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Q
YXVzZToKLSAgICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgIHJldHVybiAiUGF1c2UiX3M7
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfUHJpbnRTY3JlZW46CiAgICAgY2FzZSBXUEVfS0VZX1By
aW50OgotICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiJfczsKICAgICBjYXNlIFdQRV9LRVlfUmlnaHQ6Ci0gICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9TZWxlY3Q6
Ci0gICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgcmV0dXJuICJTZWxlY3QiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX1VwOgotICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgcmV0dXJu
ICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KICAgICBjYXNlIFdQRV9LRVlfRGVsZXRlOgotICAgICAgICByZXR1cm4gIlUrMDA3RiI7Cisg
ICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Ci0g
ICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAgICAgICAgcmV0dXJuICJVKzAwMDgiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0lTT19MZWZ0X1RhYjoKICAgICBjYXNlIFdQRV9LRVlfMzI3MF9CYWNrVGFi
OgogICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIHJldHVybiAiVSswMDA5IjsKKyAgICAg
ICAgcmV0dXJuICJVKzAwMDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdm
MzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29u
dGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBy
bwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9
IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJf
czsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBl
ICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBD
b250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNv
ZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250
YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2Ug
aWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1l
ID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykg
eyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIs
MTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAg
ICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3Iu
Z2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9
PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JE
b21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAg
ZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2Rv
bWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJv
ckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkK
LSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZF
cnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JE
b21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAg
ICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9k
b21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NG
RXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21h
aW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
Q0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBj
YXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3Vz
dG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoK
LSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtD
RlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NT
dGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRv
bWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlz
TG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlm
ICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBG
aWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxl
UGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxl
RGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAi
TlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRl
SW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRp
ZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nl
cnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBD
ZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0
ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVy
biBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAg
ICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmlj
YXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZp
Y2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBz
aXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApA
QCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUph
ckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyBy
ZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVl
c3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJl
cXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJj
N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JV
UkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJp
bmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQot
ICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxh
c3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNs
YXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsK
IAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNv
bnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5l
cmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIi
KTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2Nv
bnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUu
YXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRl
bnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5
ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGls
ZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0g
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBw
ZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAg
ICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVu
ZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmll
bGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUs
IGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwog
ICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIu
YXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgo
KTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgp
CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRl
eEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5k
YXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJp
bmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRo
KTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpX
cml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
CkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFk
ZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBw
ZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAg
aWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBj
dXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIu
YXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIu
YXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2
YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFw
cGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxl
OjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQg
YSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxs
IGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBw
ZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBo
ZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihX
VEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFk
ZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5
MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25s
b2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAK
ICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsK
LSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBC
b2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBt
X2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRo
ZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJl
cXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhl
YWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3Ry
ZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMs
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQog
ewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBs
b25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNo
b3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1
ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxI
YW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9z
KTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1f
Y3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1f
Zm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
Z2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAg
ICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAg
ICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAg
IG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBl
N2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUph
clBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2ll
Lmphci5kYiI7CiAgICAgY2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVf
SkFSX1BBVEgiKTsKICAgICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tp
ZUphclBhdGg7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgp
OwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRG
aWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxw
ZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRp
ZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBT
dHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92
ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07
CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVy
biBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAg
cmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhl
cihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5m
OWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGlj
IFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0
eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1
cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJp
dmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9y
ZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0
ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2
OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3Jz
IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZh
MjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJy
b3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9y
OjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9y
IFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgx
YTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYy
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1
ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVx
dWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5j
bGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmlu
ZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0
dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNl
dEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8x
LjAiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToK
LSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJz
aW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZF
UlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNl
dEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxf
SFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IGFhMDBh
NGFkNmY1Yi4uYTQ0ZTQzNmI2NWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTQzNCw4ICs0MzQsOCBAQCB2b2lkIExvY2FsZVdpbjo6
aW5pdGlhbGl6ZUxvY2FsZURhdGEoKQogICAgIFN0cmluZyBuZWdhdGl2ZVN1ZmZpeCA9IGVtcHR5
U3RyaW5nKCk7CiAgICAgc3dpdGNoIChuZWdhdGl2ZUZvcm1hdCkgewogICAgIGNhc2UgTmVnYXRp
dmVGb3JtYXRQYXJlbnRoZXNpczoKLSAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCI7Ci0gICAg
ICAgIG5lZ2F0aXZlU3VmZml4ID0gIikiOworICAgICAgICBuZWdhdGl2ZVByZWZpeCA9ICIoIl9z
OworICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9ICIpIl9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE5lZ2F0aXZlRm9ybWF0U2lnblNwYWNlUHJlZml4OgogICAgICAgICBuZWdhdGl2ZVByZWZp
eCA9IG5lZ2F0aXZlU2lnbiArICIgIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9LZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwCmluZGV4IGFhZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAx
IEBAIHN0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVk
IHNob3J0IGtleUNvZGUpCiB7CiAgICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2Ug
VktfTUVOVToKLSAgICAgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAi
QWx0Il9zOwogICAgICAgICBjYXNlIFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNv
bnRyb2wiOworICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZL
X1NISUZUOgotICAgICAgICAgICAgcmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4g
IlNoaWZ0Il9zOwogICAgICAgICBjYXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4g
IkNhcHNMb2NrIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNh
c2UgVktfTFdJTjoKICAgICAgICAgY2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJX
aW4iOworICAgICAgICAgICAgcmV0dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6
Ci0gICAgICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIi
X3M7CiAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7Cisg
ICAgICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNh
c2UgVktfRU5EOgotICAgICAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJu
ICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0g
ICAgICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7
CiAgICAgICAgIGNhc2UgVktfRVhFQ1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7
CisgICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYz
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAg
ICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAg
IGNhc2UgVktfRjU6Ci0gICAgICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjUiX3M7CiAgICAgICAgIGNhc2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNh
c2UgVktfRjg6Ci0gICAgICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjgiX3M7CiAgICAgICAgIGNhc2UgVktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAg
ICAgcmV0dXJuICJGMTEiOworICAgICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNh
c2UgVktfRjEyOgotICAgICAgICAgICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTIiX3M7CiAgICAgICAgIGNhc2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMi
OworICAgICAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjE1OgotICAgICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAg
cmV0dXJuICJGMTUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTYiOworICAgICAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3
OgotICAgICAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7
CiAgICAgICAgIGNhc2UgVktfRjE4OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAg
cmV0dXJuICJGMTkiOworICAgICAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjIwOgotICAgICAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJG
MjAiX3M7CiAgICAgICAgIGNhc2UgVktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjIzOgotICAgICAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0
dXJuICJGMjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJG
MjQiOworICAgICAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoK
LSAgICAgICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7
CiAgICAgICAgIGNhc2UgVktfSE9NRToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAg
ICAgICAgICByZXR1cm4gIkhvbWUiX3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAg
ICAgICAgcmV0dXJuICJJbnNlcnQiOworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgICAgIGNhc2UgVktfTEVGVDoKLSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAg
ICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAg
IHJldHVybiAiUGFnZURvd24iOworICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAg
ICAgICAgY2FzZSBWS19QUklPUjoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAg
ICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAg
ICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAg
ICAgICBjYXNlIFZLX1NOQVBTSE9UOgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7
CisgICAgICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJ
R0hUOgotICAgICAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJp
Z2h0Il9zOwogICAgICAgICBjYXNlIFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Ny
b2xsIjsKKyAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NF
TEVDVDoKLSAgICAgICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAi
U2VsZWN0Il9zOwogICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7
CisgICAgICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRo
YXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRv
QVNDSUlVcHBlcihrZXlDb2RlKSwgNCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2Eu
LjgwN2Q1NzIzNDMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xv
Y2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9M
b2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmlu
ZyBhbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJh
bGwgZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5
cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAK
QEAgLTc0LDM0ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JF
eHRlbnNpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+IG1pbWV0eXBlTWFwOwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy9maWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ0eHQiLCAidGV4dC9wbGFpbiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJh
cHBsaWNhdGlvbi9wZGYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNh
dGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQv
Y3NzIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieG1sIiwgInRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
eHNsIiwgInRleHQveHNsIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGlj
YXRpb24veC1qYXZhc2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFw
cGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwg
ImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIs
ICJhcHBsaWNhdGlvbi9yc3MreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJj
aGl2ZSIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2
Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJp
bWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVn
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgidGlmZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aWNvIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInR4dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInBkZiJfcywgImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiaHRtbCJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aHRtIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3Ms
ICJ0ZXh0L3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94
c2wiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1q
YXZhc2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNh
dGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAi
YXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3Mi
X3MsICJhcHBsaWNhdGlvbi9yc3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3
ZWJhcmNoaXZlIl9zLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJzdmciX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgianBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgianBlZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBu
ZyJfcywgImltYWdlL3BuZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAi
aW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdl
L3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBV
U0UoSlBFR1hMKQotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlm
CiAgICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2
YzM4YzguLjY2ODVlZDk5MzY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcApAQCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFz
RGF0YSgpCiBzdGF0aWMgdm9pZCBhZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3Ry
aW5nPiYgcmVzdWx0cywgY29uc3QgRk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1h
dC5jZkZvcm1hdCA9PSB1cmxGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09
IHVybFdGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1s
aXN0Iik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAo
Zm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0
LmNmRm9ybWF0ID09IHBsYWluVGV4dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0
cy5hZGQoInRleHQvcGxhaW4iKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3Mp
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpy
ZWFkUGFzdGVib2FyZEN1c3RvbURhdGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJp
bmc+IFBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2lu
KQogICAgICAgICAgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2Fy
ZFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvaHRtbCIpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3Mp
OworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRv
VmVjdG9yKGRvbVBhc3RlYm9hcmRUeXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5n
IFBhc3RlYm9hcmQ6OnJlYWRPcmlnaW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmco
Y29uc3QgU3RyaW5nJiB0eXBlKQogewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0Rh
dGFNYXAuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogCiAgICAgQ2xpcGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRU
eXBlRnJvbU1JTUVUeXBlKHR5cGUpOwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRh
VHlwZVRleHQpCkBAIC0zNDEsNyArMzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJp
bmcoY29uc3QgU3RyaW5nJiB0eXBlKQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0
Q0ZIVE1MKG1fZGF0YU9iamVjdC5nZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwog
ICAgIH0KIAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAog
U3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0
eXBlKQpAQCAtNDI1LDcgKzQyNSw3IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVj
dCAqZGF0YSwgY29uc3QgVVJMJiB1cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBp
ZiAod2l0aEhUTUwpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAg
IG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7
CisgICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0
cmluZygpLCBjZmh0bWxEYXRhKTsKICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9i
YWxEYXRhKGNmaHRtbERhdGEpOwogICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVE
KGRhdGEtPlNldERhdGEoaHRtbEZvcm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAg
ICA6Okdsb2JhbEZyZWUobWVkaXVtLmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlU3RyKQogICAgIFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFT
U0VSVCh1cmwuaXNBbGxBU0NJSSgpKTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4K
IAotICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwg
dGl0bGVTdHIsICIuVVJMIiwgdHJ1ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1Q
YXRoRnJvbVVSTE9yVGl0bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0
cmluZyBjb250ZW50U3RyaW5nKCJbSW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAi
XHJcbiIpOwogICAgIENTdHJpbmcgY29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAK
QEAgLTc2MCw3ICs3NjAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRVUkwmIHBhc3RlYm9hcmRVUkwpCiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1h
dCBDRl9IVE1MIHRvIGJlIGFibGUgdG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMg
YXMgYSBsaW5rCiAgICAgaWYgKDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBW
ZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFz
dGVib2FyZFVSTC51cmwsIHRpdGxlKSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRN
TCh1cmxUb01hcmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBk
YXRhKTsKICAgICAgICAgSEdMT0JBTCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwog
ICAgICAgICBpZiAoITo6U2V0Q2xpcGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRh
dGEpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2
YWlsYWJsZShDRl9URVhUKSAmJiA6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAg
aWYgKEhBTkRMRSBjYkRhdGEgPSA6OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBu
b3QgVVRGLTggb3IgZXZlbiBXaW5kb3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29k
aW5nPwotICAgICAgICAgICAgdGV4dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExv
Y2soY2JEYXRhKSk7CisgICAgICAgICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2Fz
dDxjaGFyKj4oR2xvYmFsTG9jayhjYkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2Nr
KGNiRGF0YSk7CiAgICAgICAgICAgICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05NTAsNyArOTUwLDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1h
Z2VGaWxlRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAg
ICBHbG9iYWxGcmVlKG1lbU9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRl
bnNpb24uaW5zZXJ0KCIuIiwgMCk7CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAg
ICAgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRp
dGxlLCBleHRlbnNpb24sIGZhbHNlKTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkg
ewpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFi
bGVEYXRhT2JqZWN0KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7Ci0gICAgbWFya3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAg
bWFya3VwVG9DRkhUTUwobWFya3VwLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01F
RElVTSBtZWRpdW0geyB9OwogICAgIG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJk
Li5lMTY1MzNiZTJkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
eXN0ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5m
by5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1i
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3Ry
aW5nKCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNh
c2UgV2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0
dXJuICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsK
ICAgICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAg
ICAgICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAg
ICByZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAg
ICAgY2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAg
IHJldHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0
dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5
ODsgV2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4g
Ildpbk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZl
cnNpb24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAg
ICByZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmlu
Zzo6bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpv
ciwgJy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsx
NTMsMTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJp
bmcgYXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkK
LSAgICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwog
ICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJF
X0FNRDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAi
OyBXaW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9D
RVNTT1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7
CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMu
LjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2
LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2Um
IHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRl
c3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2Fk
ZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xv
YWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAg
TGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2
OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAor
KysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEg
QEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNv
ZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3Mp
OwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNz
YWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JN
ZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFl
cnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUy
NDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIy
OCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29t
bWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25z
ZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNT
aG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29s
ZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cp
IHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29t
bWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5j
dGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dz
aW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQi
KTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VP
YmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5n
Q29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJs
ID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1
cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlm
ICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3Vs
dDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0
V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+
IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxl
dmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAg
ICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAg
ICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAg
ICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAg
IHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAg
cGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAg
YXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAg
IHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAg
ICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVl
KCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3Zl
KHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9C
YWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNw
b25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAo
Q29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAg
YXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3Ry
aW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQor
ICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAi
ZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRv
TG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAg
ICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVs
ZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7
ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAK
ICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFt
ZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJv
d3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9u
OjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsK
ICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pT
T05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10g
PQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAg
ImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQg
fHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBA
IC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAg
ICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4g
ZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0
ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmco
ImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1
ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlz
KGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAg
ICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVz
dWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8
IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2Up
KSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAg
ICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAi
ICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAg
ICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1l
bnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMo
Y29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAg
ICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50
LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAg
ICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgog
ICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRl
cmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAg
ICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAg
ICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAg
ICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCkt
PnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNv
b2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29v
a2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikp
OworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1
ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNv
b2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAg
ICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5
LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9u
Il9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGly
ZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0
U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOwor
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRl
LnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAt
MjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjpp
bnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0
ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlw
ZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAg
ICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBl
OjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChp
bnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAg
ICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3Vz
ZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJU
eXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0
dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAg
ICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAg
ICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBj
YXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7Cisg
ICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQ
b2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25P
cmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUp
IHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1
cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7Cisg
ICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxl
bWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3
MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYx
LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAj
aWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7
CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RB
UkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAg
ICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBm
b3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJn
ID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVu
dChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBw
b3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50
KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAg
dGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFBy
b3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAg
ICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFs
dWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAg
IGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAs
NyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHko
SlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NV
UkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUo
InNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHBy
b3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFz
b2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Np
b24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBh
YmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0
Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlz
bWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1
bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2Vw
dCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRp
c21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNj
ZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRl
Z3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2Fz
ZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBh
Z2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
UGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2Jq
ZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9z
LCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5
ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29j
a2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2Fw
YWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBS
ZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRk
cjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFk
ZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0
QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJn
ZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmco
dGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRk
cjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0
YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6
dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVn
ZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNv
Y2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+
YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9
IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hU
VFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNv
Y2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVu
ZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9u
c2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsg
Y2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlk
IEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQg
SFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3Zl
KHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVu
Y29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5k
RW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBz
b3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291
cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZh
bGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5n
ZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rl
cjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNl
LCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5z
YXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29w
eVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28K
ICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2Zp
ZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGlu
YXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVy
cm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJv
cigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBz
dHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQ
cm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJv
dG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7
CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24i
OworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhT
dXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1
ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
Ym9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwg
TlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4uMTU3M2RmMmI3MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmpl
Y3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQdHI8QVBJOjpEaWN0
aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5jb2RlciAqLCBpZCk7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkKK2Jvb2wgbWV0aG9k
U2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3RyaW5nICpsb2NhbCkK
IHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlzRXF1YWxUb1N0cmlu
Zzp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBp
ZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAobG9jYWwubGVuZ3Ro
ICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBs
ZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtpXTsKLSAgICAgICAg
Y2hhciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2FsVHlwZSAhPSB3aXJl
VHlwZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRl
cmNoYW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxvY2FsVHlwZSkgJiYg
c3RyY2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBh
dXRvIG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7CisgICAgICAgIC8v
IGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgorICAgICAgICBy
ZXR1cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50ZWdlciBsZW5ndGgg
PSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFjdGVyQXRJbmRleDpp
XSkgIT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0pKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtOTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29kZUludm9jYXRpb24o
V0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlwZVNpZ25hdHVyZSkK
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9wZXJhdGlvbkV4
Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25hdHVyZSJdOwogCi0g
ICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1cmUuVVRGOFN0cmlu
ZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RT
aWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFXZWJLaXQ6Om1ldGhv
ZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVyZSwgbG9jYWxNZXRo
b2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZv
Y2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYgKCFXZWJLaXQ6Om1l
dGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2ln
bmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2ZU9w
ZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1ldGhvZCBzaWduYXR1
cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNlbGVjdG9yID8gc2Vs
X2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAgIGlmIChpc1JlcGx5
QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9f
V0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQuLjU5Njk3ZTI2MmQ5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tS
ZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVt
b3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVt
b3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVy
ZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4
KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2Nv
bCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWly
ZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNv
ZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9y
LCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlC
bG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdl
ciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5
cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RT
aWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAg
IEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2ln
bmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
cmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVu
dEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVy
ZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24u
c2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05T
TWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1Np
Z25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4
cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJv
dG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWdu
YXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZh
bGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0
dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVz
QXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUp
KSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0
ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0
ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJs
b2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52
b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9i
amVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxD
aGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVw
bHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5n
Q2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNl
LCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICpp
bnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3
YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRl
cmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRp
b24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tX
S1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVy
IGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fybmlu
Z0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdh
cmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIg
aXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0
cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVy
biAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmki
OworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90
cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBA
QCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQg
KnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwog
I2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlk
ZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2Nv
bXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUu
Y29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1
cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9z
OworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0
X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
OjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAg
cGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywg
Il9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1Q
cmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVp
Y2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2
NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQu
LmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAg
ICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9u
ZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzI5NDk0MWNh
YTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFT
Y3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rp
b25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxz
IHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBp
biBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpB
cHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJ
Z25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIp
OworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6
OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0Vf
UkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBA
IC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3
aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpV
bmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2
ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAg
QCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywK
KyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAieSIsICJL
ZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAgICAgICAg
InkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAgICAiVSsw
MDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJf
cywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAgICJpIl9z
LCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUi
LCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1IiwgODUsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJVKzAwNTUi
X3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3
ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYp
IGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVp
cmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdl
bnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0
aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYs
NyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lk
ZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAj
aWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8g
VGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hk
IGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lk
ZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAg
IG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29t
LmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hv
c3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBj
Mjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
RE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03
MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50
JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBN
ZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3Vt
ZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1l
bnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxl
KCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJu
IE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVu
ZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5l
dmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApp
bmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3
NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdl
YkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQo
Y29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJp
bmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRH
cmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQu
LmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFp
blJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
ICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcK
IHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rpbmco
W2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXIt
PnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZh
Mzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpA
QCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHls
ZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJl
bmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAg
X3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxl
Q29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3Jh
cGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMyOTBkYWUz
Nzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAt
NjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwog
ICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6fkFj
Y2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVC
YXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0zNCwx
MyArMzQsMTMgQEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJD
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFn
Ojp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwog
fQogCiBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3BlcnR5
QmFnOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9E
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJmNjM3YWJj
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERl
bGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3du
bG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERv
d25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhhc2hTZXQ8
SVdlYkRvd25sb2FkKj46Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwogICAgIGZv
ciAoO2kgIT0gbV9kb3dubG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVsZWFzZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5j
cHAKaW5kZXggZThlNWY1YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEz
IEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5
RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURl
bGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5U3Ry
ZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBt
X2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFt
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
TWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJl
YW0iX3MpOwogfQogCiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUlu
c3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQxNS4u
ZTk3YzQxMzI0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rp
b25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9u
UHJvcGVydHlCYWcuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVydHlCYWc6
OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVm
UHQKICAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdl
YkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlC
YWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVydHlCYWc6
OmNyZWF0ZUluc3RhbmNlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhU
TUxGb3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhmMjcxNjJi
YmFmMS4uZGYxZDI5ZWJhYjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2Fj
aGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNh
Y2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9z
KTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBs
aWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25D
YWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNw
cAppbmRleCA4MTU3OTk2MTA3NjcuLjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQXJjaGl2ZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNo
aXZlKFJlZlB0cjxMZWdhY3lXZWJBcmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJB
cmNoaXZlOjp+V2ViQXJjaGl2ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkFyY2hpdmUiX3MpOwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXgg
OTA0YWMyZDI4MTA0Li4xMTZhYTQyMDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2Fy
ZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tG
b3J3YXJkTGlzdAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0Zvcndh
cmRMaXN0LmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6
fldlYkJhY2tGb3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlz
dDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5y
ZW1vdmUobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2Vi
QmFja0ZvcndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ2FjaGUuY3BwCmluZGV4IGRlODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBXZWJDYWNoZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2Fj
aGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAog
V2ViQ2FjaGUqIFdlYkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li41ZWIxYTM0
YTY0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5j
cHAKQEAgLTQ4LDEzICs0OCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVT
dGF0aXN0aWNzOjpXZWJDb3JlU3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0
aXN0aWNzOjp+V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3Jl
U3RhdGlzdGljcyogV2ViQ29yZVN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5mNzhj
MWJkMmE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFT
b3VyY2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6
fldlYkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwog
ICAgIFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0
YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3
MjAzMTVjMy4uOGYzNzY1NDEyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFu
YWdlciogV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1h
bmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VN
YW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCBXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFTb3Vy
Y2UoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3Vt
ZW50TG9hZGVyIl9zKTsKIH0KIAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIGRhdGEpCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRlcj4g
V2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
CiBXZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsK
ICAgICBpZiAobV9kYXRhU291cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERhdGFT
b3VyY2UpOwogICAgICAgICBtX2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25s
b2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAK
IFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9h
ZDo6fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ry
b3lpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3du
bG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMs
MTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJj
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BT
b3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRl
eCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0Pihy
ZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldl
YkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxl
bWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNw
cAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1f
ZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJf
cyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVz
ZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4
MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdl
YkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZy
YW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmlu
Z0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3Ry
aW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJf
czsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJp
bmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1v
dmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRj
MjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0z
NiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Oldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmlu
ZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRN
TFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdl
YkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXgg
M2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0
eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJI
aXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9y
eTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0
b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4m
JiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0
ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0o
KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZk
YWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNT
RVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3Bl
Y3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIu
Ljc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkph
dmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5k
ZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENs
YXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdl
YkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xh
c3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRN
ZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICsz
NCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxv
b3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsK
IH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VM
b29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJf
cyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApp
bmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJh
bWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlz
dGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUp
CiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11
dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5h
dmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMg
KzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2
aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0
LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25z
dCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtu
b3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRS
ZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01
Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAg
IG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiog
V2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93
biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4
IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3Rp
ZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3
LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVm
ZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQ
cmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4
MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3Bw
CkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Ny
aXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
X3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmpl
Y3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMp
OwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNj
cmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJf
cyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5y
ZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNj
cmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDks
MTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3Jp
Z2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5k
ZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2Vi
U2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2Vi
U2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3
YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJU
ZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJl
bmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJU
ZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5k
ZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBt
X3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5
M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIs
MTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEw
Njk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRp
YWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0z
NywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJf
cyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBT
dHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0Nv
ZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNw
b25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdl
YlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGlu
c3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3Bv
bnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGlu
c3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRw
Oi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0
cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5
MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6
fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAg
IFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5
NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0s
IExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFt
KSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgp
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29s
IFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3
NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VS
TCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0
NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApA
QCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6
Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29y
a2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2
YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldv
cmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJz
UHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhi
MzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0
NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhT
dWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewog
ICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0
aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlv
bjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0g
Y2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYs
MjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0Fw
cEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAg
QVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciog
ZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewog
ICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3
IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwi
KTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyBy
ZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAg
ICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChm
ZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcv
ZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVk
IGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0s
Ci0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNj
cmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAg
IHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sg
IkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwK
KyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
V0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhciog
anMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5y
ZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1
dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBj
aGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRl
cyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwg
eyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpz
IH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lk
IHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZp
ZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWlu
dDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcg
UmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIp
PC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29u
c3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkg
PT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFs
ZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1s
J30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0g
fSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgp
KTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2
LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0
aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVy
Mih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7
ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
fX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAg
ICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVy
UG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRh
YmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9y
dCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJv
Y2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNP
VVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAg
dHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
RGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVy
KCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykg
ewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAt
NjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVl
KGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVz
c2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2
LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRV
cGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAg
ICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7
CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdl
IGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQu
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
ZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmll
bnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rl
dmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRh
dGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdy
YW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVz
c2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJU
RVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVT
T1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIg
QEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RS
RVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQ
ZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7
ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUg
ZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVy
bWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIi
RE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RP
Q0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEv
ZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Nj
b3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4x
OjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNv
bnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5Pjwv
Ym9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0
LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0
IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5
MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAg
IHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZy
YW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3Nl
clByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2
b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJD
b3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwot
ICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0
aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50
aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImlu
QXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAg
LTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29u
dGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxv
Zyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0
ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVT
T1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdp
c3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJl
Z2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNn
KQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
Jy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VS
Q0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dS
RVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7
CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAi
ICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29y
a2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFw
cEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsg
bWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAg
eyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtl
cnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNl
IHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3Nh
Z2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8g
ZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2Fn
ZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAt
Ym91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
bWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNj
cmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3Rl
ckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9
KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9y
QWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAi
VW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0
cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0
ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNh
c2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAi
Zm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQt
VHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNh
bWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7
ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNv
bnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBv
bGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwx
MSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJv
Y2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQ
U2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwK
KyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAg
ICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9o
dG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9
LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29u
dGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
biA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08i
X3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAg
YXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50
ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1
ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRD
b250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250
ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xh
c3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVu
dE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAy
NCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5Q
dHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdX
aXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3Rk
OjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0
aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmco
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6
cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlv
bkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0
ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdl
YktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAg
ICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2Rl
LCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwg
UmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVz
ZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6
ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBl
Y3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVj
aXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hv
dWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0
QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1v
ZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAg
ICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50
IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJW
aWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7
CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7
ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1l
ZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0
cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBh
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBz
dGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBs
ZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1
ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5n
KiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0
cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1w
bGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAog
ICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484796"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456488</attachid>
            <date>2022-04-02 18:23:27 -0700</date>
            <delta_ts>2022-04-02 19:18:01 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>245248</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4ZTU2
NzgyNDIzMS4uM2I3YTc1ZGM3OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwi
OworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5k
YXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCmluZGV4IDMzMDEwOGM2NmRhYS4uYjFmNGM2NDdhNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
QEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3Vj
Y2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRv
IHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5
ZDBjZjYwZS4uYmNiNjc1MWVkYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFy
dGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBt
X2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9hbmltYXRpb25TdGFydFRpbWUpOwogCiAgICAg
bV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50
ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25t
ZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsK
ICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUo
Jm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgw
MjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0g
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmly
ZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlv
bnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJ
bmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwg
ImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAg
ICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFz
dGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFj
Ny4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2lj
UGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5
KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVy
biAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9u
ZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsK
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5
ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7Cisg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0Ny4uYWU0MzllMzBmMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikK
IAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKLSAgICB0ZXh0
LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgbmFtZSgp
LCBjb250ZXh0KCkpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTgiX3MsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQog
ewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHVybC51cmwuc3RyaW5nKCkp
OworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdXJsLnVybC5zdHJpbmco
KSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRU
eXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAg
ICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7CisgICAgd3Jp
dGVTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdGV4dCk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGxhdGZvcm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcAppbmRleCBhMzRkYzIyMGJiYjkuLjg0
MzIzMWQzYjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTc3MywxMDEgKzc3
MywxMDEgQEAgU3RyaW5nIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvcldQ
RUtleUNvZGUodW5zaWduZWQga2V5Q29kZSkKICAgICBjYXNlIFdQRV9LRVlfTWVudToKICAgICBj
YXNlIFdQRV9LRVlfQWx0X0w6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9SOgotICAgICAgICByZXR1
cm4gIkFsdCI7CisgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9DbGVh
cjoKLSAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Rvd246Ci0gICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgIHJl
dHVybiAiRG93biJfczsKICAgICAgICAgLy8gIkVuZCIKICAgICBjYXNlIFdQRV9LRVlfRW5kOgot
ICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAv
LyAiRW50ZXIiCiAgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKICAgICBjYXNlIFdQRV9LRVlf
S1BfRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKLSAgICAgICAgcmV0dXJuICJFbnRl
ciI7CisgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0V4ZWN1dGU6
Ci0gICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE6Ci0gICAgICAgIHJldHVybiAiRjEiOworICAgICAgICByZXR1
cm4gIkYxIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjoKLSAgICAgICAgcmV0dXJuICJGMiI7Cisg
ICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YzOgotICAgICAgICByZXR1
cm4gIkYzIjsKKyAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjQ6Ci0g
ICAgICAgIHJldHVybiAiRjQiOworICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9GNToKLSAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgIHJldHVybiAiRjUiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Y2OgotICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgcmV0dXJu
ICJGNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjc6Ci0gICAgICAgIHJldHVybiAiRjciOworICAg
ICAgICByZXR1cm4gIkY3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GODoKLSAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y5OgotICAg
ICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjEwOgotICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICAgIHJldHVybiAiRjEwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMTE6Ci0gICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgcmV0
dXJuICJGMTEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMjoKLSAgICAgICAgcmV0dXJuICJGMTIi
OworICAgICAgICByZXR1cm4gIkYxMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjEzOgotICAgICAg
ICByZXR1cm4gIkYxMyI7CisgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMTQ6Ci0gICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0YxNToKLSAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICByZXR1
cm4gIkYxNSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE2OgotICAgICAgICByZXR1cm4gIkYxNiI7
CisgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTc6Ci0gICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxODoKLSAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICByZXR1cm4gIkYxOCJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjE5OgotICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgIHJldHVy
biAiRjE5Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjA6Ci0gICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMToKLSAgICAgICAg
cmV0dXJuICJGMjEiOworICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjIyOgotICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMjM6Ci0gICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgcmV0dXJu
ICJGMjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyNDoKLSAgICAgICAgcmV0dXJuICJGMjQiOwor
ICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICBjYXNlIFdQRV9LRVlfSGVscDoKLSAgICAgICAg
cmV0dXJuICJIZWxwIjsKKyAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9Ib21lOgotICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICByZXR1cm4gIkhvbWUiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0luc2VydDoKLSAgICAgICAgcmV0dXJuICJJbnNlcnQiOworICAg
ICAgICByZXR1cm4gIkluc2VydCJfczsKICAgICBjYXNlIFdQRV9LRVlfTGVmdDoKLSAgICAgICAg
cmV0dXJuICJMZWZ0IjsKKyAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgIGNhc2UgV1BFX0tF
WV9QYWdlX0Rvd246Ci0gICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIl9zOwogICAgIGNhc2UgV1BFX0tFWV9QYWdlX1VwOgotICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Q
YXVzZToKLSAgICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgIHJldHVybiAiUGF1c2UiX3M7
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfUHJpbnRTY3JlZW46CiAgICAgY2FzZSBXUEVfS0VZX1By
aW50OgotICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiJfczsKICAgICBjYXNlIFdQRV9LRVlfUmlnaHQ6Ci0gICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9TZWxlY3Q6
Ci0gICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgcmV0dXJuICJTZWxlY3QiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX1VwOgotICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgcmV0dXJu
ICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KICAgICBjYXNlIFdQRV9LRVlfRGVsZXRlOgotICAgICAgICByZXR1cm4gIlUrMDA3RiI7Cisg
ICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Ci0g
ICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAgICAgICAgcmV0dXJuICJVKzAwMDgiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0lTT19MZWZ0X1RhYjoKICAgICBjYXNlIFdQRV9LRVlfMzI3MF9CYWNrVGFi
OgogICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIHJldHVybiAiVSswMDA5IjsKKyAgICAg
ICAgcmV0dXJuICJVKzAwMDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdm
MzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29u
dGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBy
bwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9
IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJf
czsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBl
ICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBD
b250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNv
ZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250
YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2Ug
aWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1l
ID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykg
eyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3Bw
CmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIs
MTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAg
ICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3Iu
Z2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9
PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JE
b21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAg
ZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2Rv
bWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJv
ckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkK
LSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZF
cnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JE
b21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAg
ICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9k
b21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NG
RXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21h
aW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Io
Q0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBj
YXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3Vz
dG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoK
LSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtD
RlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NT
dGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRv
bWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RD
b2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0
ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlz
TG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlm
ICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBG
aWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxl
UGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNO
dWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxl
RGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6
W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAi
TlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRl
SW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRp
ZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nl
cnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBD
ZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0
ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVy
biBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAg
ICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmlj
YXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZp
Y2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBz
aXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApA
QCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUph
ckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyBy
ZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVl
c3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJl
cXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURv
bWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJj
N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JV
UkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJp
bmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQot
ICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxh
c3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNs
YXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsK
IAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNo
ZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNv
bnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5l
cmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIi
KTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2Nv
bnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUu
YXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRl
bnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5
ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGls
ZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0g
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBw
ZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAg
ICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVu
ZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmll
bGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUs
IGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwog
ICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFu
YWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIu
YXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgo
KTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgp
CiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRl
eEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5k
YXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJp
bmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRo
KTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpX
cml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
CkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFk
ZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBw
ZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAg
aWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBj
dXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIu
YXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIu
YXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2
YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFw
cGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxl
OjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQg
YSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxs
IGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBw
ZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBo
ZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihX
VEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFk
ZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5
MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25s
b2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAK
ICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsK
LSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBC
b2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBt
X2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRo
ZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJl
cXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhl
YWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3Ry
ZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMs
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQog
ewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBs
b25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNo
b3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1
ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxI
YW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9z
KTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1f
Y3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1f
Zm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
UmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0
JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCku
Z2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAg
ICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAg
ICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAg
IG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBl
N2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
dXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUph
clBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2ll
Lmphci5kYiI7CiAgICAgY2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVf
SkFSX1BBVEgiKTsKICAgICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tp
ZUphclBhdGg7CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgp
OwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0
b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRG
aWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09w
ZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxw
ZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRp
ZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBT
dHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92
ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07
CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVy
biBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAg
cmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhl
cihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5m
OWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGlj
IFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0
eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1
cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJp
dmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9y
ZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0
ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2
OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0g
ICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3Jz
IHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZh
MjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJy
b3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9y
OjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9y
IFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxp
bmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgx
YTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYy
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1
ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVx
dWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5j
bGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmlu
ZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5j
cHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNl
KGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0
dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNl
dEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8x
LjAiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToK
LSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJz
aW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZF
UlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNl
dEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxf
SFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGll
bnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2
NDhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05l
dHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUy
NSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNv
b2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAg
IGZvciAoYXV0byogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25l
eHQoaXRlbSkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGlj
X2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxl
RG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNv
b2tpZS5nZXQoKSkpID09IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4o
Y29va2llLmdldCgpKSB9KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIu
LmE0NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxp
emVMb2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygp
OwogICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0
UGFyZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdh
dGl2ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAg
ICAgbmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdh
dGl2ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdh
dGl2ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
S2V5RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2lu
LmNwcAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0
aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBr
ZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6
Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsK
ICAgICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsK
KyAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoK
LSAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJf
czsKICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9j
ayI7CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xX
SU46CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAg
ICAgICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAg
ICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAg
ICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAg
ICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VO
RDoKLSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9z
OwogICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAg
ICAgcmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAg
ICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAg
ICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAg
ICAgcmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNl
IFZLX0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYy
Il9zOwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAg
ICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAg
cmV0dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZL
X0Y1OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9z
OwogICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAg
ICAgICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0
dXJuICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4
OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAg
ICByZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVy
biAiRjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0Yx
MjoKLSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9z
OwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAg
IHJldHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNl
IFZLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE1Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAg
ICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAg
ICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAi
RjE5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoK
LSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJl
dHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZL
X0YyMzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIz
Il9zOwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAg
ICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAg
ICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAg
cmV0dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJl
dHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBj
YXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0
dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNh
c2UgVktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICBy
ZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJl
dHVybiAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2Fz
ZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAg
ICAgICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsK
ICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7Cisg
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJf
czsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAg
ICAgICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBi
ZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1
cm4gIlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBw
ZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcy
MzQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRT
dHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVk
U3RyaW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBT
dHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmls
ZXNUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVz
IjsKKyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0
cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwz
NCArNzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9u
KFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBt
aW1ldHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8v
ZmlsbCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0Iiwg
InRleHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRp
b24vcGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9z
dHNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoInhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0
ZXh0L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gt
amF2YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNh
dGlvbi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGlj
YXRpb24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAi
YXBwbGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3Zn
IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImlt
YWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBl
ZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InRpZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJp
bWFnZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJwZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBzIl9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0
bWwiX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywg
InRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94
bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlw
dCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0
bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0
aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBw
bGljYXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2
ZSJfcywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImpwZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWci
X3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJp
bWFnZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3Rp
ZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdY
TCkKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0K
ICAgICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42
Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0
ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQog
c3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJl
c3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3Jt
YXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9y
bWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOwor
ICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5j
ZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1h
dCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0
ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAog
c3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3Rl
Ym9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0
ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAg
ICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5h
ZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0
bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBk
b21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihk
b21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJv
YXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21N
SU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0
KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTCht
X2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAK
LSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAg
LTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEs
IGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhI
VE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBU
b0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAg
ICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwg
Y2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShj
Zmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5T
ZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9i
YWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0
aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJs
LmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBT
dHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3Ry
LCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21V
UkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29u
dGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsK
ICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAs
NyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBw
YXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRN
TCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGlu
awogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNo
YXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRV
UkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9N
YXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAg
ICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAg
aWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAg
ICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUo
Q0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5E
TEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04
IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAg
ICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0
YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+
KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEp
OwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURl
c2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFs
RnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmlu
c2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0
aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0
ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEw
OTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9i
amVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBk
YXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRv
Q0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVk
aXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMz
YmUyZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2lu
ZG93cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC04NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAg
ICAgY2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRv
d3NDRTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2lu
ZG93cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyBDRSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2Fz
ZSBXaW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0
dXJuICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2Ug
V2luZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4g
IldpbmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2lu
ZG93cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5
eCA0LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQu
MCI7CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49
IFdpbmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJu
IGZhbWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJl
cihtaW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywg
bWlub3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBA
IHN0YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hp
dGVjdHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAg
IHJldHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAo
cHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkK
LSAgICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7
IHg2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FS
Q0hJVEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAg
ICByZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEzLi4wY2Y0MjQ4
MjlkODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTU4Niw3ICs1ODYs
NyBAQCB2b2lkIEludGVybmFsczo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZShQYWdlJiBwYWdlKQog
ICAgIHBhZ2Uuc2V0T3V0c2lkZVZpZXdwb3J0VGhyb3R0bGluZ0VuYWJsZWRGb3JUZXN0aW5nKGZh
bHNlKTsKIAogI2lmIFVTRShRVUlDS19MT09LKQotICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50
OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZCgiIik7CisgICAgTW9ja1ByZXZpZXdMb2FkZXJDbGll
bnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKGVtcHR5U3RyaW5nKCkpOwogICAgIExlZ2FjeVBy
ZXZpZXdMb2FkZXI6OnNldENsaWVudEZvclRlc3RpbmcobnVsbHB0cik7CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJE
cml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggNTJlMjc2NzYzY2EzLi44MzU5NjliZmEzNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1h
bmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3Rk
OjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7Cisg
ICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBp
ZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVy
cm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9
IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNz
YWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vz
c2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNj
NS4uZDcxZjRkMTA1N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2
b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1
bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2UucmVzcG9u
c2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVz
dWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKSB7CiAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1
bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0z
NTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rpb248dm9p
ZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93c2luZ0NvbnRl
eHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Iik7CisgICAg
ICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5n
ZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2luZ0NvbnRleHQp
IHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWls
KENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dz
aW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8gdXJsID0gYnJv
d3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBpZiAoIXVybCkg
ewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwo
Q29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNldFdpbmRvd1Jl
Y3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5LCBzdAog
ICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dz
aW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAgICAgICAgICAg
YXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAg
d2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAgICAgICAgd2lu
ZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93
T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAgIHBhcmFtZXRl
cnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikpOwogICAgICAg
ICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIGF1dG8gd2lu
ZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dTaXpl
LT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dT
aXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdp
bmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOworICAgICAgICAg
ICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1ZSgpKTsKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92ZSh3aW5kb3dT
aXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFja2VuZCgi
c2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0ZXJzKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9uc2UpIG11
dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0Zp
bGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1hbgog
ICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50
cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsK
IAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0KKyAgICBzdGF0
aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9u
KGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAgICAgICAgIiAg
ICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBlbGVtZW50Lmhh
c0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4geyAnZmlsZVVw
bG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5z
ZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJn
dW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5n
KCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtdID0KKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlv
bihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVkIHx8IGVsZW1l
bnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpAQCAtMTg3MCw3
ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAgICAgICAgcmV0
dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJuIGZhbHNlOyIK
LSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2lu
Z0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBA
IC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAg
YXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3VsdChyZXN1
bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBjYXBhYmls
aXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNlKSkgewogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAgICAgICAgICAi
ZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQg
ZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAgICAgICAgICAg
ICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50OyIKQEAg
LTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICAg
ICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVudC52YWx1ZS5s
ZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
aWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIKICAgICAgICAg
ICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50ZXJhY3RhYmxl
JywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAgICAgICAgICAg
ICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAgICAgICAgICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAgICAgICAgICAg
ICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05T
dHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0
PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29raWUpCiAg
ICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29va2llT2Jq
ZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsKKyAgICBj
b29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8i
X3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29raWUuZG9t
YWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xl
YW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52YWx1ZV9v
cihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJfcywgIWNv
b2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVzIl9zLCBj
b29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygi
c2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsKKyAgICBjb29r
aWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9v
cigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAgLTI2OTEsMzgg
KzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6aW5wdXRTb3Vy
Y2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3RhdGVUYWJsZS5l
bnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRlcmF0b3ItPnZh
bHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3Qg
SW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9u
U291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAgICAgc3dpdGNo
IChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6Tm9uZToK
LSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zOwogICAgIGNh
c2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAoaW5wdXRTb3Vy
Y2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewogICAgICAgICBj
YXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91c2UiOworICAg
ICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6VG91
Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJldHVybiAiVG91
Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAgICAgIHJldHVy
biAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAgICAgcmV0dXJu
ICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOworICAgICAgICBy
ZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9y
aWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uT3JpZ2luVHlw
ZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0dXJuICJWaWV3
cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQb2ludGVyT3Jp
Z2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOworICAgICAgICBy
ZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpFbGVtZW50
OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVsZW1lbnQiX3M7
CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTIuLjU5MTg0NzBiODVjYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCkBAIC02MSw3ICs2MSw3IEBAIGlu
dCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogI2lmIFVTRShJ
TlNQRUNUT1JfU09DS0VUX1NFUlZFUikKICAgICBTdHJpbmcgdGFyZ2V0U3RyaW5nOwogICAgIGlm
IChjb25zdCBjaGFyKiB0YXJnZXRFbnZWYXIgPSBnZXRlbnYoIldFQkRSSVZFUl9UQVJHRVRfQURE
UiIpKQotICAgICAgICB0YXJnZXRTdHJpbmcgPSB0YXJnZXRFbnZWYXI7CisgICAgICAgIHRhcmdl
dFN0cmluZyA9IFN0cmluZyB7IHRhcmdldEVudlZhciB9OwogI2VuZGlmCiAgICAgZm9yIChpbnQg
aSA9IDEgOyBpIDwgYXJnYzsgKytpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIGFyZyA9IGFyZ3Zb
aV07CkBAIC03NSw3ICs3NSw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2Ms
IGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlsw
XSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgcG9ydFN0cmlu
ZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9
CiAKQEAgLTk3LDcgKzk3LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBd
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHRhcmdldFN0
cmluZyA9IFN0cmluZyB7IGFyZ3ZbaV0gfTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAKQEAgLTQ0MSw3ICs0NDEsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVz
ZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYg
KCFwcm94eS5odHRwc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSIpKSB7CisgICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJv
eHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiX3MpKSB7CiAgICAgICAgICAgICBhdXRvIHNv
Y2tzUHJveHkgPSB2YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgICAgIGlmICghc29ja3NQcm94
eSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNDUwLDcgKzQ1MCw3
IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9i
amVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5LnNvY2tzVVJMLT5pc1Zh
bGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgICAgICAg
ICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Zl
cnNpb24iKTsKKyAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIl9zKTsKICAgICAgICAgICAgIGlmICghc29ja3NWZXJz
aW9uVmFsdWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtODcy
LDMwICs4NzIsMzAgQEAgdm9pZCBXZWJEcml2ZXJTZXJ2aWNlOjpjcmVhdGVTZXNzaW9uKFZlY3Rv
cjxDYXBhYmlsaXRpZXM+JiYgY2FwYWJpbGl0aWVzTGlzdCwgc3QKICAgICAgICAgICAgIGNhcGFi
aWxpdGllc09iamVjdC0+c2V0Qm9vbGVhbigic2V0V2luZG93UmVjdCJfcywgY2FwYWJpbGl0aWVz
LnNldFdpbmRvd1JlY3QudmFsdWVfb3IodHJ1ZSkpOwogICAgICAgICAgICAgc3dpdGNoIChjYXBh
YmlsaXRpZXMudW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IudmFsdWVfb3IoVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnkpKSB7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiKTsK
KyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVk
UHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdDoKLSAgICAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3IiX3MsICJhY2NlcHQiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmpl
Y3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFu
ZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmlu
ZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIGFuZCBub3RpZnkiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6QWNjZXB0QW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQg
bm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6SWdub3JlOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImlnbm9yZSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImlnbm9yZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy5wYWdlTG9hZFN0cmF0ZWd5LnZhbHVl
X29yKFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbCkpIHsKICAgICAgICAgICAgIGNhc2UgUGFnZUxv
YWRTdHJhdGVneTo6Tm9uZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vbmUi
X3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0
cmF0ZWd5OjpOb3JtYWw6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1h
bCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2Fk
U3RyYXRlZ3k6OkVhZ2VyOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiKTsKKyAgICAgICAgICAgICAgICBj
YXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2Vy
Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICghY2FwYWJpbGl0aWVzLnByb3h5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9z
b2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0Nh
cGFiaWxpdGllc1NvY2tldC5jcHAKaW5kZXggMGY2Yzg3ODIwMDk1Li4yYjY3MTM0OWQzNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAK
KysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAt
MzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGll
cyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpT
T046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAg
aWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFy
Z2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQor
ICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJf
cywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFk
ZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAg
ICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9y
dDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBv
cnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFy
Z2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdl
cih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQ
b3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVy
U29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3Bw
CmluZGV4IDc5YjdjYTRiMmQxMy4uNzBhYTQ0ZjBiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVy
L3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhUVFBS
ZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2ludCYs
IENvbm5lY3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJlc3Bv
bnNlIHsKICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiLAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZv
cm1hdCIsCisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9y
bWF0Il9zLAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNwb25z
ZSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1t
CmluZGV4IDNiNmZmOGFmMjA2YS4uNTdkYmEwM2UxZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQpAQCAtMjY4LDcgKzI2OCw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6
OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBj
b25zCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0
aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDb3B5QnVmZmVyVG9UZXh0dXJlKHNvdXJjZSwgZGVz
dGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9u
IGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNDUzLDcgKzQ1Myw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAg
ICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVk
IgogICAgIGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvQnVmZmVyKHNvdXJjZSwgZGVzdGluYXRp
b24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9y
IGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODAxLDcgKzgwMSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJl
VG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgogICAg
IGlmICghdmFsaWRhdGVDb3B5VGV4dHVyZVRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBj
b3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQg
c3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQppbmRleCBlMTgwODJlNWQ1MjguLjM1ZmFiZWU1YTRlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9y
U1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wx
MzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxs
OgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNh
c2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAg
ICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVk
OgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5k
ZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMyNmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBA
QCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0
aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
Citib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5n
ICopOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1v
dGVPYmplY3RDb2Rlci5tbQppbmRleCBhOWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIubW0KQEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4g
Y3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25z
dCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAg
aWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0g
PT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2Fs
Lmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJl
Lmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
bG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2ly
ZVR5cGUgPSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsK
LSAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2Vh
YmxlLgotICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigi
QmMiLCB3aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBD
aGFyYWN0ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAg
YW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMg
PT0gJ0InID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwu
bGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgIGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1h
cENoYXJhY3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5
ICs5NjcsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3Rl
T2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24g
Zm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmlu
ZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAg
U3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1
cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0
dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBt
ZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWdu
YXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkp
CiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25F
eGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUg
bm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1l
KHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdp
c3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVj
dFJlZ2lzdHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9j
b2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRp
YyBOU1N0cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBz
ZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24t
aW5oZXJpdGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBf
cHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwg
dHJ1ZSk7CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWdu
YXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAg
ICAgQVNTRVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2Rp
bmcpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01l
dGhvZFNpZ25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJl
IHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQo
dGFyZ2V0TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkK
LSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBb
dGFyZ2V0TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpi
bG9ja0luZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQp
X2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1v
dGVPYmplY3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVy
ZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5f
dHlwZVN0cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBs
eUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9y
LCBpKTsKKyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNp
Z25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUu
dXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJs
b2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwg
aW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWdu
YXR1cmUuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7
CiAgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSBy
ZXBseSBibG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUod2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAg
ICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkg
YmxvY2sgc2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0
YSgpLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSk7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhv
ZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZv
Y2F0CiAgICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4g
Y2hlY2tlciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwot
ICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVC
bG9jayh3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3Rl
T2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlv
bikgeworICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0Nh
cHR1cmVCbG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCBy
ZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVP
YmplY3RFbmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5t
bQppbmRleCA2YjA1MTM2NjIwZWMuLmJjMWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpA
QCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2
aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWls
c0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxU
b1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3
LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBz
Oi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAg
ICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFy
aSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25v
c3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGlj
IFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQp
CiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5o
dG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZl
YnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICBy
ZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/
dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRl
eCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5z
eXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVf
YXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0Fj
dGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19i
dXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJp
Z2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVt
ZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEz
MDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQ
Q01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2Vydmlj
ZSIpOworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRh
dHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJl
MDJlYzhlM2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzg1MSw3ICszODUxLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBp
ZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFi
bGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBw
LWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmRE
b21haW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3Jpbmcg
dXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9u
IGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0Vf
TE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBp
bmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5
ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNv
bW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVB
IiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAg
ICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywK
LSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAi
S2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJi
IiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJf
cywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywg
NjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2ds
ZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAg
ICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUki
X3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGlj
RWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAot
ICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAi
dSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3
IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNo
b3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0g
ImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNh
dGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2Vu
dFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJp
bmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29u
c3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
KCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRG
T1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNu
J3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVu
IHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVy
IHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
IjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5X
ZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVk
aXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5h
MjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcx
Niw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1l
bnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVy
eVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwot
ICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1
bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVs
bHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXco
KSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUo
bWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIw
MTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1
LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmco
U3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JD
bGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
CiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmlu
Z1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxv
Y2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJl
YTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJj
ZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClf
c2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAg
dG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGlu
ZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYs
NyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3Ry
aW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlz
cGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1v
amkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZh
bWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5n
cygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5YTExLi5jMjkwZGFlMzc5NDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTYyLDEzICs2
MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJhc2UoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqLCBIV05EIHdpbmRvdykKICAgICBBU1NFUlRfQVJHKG9iaiwgb2JqKTsKICAgICBtX29i
amVjdC0+c2V0V3JhcHBlcih0aGlzKTsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2U6On5BY2Nlc3NpYmxl
QmFzZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nl
c3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3Jl
YXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcApp
bmRleCA5YTFmMDExMjIxYmMuLmE1YzA3ZWI5MTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBACiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6fkNGRGlj
dGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ09N
UHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVs
dERvd25sb2FkRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuY3BwCmluZGV4IDFhODBjNGQ2ZThlMi4uMzAyZjYzN2FiYzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUu
Y3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBEZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6fkRlZmF1bHREb3dubG9hZERl
bGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKICAgICBIYXNoU2V0PElXZWJEb3du
bG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVnaW4oKTsKICAgICBmb3IgKDtpICE9
IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgqaSktPlJlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCmluZGV4
IGU4ZTVmNWM0Y2MxMS4uMWZhOGMzNTRkZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCB0eXBl
ZGVmIGVudW0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZSB7CiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6
OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBv
bGljeURlbGVnYXRlOjp+RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUi
X3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGUqIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6
c2hhcmVkSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAK
aW5kZXggMzYwYWVkY2VhY2NiLi45ZGE1OTYwNTY0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIE1lbW9yeVN0cmVhbTo6TWVt
b3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIo
V1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1l
bW9yeVN0cmVhbSJfcyk7CiB9CiAKIE1lbW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0
cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIl9zKTsK
IH0KIAogQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCA2Zjc1N2IzODZkMTUuLmU5N2M0MTMy
NDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVy
dHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5
QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjpXZWJBY3Rp
b25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0CiAgICAg
LCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJBY3Rpb25Q
cm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsK
IH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5QmFnOjpjcmVhdGVJ
bnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxIVE1MRm9ybUVs
ZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA4ZjI3MTYyYmJhZjEuLmRm
MWQyOWViYWIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGlj
YXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRp
b25DYWNoZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpXZWJB
cHBsaWNhdGlvbkNhY2hlKCkKICAgICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGljYXRpb25DYWNoZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAK
IFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5XZWJBcHBsaWNhdGlvbkNhY2hlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXBwbGljYXRpb25D
YWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXBwbGljYXRpb25DYWNo
ZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXgg
ODE1Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQ
dHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6
fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQy
ODEwNC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJh
Y2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpX
ZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExp
c3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5n
ZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNr
Rm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJC
YWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1f
YmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3
YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0Zv
cndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hl
LmNwcAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hl
KiBXZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uNWViMWEzNGE2NDZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00
OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGlj
czo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6
fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3Rp
Y3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDllZmI3OS4uZjc4YzFiZDJhODUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtNTcsNyAr
NTcsNyBAQCBXZWJEYXRhU291cmNlOjpXZWJEYXRhU291cmNlKFdlYkRvY3VtZW50TG9hZGVyKiBs
b2FkZXIpCiB7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlOjp+
V2ViRGF0YVNvdXJjZSgpCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRhdGFTb3VyY2U6On5XZWJEYXRh
U291cmNlKCkKICAgICAgICAgbV9sb2FkZXItPmRldGFjaERhdGFTb3VyY2UoKTsKICAgICBXZWJE
YXRhU291cmNlQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2UqIFdlYkRhdGFTb3VyY2U6
OmNyZWF0ZUluc3RhbmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA2NzY3NzIwMzE1YzMu
LjhmMzc2NTQxMjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBXZWJEYXRhYmFzZU1hbmFnZXIqIFdl
YkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViRGF0YWJhc2VNYW5hZ2VyOjpX
ZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6
fldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogLy8gSVVua25vd24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
b2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExv
YWRlci5jcHAKaW5kZXggOTJkMGZhNzJjZDZmLi4yNTZhMzU4ODA3ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAg
V2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNoZWREYXRhU291cmNlKDApCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3Vt
ZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRl
ciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNy
ZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRh
JiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3Vt
ZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogV2ViRG9j
dW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiAgICAgaWYg
KG1fZGF0YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0YWNoZWREYXRhU291cmNlKTsK
ICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2Li45OTQ2OTA0NTUxYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJEb3dubG9hZDo6V2ViRG93bmxvYWQoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3du
bG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTYxLDcgKzYxLDcgQEAgV2ViRG93bmxvYWQ6On5XZWJE
b3dubG9hZCgpCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBEZXN0cm95aW5nIGRv
d25sb2FkICglcCkiLCB0aGlzKTsKICAgICBjYW5jZWwoKTsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQqIFdl
YkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRy
b3BTb3VyY2UuY3BwCmluZGV4IDZiYWJmOTBiODlmYS4uNWIxYzVkZmM3ZTg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIFdl
YkRyb3BTb3VyY2U6OldlYkRyb3BTb3VyY2UoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2Vi
Vmlldyh3ZWJWaWV3KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJEcm9wU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJE
cm9wU291cmNlIl9zKTsKIH0KIAogV2ViRHJvcFNvdXJjZTo6fldlYkRyb3BTb3VyY2UoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9w
U291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIl9z
KTsKIH0KIAogU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOGFmYmEw
ZjZkNTNhLi5jNjFmMTcyZDQ3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQ
cm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJl
c3VsdCkKICAgICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxl
bWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50
UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50
UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZyogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXgg
MTlkZTM3MWJlYTFjLi43MTYxMjE5MjMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJv
ci5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFcnJvcjo6V2ViRXJyb3IoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCiAgICAgLCBtX2Vycm9yKGVy
cm9yKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRXJyb3IiX3MpOwogfQog
CiBXZWJFcnJvcjo6fldlYkVycm9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkVycm9yIl9zKTsKIH0KIAogV2ViRXJyb3IqIFdlYkVycm9yOjpjcmVhdGVJbnN0
YW5jZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA1OTQ4YjBlYzViODAuLjA3YmQ0
NmZjOTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjQzLDcgKzI0
Myw3IEBAIFdlYkZyYW1lOjpXZWJGcmFtZSgpCiB7CiAgICAgV2ViRnJhbWVDb3VudCsrOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZTo6
fldlYkZyYW1lKCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBXZWJGcmFtZTo6fldlYkZyYW1lKCkKICAg
ICBkZWxldGUgZDsKICAgICBXZWJGcmFtZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lKiBXZWJGcmFtZTo6Y3Jl
YXRlSW5zdGFuY2UoKQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRh
KFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5
CiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWlt
ZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0
ZXh0L2h0bWwiOworICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAg
ICBTdHJpbmcgZW5jb2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRl
eHRFbmNvZGluZ05hbWUpKTsKIApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgSFJFU1VMVCBXZWJGcmFt
ZTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5F
WFBFQ1RFRDsKIAotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNl
bGVjdEFsbCJfcykuZXhlY3V0ZSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgcmV0
dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBv
bGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCmluZGV4IGFmZWQyYjRlNmE0Mi4uOTQ0NjhiYjczZDA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcApAQCAt
MzksMTMgKzM5LDEzIEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlz
dGVuZXIoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQogICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1l
KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJG
cmFtZVBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3
Li42ODkyZjc3MWFkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihS
ZWZQdHI8R2VvbG9jYXRpb24+JiYKICAgICAsIG1fZ2VvbG9jYXRpb24oV1RGTW92ZShnZW9sb2Nh
dGlvbikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjp+V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCmluZGV4IDkyNGM0OGIxM2M0MS4uZmYxZmQ5MGM0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtMzYsMTMgKzM2
LDEzIEBAIENPTVB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7
CiB9CiAKIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0lu
XyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAppbmRleCA0NmFh
YWU5N2Q3YmIuLjg2YTNjYjZkYWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkhUTUxSZXBy
ZXNlbnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIHsKICAgICBXZWJIVE1MUmVwcmVz
ZW50YXRpb25Db3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlv
bjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkhUTUxSZXBy
ZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiAKICAgICBXZWJIVE1MUmVwcmVz
ZW50YXRpb25Db3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNl
bnRhdGlvbiogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjcmVhdGVJbnN0YW5jZShXZWJGcmFtZSog
ZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDNmMWViNmQ3
MzhiZC4uNTBhOGU1ZjZiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cApAQCAtODksNyArODksNyBAQCBzdGF0aWMgaW5saW5lIENPTVB0cjxJUHJvcGVydHlCYWc+IGNy
ZWF0ZVVzZXJJbmZvRnJvbUhpc3RvcnlJdGVtKEJTVFIgbm90aWZpY2F0aQogV2ViSGlzdG9yeTo6
V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3Rv
cnkiX3MpOwogCiAgICAgbV9wcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFu
ZGFyZFByZWZlcmVuY2VzKCk7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIFdlYkhpc3Rvcnk6OldlYkhp
c3RvcnkoKQogV2ViSGlzdG9yeTo6fldlYkhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Il9zKTsKIH0KIAogV2ViSGlzdG9yeSogV2Vi
SGlzdG9yeTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCmluZGV4IGZiODhlMzllN2I1Ni4uOGRkOWJkYWFhMjg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdl
Ykhpc3RvcnlJdGVtOjpXZWJIaXN0b3J5SXRlbShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9y
eUl0ZW0pCiAgICAgaGlzdG9yeUl0ZW1XcmFwcGVycygpLnNldChtX2hpc3RvcnlJdGVtLmdldCgp
LCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJIaXN0b3J5SXRlbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9y
eUl0ZW0iX3MpOwogfQogCiBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKQEAgLTYy
LDcgKzYyLDcgQEAgV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCiAgICAgaGlzdG9y
eUl0ZW1XcmFwcGVycygpLnJlbW92ZShtX2hpc3RvcnlJdGVtLmdldCgpKTsKIAogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iX3MpOwogfQog
CiBXZWJIaXN0b3J5SXRlbSogV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGY2MjE5YTY2ZGFhOS4uNDQ3
ZDkyYTNhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAg
LTUxLDEzICs1MSwxMyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNw
ZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlYwogICAgIEFTU0VSVF9BUkco
aW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3I6On5X
ZWJJbnNwZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJ
bnNwZWN0b3I6OmZyb250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhlNGJlOGFjMjFiLi43NTg2NjI3
MmQ1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRD
b2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRD
b2xsZWN0b3IuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpXZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlw
dENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENv
bGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJKYXZhU2NyaXB0
Q29sbGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRD
b2xsZWN0b3IqIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCmluZGV4IGNlODYy
MGZkNGJkNy4uNmVlMDcyNTMyZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdENsYXNzRmFjdG9yeS5jcHAKQEAgLTY5LDEzICs2OSwxMyBAQCBXZWJLaXRDbGFzc0ZhY3Rv
cnk6OldlYktpdENsYXNzRmFjdG9yeShDTFNJRCB0YXJnZXRDbGFzcykKICAgICBXZWJDb3JlOjpw
b3B1bGF0ZUpJVE9wZXJhdGlvbnMoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIFdlYktpdENsYXNzRmFjdG9y
eTo6fldlYktpdENsYXNzRmFjdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogLy8gSVVua25v
d24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
TWVzc2FnZUxvb3AuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxv
b3AuY3BwCmluZGV4IDkzN2E2NjY5ZTkwOC4uZTY5YzBjODA4OThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAK
IFdlYktpdE1lc3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdl
YktpdE1lc3NhZ2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQog
CiBXZWJLaXRNZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKaW5kZXggMTI2
M2JjMGMxMWY5Li5mNTE1MWNiZTBiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdFN0YXRpc3RpY3MuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgaW50IFdlYkZyYW1lVmlld0Nv
dW50OwogV2ViS2l0U3RhdGlzdGljczo6V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBX
ZWJLaXRTdGF0aXN0aWNzOjp+V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBX
ZWJLaXRTdGF0aXN0aWNzKiBXZWJLaXRTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXgg
NWM5MTI1NzcyNTI2Li4yNDQxMDY2ODg2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OldlYk11dGFibGVVUkxSZXF1ZXN0KGJvb2wgaXNNdXRhYmxlKQogICAgIDog
bV9pc011dGFibGUoaXNNdXRhYmxlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiBXZWJNdXRhYmxlVVJM
UmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkzLDcg
KzkzLDcgQEAgV2ViTXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVh
dGVJbW11dGFibGVJbnN0YW5jZShjb25zdCBSZXNvdXIKIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojp+
V2ViTXV0YWJsZVVSTFJlcXVlc3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiAvLyBJVW5r
bm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJO
YXZpZ2F0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9u
RGF0YS5jcHAKaW5kZXggYmM0ZjI2ODRhZDE2Li42YTkzM2FiYjVmODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcyLDEzICs3MiwxMyBA
QCBXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25E
YXRhOjp+V2ViTmF2aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0
aW9uRGF0YSogV2ViTmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlVS
TFJlc3BvbnNlKiByZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwgY29uc3QgU3RyaW5n
JiBjbGllbnRSZWRpcmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb24uY3BwCmluZGV4IGY1M2JiNzI2MzUzZi4uOTQ5MjU2ZWU4MDIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oQlNUUiBuYW1lLCBJVW5rbm93biogYW5P
YmplY3QsIElQcm9wZXJ0eUJhZyogdXMKICAgICAgICAgbV91c2VySW5mby0+QWRkUmVmKCk7CiAK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZp
Y2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iX3Mp
OwogfQogCiBXZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQogICAgICAgICBtX3VzZXJJ
bmZvLT5SZWxlYXNlKCk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlm
aWNhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoQlNUUiBuYW1lIC8qPTAqLywgSVVua25vd24qIGFuT2Jq
ZWN0IC8qPTAqLywgSVByb3BlcnR5QmFnKiB1c2VySW5mbyAvKj0wKi8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA5MjUzMmRi
ZGNhNDEuLjZjZDg4NDJlN2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQogICAgIDogZChtYWtlVW5pcXVlPFdl
Yk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyOjp+V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9u
Q2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25D
ZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNhdGlvbkNl
bnRlcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IDljZjhjYzAyYTIxYy4uZmIxNzNkZDVjMWU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBX
ZWJQcmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMo
KQogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXM6On5XZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOC4uM2JiYTMxZTM5ZDk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3Vy
Y2U6OldlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0
IFdURjo6U3RyaW5nJgogICAgICwgbV9mcmFtZU5hbWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJj
ZTo6fldlYlJlc291cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNjcmlwdE9iamVjdC5jcHAKaW5kZXggYjhmZTMwN2NiODZiLi5kZjA3ODFmNDEyMzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApAQCAtMzQs
MTMgKzM0LDEzIEBACiBXZWJTY3JpcHRPYmplY3Q6OldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVj
dCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0K
IAogV2ViU2NyaXB0T2JqZWN0Ojp+V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRX
b3JsZC5jcHAKaW5kZXggMjY4MTAxYTZjMGYwLi43ZWY4YTQ1MzQ2MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5l
IFdlYlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYm
IHdvcmxkKQogICAgIGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAg
ICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3Js
ZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQog
CiBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2Vi
U2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1f
d29ybGQuZ2V0KCkpOwogCiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3Js
ZDo6c3RhbmRhcmRXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIzZjZiLi5lZWYxNjQzYjYxN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwx
MyBAQCBXZWJTZWN1cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luKQogICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3Jp
Z2luIl9zKTsKIH0KIAogV2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNl
Y3VyaXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0
eU9yaWdpbiJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgw
YTJmY2EyOS4uN2YxMWRmNWZmZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6V2ViU2VyaWFsaXplZEpTVmFsdWUo
KQogewogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
ZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFs
aXplZEpTVmFsdWUiX3MpOwogfQogCiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6
ZWRKU1ZhbHVlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogQ09NUHRyPFdlYlNlcmlhbGl6
ZWRKU1ZhbHVlPiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKaW5kZXggNjIwN2I1NmE3ZjY3
Li4wNDUzNWYzZjcyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRl
eHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRl
cmVyLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRl
cmVyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRl
eHRSZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVy
Il9zKTsKIH0KIAogV2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRl
cmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3Mp
OwogfQogCiBIUkVTVUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJ
SUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAK
aW5kZXggNTk3ODhjNGY1ZTI0Li40MGI3YjY2ZmE3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAg
LTQ2LDEzICs0NiwxMyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIo
c2VuZGVyKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0
YW5jZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKaW5kZXggMzVhODQ1ZWQ2OTNjLi41MDk5
YmEwYWYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXIoUmVmUHRyPAogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VT
ZW5kZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3Mp
OwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTENyZWRlbnRpYWwuY3BwCmluZGV4IGU3NTk0NmIyODQyNS4uYTUzMWQxMDY5OTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcs
MTMgKzM3LDEzIEBAIFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVk
ZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9z
KTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50
aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9z
KTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlv
blNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFj
ZS5jcHAKaW5kZXggMTllZDk2ZjgyMTBkLi4zMWIwOWFjNGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3
LDEzIEBAIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwCiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShw
cm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNw
YWNlOjp+V2ViVVJMUHJvdGVjdGlvblNwYWNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQog
CiBXZWJVUkxQcm90ZWN0aW9uU3BhY2UqIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9u
c2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4
IGE1YjIzZGJmYTU0OS4uNjEyMjk2Y2I1NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMUmVzcG9uc2UuY3BwCkBAIC0yMTUsMjAgKzIxNSwyMCBAQCBzdGF0aWMgU3RyaW5nIGxv
Y2FsaXplZFNob3J0RGVzY3JpcHRpb25Gb3JTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogV2Vi
VVJMUmVzcG9uc2U6OldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2U6On5X
ZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNw
b25zZTo6Y3JlYXRlSW5zdGFuY2UoKQogewogICAgIFdlYlVSTFJlc3BvbnNlKiBpbnN0YW5jZSA9
IG5ldyBXZWJVUkxSZXNwb25zZSgpOwogICAgIC8vIGZha2UgYW4gaHR0cCByZXNwb25zZSAtIHNv
IGl0IGhhcyB0aGUgSVdlYkhUVFBVUkxSZXNwb25zZSBpbnRlcmZhY2UKLSAgICBpbnN0YW5jZS0+
bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBT
dHJpbmcoKSwgMCwgU3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZShXVEY6OlVSTCgiaHR0cDovLyJfcyksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7
CiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CmluZGV4IDQ4MTIzODQ3MTNjOC4uZWRmMzM1ODZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICsz
NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm46OldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3Vu
dDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9z
KTsKIH0KIAogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0Li5lNTVh
MjQyZGNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2
LDcgQEAgV2ViVmlldzo6V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3
KCkKQEAgLTQ2OSw3ICs0NjksNyBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3
Q291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7
CiB9CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5
OTUsMTEgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0g
LypsUGFyYW0qLykKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAg
ICAgICAgY2FzZSBTZWxlY3RBbGw6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCku
Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNl
IFVuZG86Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIp
LmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJV
bmRvIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVy
biBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3
OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBp
ZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRL
ZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtl
eUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAv
LyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRl
Y2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBF
ZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6OmNvcHkoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRl
KCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJDb3B5Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKQEAgLTQ3MzQsNyArNDczNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElV
bmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3Mp
LmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjpwYXN0ZShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFz
dGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJl
dHVybiBTX09LOwogfQogCkBAIC00NzUyLDcgKzQ3NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNv
cHlVUkwoX0luXyBCU1RSIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkuZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwg
IiIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6ZGVsZXRlXyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgi
RGVsZXRlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJX
b3JrZXJzUHJpdmF0ZS5jcHAKaW5kZXggMDQ1MThmYWQxYTc2Li4yZTkzMWUwOGU3NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKQEAgLTkwLDEx
ICs5MCwxMSBAQCBXZWJXb3JrZXJzUHJpdmF0ZSogV2ViV29ya2Vyc1ByaXZhdGU6OmNyZWF0ZUlu
c3RhbmNlKCkKIFdlYldvcmtlcnNQcml2YXRlOjpXZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7
CiB9CiAKIFdlYldvcmtlcnNQcml2YXRlOjp+V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJp
dmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUi
X3MpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NU
aHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
VGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1
ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAg
ICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VS
VF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOwor
ICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0w
IikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXIt
MC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0w
IikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1T
VkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEz
MCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8g
VGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVu
dGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4K
ICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0g
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIi
KSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0
b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMz
Li5mYTkzZGM0OGQxOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBU
RVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUp
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29u
c3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcp
IHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBl
KTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0g
Y2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElz
QXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0
YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0
ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0
ZXJhbCBqcyA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
QWxlcnQgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNl
IFJlc3BvbnNlVHlwZTo6U3ludGhldGljOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25z
ZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3Njcmlw
dD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4
cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9m
ZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQu
aHRtbCcpKSB9KTsiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNl
cnZlciI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAg
ICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxl
cnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9z
LCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAg
IHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2
ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKQEAgLTM2OSwxMyArMzY5LDEzIEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVs
dGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhw
ZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAot
ICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3Jp
cHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7
ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJD
b250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisg
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJv
bSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtX
S1dlYlZpZXcgbmV3XSk7CkBAIC00NTIsMTIgKzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQo
KS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNl
cnZlclBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSJfczsKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIx
KHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsg
Ii9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
fSwganMgfSB9LAorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAg
ICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAg
ICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0
YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQog
CiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAg
ICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0KKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAg
eyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Il9zIH19LCBqcyB9IH0KICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwog
CiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsK
QEAgLTU1OCw3ICs1NTgsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVn
aW5UZXN0Tm9uQXBwSW5pdGlhdGVkKQogCiAjaWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29u
c3QgY2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8
c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAg
ICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRW
YWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0Rl
ZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2Fn
ZScsIGFzeW5jIChldmVudCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2
MjAsNyBAQCBhc3luYyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwg
aGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25v
biBhcHAgaW5pdGlhdGVkJyk7CiB9CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
CiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRF
U1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0Fw
cEluaXRpYXRlZFZhbHVlKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlLmdldCgpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0s
Ci0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsg
Ii9tYWluLmh0bWwiX3MsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7
ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAg
Ly8gTG9hZCBXZWJWaWV3IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3Qg
dGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRh
dGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3Jp
ZW50YXRpb24ubW0KaW5kZXggY2RiOTEwNGFlYjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmll
bnRhdGlvbi5tbQpAQCAtMzE3LDcgKzMxNyw3IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZp
cmVPcmllbnRhdGlvbkV2ZW50c1JpZ2h0QXdheUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAicmVjZWl2ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdl
dCgpWzFdKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAog
PHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0
aW9uIHJlcXVlc3RQZXJtaXNzaW9uKCkgewogfQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0Ui
OworKVRFU1RSRVNPVVJDRSJfczsKIAogVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lv
blNlY3VyZUNvbnRleHRDaGVjaykKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywg
eyBtYWluQnl0ZXMgfSB9CiAgICAgfSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdOwpAQCAtMzk1LDIzICszOTUsMjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24K
IH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RP
QygKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8
aHRtbD48Ym9keT4KIDxpZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBh
bGxvdz0nYWNjZWxlcm9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRw
czovLzEyNy4wLjAuMTo5MDkxO21hZ25ldG9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48
L2lmcmFtZT4KIDwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFy
KiBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKKylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9o
dG1sPgotKURPQ0RPQ0RPQyI7CispRE9DRE9DRE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNl
T3JpZW50YXRpb25QZXJtaXNzaW9uSW5JRnJhbWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAg
ICAgICAgeyAiLyJfcywgeyBtYWluRnJhbWVUZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJh
bWUiLCB7IGZyYW1lVGV4dCB9IH0sCisgICAgICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQg
fSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tCmluZGV4IDg1ZjdkODlkYmQ4MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVh
blVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xl
YXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJD
b3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVz
dFdlYktpdEFQSSIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVu
ZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7
CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdElkZW50aWZpZXIiX3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyAr
ODI1LDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250
cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBt
YWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpA
QCAtODUwLDkgKzg1MCw5IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cu
anMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsK
KylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5
dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3
NSwxNSArODc1LDE1IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMn
KS50aGVuKGZ1bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylT
V1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50
LmRhdGEpOwogfSk7CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7
CkBAIC04OTksOCArODk5LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERv
bWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRl
cyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWlu
Lmh0bWwiX3MsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAi
Q29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5
dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0
ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAg
IGlzRG9uZSA9IGZhbHNlOwogICAgIAogICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIg
bG9hZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1l
c3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4g
YXBwLWJvdW5kIGRvbWFpbiI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3
b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRv
bWFpbiJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2Nh
bGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwogICAgIGlzRG9uZSA9IGZhbHNlOwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRt
bCIsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRl
cyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAg
ICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdp
bnNdOwpAQCAtOTY3LDcgKzk2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdp
c3RlclNlcnZpY2VXb3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0
cmF0aW9uIHN1Y2Nlc3MiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBz
dWNjZXNzIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExv
Y2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhj
Yi4uNWJjZWE4MTA5M2NmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgz
MTcsOCArODMxNyw4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29w
UHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9
LAotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAi
dGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdp
biIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9z
IH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5
cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3Ms
ICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBz
b25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVT
VChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2Fw
KQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIxKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAg
IHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwg
eyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIg
fSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlw
ZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywg
InNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHApOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KaW5kZXggMzNjOGRiYzViNzFlLi5mZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAgLTI0MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVu
dGljYXRpb25QYW5lbCwgRGVsZXRlT25lQ3JlZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgUmVjb3ZlckFmdGVyQXV0aE5Qcm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9
CisgICAgICAgIHsgIi8iX3MsIHsgIkZPTyJfcyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNv
bmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIg
Y29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQppbmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZh
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1v
ZGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUu
bW0KQEAgLTE2OSw3ICsxNjksNyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRl
bGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0g
eyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkp
CitSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50
TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUg
c2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlm
IChkZWZhdWx0Q29udGVudE1vZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb24KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxS
ZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0
aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQ
SSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0
YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0
ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlv
bmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
X3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91
dE5hdmlnYXRpb25EZWxlZ2F0ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwpAQCAtMzcyLDcgKzM3Miw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVu
ZGVkQ29udGVudE1vZGVBdFZhcmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJm
YWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsK
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0
aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFu
ZGxlcjpuaWxdOwogICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRh
aW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5p
bF07CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBs
aWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8v
IE1hbnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUg
ZGVmYXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVs
ZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxl
LzE1RTE0OCJfcyB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVz
ZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9U
UlVFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvbWFpbi5jcHAKaW5kZXggMTIwNGNiNTI4YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAorKysgYi9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZv
aWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5n
KiwgdWludDhfdD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44
Qml0U3RyaW5nLCAyNTUgfTsKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIGJvb2w+
IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlU2ltcGxlQm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRy
dWUgfTsKICAgICAKLSAgICBVUkwgYVVSTCh7IH0sICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIp
OworICAgIFVSTCBhVVJMKCJodHRwczovL3d3dy5leGFtcGxlLmNvbSJfcyk7CiAKICAgICBicmVh
a0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="484798"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456489</attachid>
            <date>2022-04-02 19:00:40 -0700</date>
            <delta_ts>2022-04-02 19:10:35 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>259438</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4ZTU2
NzgyNDIzMS4uM2I3YTc1ZGM3OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwi
OworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5k
YXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCmluZGV4IDMzMDEwOGM2NmRhYS4uYjFmNGM2NDdhNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
QEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3Vj
Y2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRv
IHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5
ZDBjZjYwZS4uYmNiNjc1MWVkYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFy
dGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBt
X2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9hbmltYXRpb25TdGFydFRpbWUpOwogCiAgICAg
bV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50
ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25t
ZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsK
ICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUo
Jm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgw
MjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0g
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmly
ZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlv
bnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJ
bmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwg
ImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAg
ICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFz
dGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFj
Ny4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2lj
UGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5
KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVy
biAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9u
ZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsK
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5
ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7Cisg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0Ny4uYWU0MzllMzBmMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikK
IAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKLSAgICB0ZXh0
LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgbmFtZSgp
LCBjb250ZXh0KCkpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTgiX3MsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQog
ewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHVybC51cmwuc3RyaW5nKCkp
OworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdXJsLnVybC5zdHJpbmco
KSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRU
eXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAg
ICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7CisgICAgd3Jp
dGVTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdGV4dCk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGxhdGZvcm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcAppbmRleCBhMzRkYzIyMGJiYjkuLjg0
MzIzMWQzYjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTc3MywxMDEgKzc3
MywxMDEgQEAgU3RyaW5nIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvcldQ
RUtleUNvZGUodW5zaWduZWQga2V5Q29kZSkKICAgICBjYXNlIFdQRV9LRVlfTWVudToKICAgICBj
YXNlIFdQRV9LRVlfQWx0X0w6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9SOgotICAgICAgICByZXR1
cm4gIkFsdCI7CisgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9DbGVh
cjoKLSAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Rvd246Ci0gICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgIHJl
dHVybiAiRG93biJfczsKICAgICAgICAgLy8gIkVuZCIKICAgICBjYXNlIFdQRV9LRVlfRW5kOgot
ICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAv
LyAiRW50ZXIiCiAgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKICAgICBjYXNlIFdQRV9LRVlf
S1BfRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKLSAgICAgICAgcmV0dXJuICJFbnRl
ciI7CisgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0V4ZWN1dGU6
Ci0gICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE6Ci0gICAgICAgIHJldHVybiAiRjEiOworICAgICAgICByZXR1
cm4gIkYxIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjoKLSAgICAgICAgcmV0dXJuICJGMiI7Cisg
ICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YzOgotICAgICAgICByZXR1
cm4gIkYzIjsKKyAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjQ6Ci0g
ICAgICAgIHJldHVybiAiRjQiOworICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9GNToKLSAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgIHJldHVybiAiRjUiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Y2OgotICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgcmV0dXJu
ICJGNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjc6Ci0gICAgICAgIHJldHVybiAiRjciOworICAg
ICAgICByZXR1cm4gIkY3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GODoKLSAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y5OgotICAg
ICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjEwOgotICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICAgIHJldHVybiAiRjEwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMTE6Ci0gICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgcmV0
dXJuICJGMTEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMjoKLSAgICAgICAgcmV0dXJuICJGMTIi
OworICAgICAgICByZXR1cm4gIkYxMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjEzOgotICAgICAg
ICByZXR1cm4gIkYxMyI7CisgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMTQ6Ci0gICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0YxNToKLSAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICByZXR1
cm4gIkYxNSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE2OgotICAgICAgICByZXR1cm4gIkYxNiI7
CisgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTc6Ci0gICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxODoKLSAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICByZXR1cm4gIkYxOCJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjE5OgotICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgIHJldHVy
biAiRjE5Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjA6Ci0gICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMToKLSAgICAgICAg
cmV0dXJuICJGMjEiOworICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjIyOgotICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMjM6Ci0gICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgcmV0dXJu
ICJGMjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyNDoKLSAgICAgICAgcmV0dXJuICJGMjQiOwor
ICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICBjYXNlIFdQRV9LRVlfSGVscDoKLSAgICAgICAg
cmV0dXJuICJIZWxwIjsKKyAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9Ib21lOgotICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICByZXR1cm4gIkhvbWUiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0luc2VydDoKLSAgICAgICAgcmV0dXJuICJJbnNlcnQiOworICAg
ICAgICByZXR1cm4gIkluc2VydCJfczsKICAgICBjYXNlIFdQRV9LRVlfTGVmdDoKLSAgICAgICAg
cmV0dXJuICJMZWZ0IjsKKyAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgIGNhc2UgV1BFX0tF
WV9QYWdlX0Rvd246Ci0gICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIl9zOwogICAgIGNhc2UgV1BFX0tFWV9QYWdlX1VwOgotICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Q
YXVzZToKLSAgICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgIHJldHVybiAiUGF1c2UiX3M7
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfUHJpbnRTY3JlZW46CiAgICAgY2FzZSBXUEVfS0VZX1By
aW50OgotICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiJfczsKICAgICBjYXNlIFdQRV9LRVlfUmlnaHQ6Ci0gICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9TZWxlY3Q6
Ci0gICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgcmV0dXJuICJTZWxlY3QiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX1VwOgotICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgcmV0dXJu
ICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KICAgICBjYXNlIFdQRV9LRVlfRGVsZXRlOgotICAgICAgICByZXR1cm4gIlUrMDA3RiI7Cisg
ICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Ci0g
ICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAgICAgICAgcmV0dXJuICJVKzAwMDgiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0lTT19MZWZ0X1RhYjoKICAgICBjYXNlIFdQRV9LRVlfMzI3MF9CYWNrVGFi
OgogICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIHJldHVybiAiVSswMDA5IjsKKyAgICAg
ICAgcmV0dXJuICJVKzAwMDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdm
MzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29u
dGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBy
bwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9
IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJf
czsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBl
ICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBD
b250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNv
ZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250
YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2Ug
aWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1l
ID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykg
eyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZTE0M2NkNGY0
YTVlLi5iNDIzNzlmMzNiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBN
SU1FSGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQog
ewogICAgIGF1dG8gbWltZUhlYWRlciA9IGFkb3B0UmVmKCpuZXcgTUlNRUhlYWRlcik7CiAgICAg
S2V5VmFsdWVNYXAga2V5VmFsdWVQYWlycyA9IHJldHJpZXZlS2V5VmFsdWVQYWlycyhidWZmZXIp
OwotICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUiKTsKKyAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0
b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10
eXBlIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJz
LmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSwgY2hhcnNldCwgbXVsdGlwYXJ0
VHlwZSwgZW5kT2ZQYXJ0Qm91bmRhcnk7CiAgICAgICAgIGlmIChhdXRvIHBhcnNlZENvbnRlbnRU
eXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52
YWx1ZSkpIHsKICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPm1p
bWVUeXBlKCk7CiAgICAgICAgICAgICBjaGFyc2V0ID0gcGFyc2VkQ29udGVudFR5cGUtPmNoYXJz
ZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIG11bHRpcGFydFR5cGUgPSBwYXJz
ZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIik7Ci0gICAgICAgICAg
ICBlbmRPZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZv
ck5hbWUoImJvdW5kYXJ5Iik7CisgICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29u
dGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSJfcyk7CisgICAgICAgICAgICBl
bmRPZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5h
bWUoImJvdW5kYXJ5Il9zKTsKICAgICAgICAgfQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRl
bnRUeXBlID0gY29udGVudFR5cGU7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBh
cnQoKSkKQEAgLTEwOSwxMSArMTA5LDExIEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVy
OjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmlu
ZCgiY29udGVudC10cmFuc2Zlci1lbmNvZGluZyIpOworICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0
b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciX3MpOwog
ICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpCiAg
ICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFRyYW5zZmVyRW5jb2RpbmcgPSBwYXJzZUNvbnRl
bnRUcmFuc2ZlckVuY29kaW5nKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKIAotICAg
IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtbG9j
YXRpb24iKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5k
KCJjb250ZW50LWxvY2F0aW9uIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAh
PSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRMb2Nh
dGlvbiA9IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXgg
NTE2OTA0NWM3MDVmLi4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAy
LDE1IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0
cmluZ1JlZiBkb21haW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7
CiAgICAgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVy
cm9yRG9tYWluQ29jb2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0g
IkNGVVJMRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWlu
Il9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAg
ICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9t
YWluT1NTdGF0dXMpCi0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNl
IGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9
ICJrQ0ZFcnJvckRvbWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRv
bWFpbldpblNvY2siX3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApA
QCAtMTkwLDEzICsxOTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVh
bUVycm9yIGVycm9yKQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NG
U3RyZWFtRXJyb3JEb21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJv
ckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAg
ICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFt
RXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9z
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRl
eCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZp
bGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1Jl
cEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0
ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0g
bV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkg
eworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmlj
ZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2Uu
dmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJl
cXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKaW5kZXggZTBlZWY2ODgwZjJiLi4wNzFiYjFhNDdiZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNh
dGVJbmZvQ3VybC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmlj
YXRlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6
dmVyaWZpY2F0aW9uRXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlf
dmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVy
biBTdHJpbmcgeyBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVy
cm9yKSB9OwogfQogCiBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5m
bzo6bWFrZUNlcnRpZmljYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcAppbmRleCA2MTM2NTMxYjViMWMuLjZiMTZmYzM0ZGU3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODIs
NyArMzgyLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNl
YXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LAogCiAgICAgU3RyaW5nIHJlcXVlc3RQ
YXRoID0gcmVxdWVzdFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocmVxdWVzdFBhdGgu
aXNFbXB0eSgpKQotICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIjsKKyAgICAgICAgcmVxdWVzdFBh
dGggPSAiLyJfczsKIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsg
cmVxdWVzdFVybCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKaW5kZXggNmQzNDY4ZTQyMjI1Li4wNGU2NGNkMmM3YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGls
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRp
bC5jcHAKQEAgLTE4NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25z
dCBVUkwmIHVybCkKIAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwog
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAg
IHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNo
UG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3Np
dGlvbikKLSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAg
cmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCmluZGV4IDdiNDY4NTVhMDUxNS4uYTdhMTUyN2M4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAg
LTYxLDEwICs2MSwxMCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3Ry
aW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFz
ZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCht
X2Jhc2VuYW1lKTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAg
IG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZp
bGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1lKTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQo
Ii5jb250ZW50Iik7CisgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7
CiB9CiAKIEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAh
PSBlbmQpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAg
aGVhZGVyRmllbGQuYXBwZW5kKCI6ICIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjog
Il9zKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhl
YWRlckZpZWxkLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJf
cyk7CiAgICAgICAgIENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRp
bjEoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVy
RmllbGRMYXRpbjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAg
IG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggM2JkMmNjNzQyODZlLi43MDJjNWIzMWEwMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpz
ZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIik7CisgICAgbV9jYWNoZURpci5hcHBlbmQo
Ii8iX3MpOwogCiAgICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpAQCAt
MTM4LDggKzEzOCw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBp
ZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBh
dGgobV9jYWNoZURpcik7Ci0gICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwor
ICAgIGF1dG8gaW5kZXhGaWxlUGF0aCA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgImluZGV4LmRh
dCJfcyk7CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCmluZGV4IDcyOGNiODhiZmIwNS4uM2U1ZDZmMWM5MGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQy
OSwyNiArNDI5LDIzIEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1
ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBTdHJpbmcgaGVhZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhh
dCB0aGlzIGhlYWRlciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQo
IjsiKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQo
dmFsdWUpOworICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsK
ICAgICB9CiAKLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVx
dWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92
ZVJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRl
ciB3aXRoIG5vIGNvbnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRp
c2FibGVkLiAKLSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoi
KTsKLQotICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9
IG1ha2VTdHJpbmcobmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUo
aGVhZGVyKSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi5iMDkyNTZiMTk4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6Ondp
bGxTZW5kUmVxdWVzdCgpCiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlm
IChzaG91bGRSZWRpcmVjdEFzR0VUKG5ld1JlcXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAg
ICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNl
dEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAppbmRleCAyYmFmOTQyZGJjOTYuLjdlYjA4NzBkNzk3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01
NTksNyArNTU5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBQVVQoKQogICAgIG1fY3VybEhh
bmRsZS0+ZW5hYmxlSHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8vIERpc2FibGUgdGhlIEV4cGVj
dDogMTAwIGNvbnRpbnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhl
YWRlcigiRXhwZWN0Iik7CisgICAgbV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJF
eHBlY3QiX3MpOwogCiAgICAgYXV0byBlbGVtZW50U2l6ZSA9IG1fZm9ybURhdGFTdHJlYW0uZWxl
bWVudFNpemUoKTsKICAgICBpZiAoIWVsZW1lbnRTaXplKQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OnNldHVwU2VuZERhdGEoYm9vbCBmb3JQdXRNZXRob2QpCiB7CiAgICAg
Ly8gY3VybCBndWVzc2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMg
d2Ugc3BlY2lmeSB0aGUgaGVhZGVyCiAgICAgaWYgKG1fZm9ybURhdGFTdHJlYW0uc2hvdWxkVXNl
Q2h1bmtUcmFuc2ZlcigpKQotICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFk
ZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+
YXBwZW5kUmVxdWVzdEhlYWRlcigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiX3MpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAoZm9yUHV0TWV0aG9kKQogICAgICAgICAgICAgbV9jdXJsSGFu
ZGxlLT5zZXRJbkZpbGVTaXplTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3JtRGF0
YVN0cmVhbS50b3RhbFNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKaW5kZXggMzg5N2UwMWM2ZDA3Li5iM2FiOGQxY2I2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVl
c3QsIEN1CiAgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNo
ZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAg
IGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAg
ICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNl
MDczNS4uNGY4OWQ5NzNlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CkBAIC00MywxMyArNDMsMTMgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0Q29va2llSmFyUGF0aCgp
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRGaWxlTmFtZSA9ICJjb29raWUuamFyLmRi
IjsKICAgICBjaGFyKiBjb29raWVKYXJQYXRoID0gZ2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFU
SCIpOwogICAgIGlmIChjb29raWVKYXJQYXRoKQotICAgICAgICByZXR1cm4gY29va2llSmFyUGF0
aDsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llSmFyUGF0aCk7CiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
ZGVmYXVsdEZpbGVOYW1lKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI0MTcKLSAgICByZXR1cm4gZGVmYXVsdEZpbGVOYW1l
OworICAgIHJldHVybiBTdHJpbmcgeyBkZWZhdWx0RmlsZU5hbWUgfTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAKaW5kZXggMzYxNTA5ZDc0ZGM5Li5kMzliNjViNDQwZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAK
QEAgLTM0MCwxMiArMzQwLDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVT
dW1tYXJ5PiBjcmVhdGVTdW1tYXJ5SW5mbyhjb25zdCBWZWN0b3I8dWludDhfCiAKIFN0cmluZyB0
bHNWZXJzaW9uKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfZ2V0X3ZlcnNpb24o
c3NsKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgU1NMX2dldF92ZXJzaW9uKHNzbCkgfTsKIH0KIAog
U3RyaW5nIHRsc0NpcGhlck5hbWUoY29uc3QgU1NMKiBzc2wpCiB7Ci0gICAgcmV0dXJuIFNTTF9D
SVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKTsKKyAgICByZXR1cm4g
U3RyaW5nIHsgU1NMX0NJUEhFUl9nZXRfbmFtZShTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNzbCkp
IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAppbmRleCBiNzlhNDczMTVlYzguLmY5YjAwZTE4
NDUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1
YmxpY1N1ZmZpeEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5n
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5JbnRlcm5hbChjb25zdCBwc2xfY3R4X3QqIHBz
bCwgY29uc3QgYwogewogICAgIC8vIHBzbF9yZWdpc3RlcmFibGVfZG9tYWluIHJldHVybnMgYSBw
b2ludGVyIHRvIGRvbWFpbidzIGRhdGEgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBwcml2YXRlIGRv
bWFpbgogICAgIGlmIChjb25zdCBjaGFyKiB0b3BQcml2YXRlRG9tYWluID0gcHNsX3JlZ2lzdHJh
YmxlX2RvbWFpbihwc2wsIGRvbWFpbikpCi0gICAgICAgIHJldHVybiB0b3BQcml2YXRlRG9tYWlu
OworICAgICAgICByZXR1cm4gU3RyaW5nIHsgdG9wUHJpdmF0ZURvbWFpbiB9OwogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggZDFkN2I2NmVhYTc4Li4xNDVmZjY4ZDU4ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlRXJyb3IuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgY3VybEVycm9yRG9tYWluOworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWwgY3VybEVycm9yRG9tYWluOwogCiAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnMgeyAwIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlRXJyb3JDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKaW5kZXggOWUzZTE1NjFiNTI5Li45OWQwNmEyN2EwMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlRXJyb3JDdXJsLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IFJlc291cmNlRXJyb3I6OmN1cmxFcnJvckRvbWFp
biA9ICJDdXJsRXJyb3JEb21haW4iOworQVNDSUlMaXRlcmFsIFJlc291cmNlRXJyb3I6OmN1cmxF
cnJvckRvbWFpbiA9ICJDdXJsRXJyb3JEb21haW4iX3M7CiAKIFJlc291cmNlRXJyb3IgUmVzb3Vy
Y2VFcnJvcjo6aHR0cEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
VHlwZSB0eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA5ZWRiZDJlODFhN2YuLmRl
YTBkYWM0YmQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0
VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBj
cm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdS
ZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRU
UENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5kZXggM2Qx
YmQxMjQ5YjdkLi41YmY4ZDY4MDExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAt
ODksMTMgKzg5LDEzIEBAIFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoY29uc3Qg
Q3VybFJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIHN3aXRjaCAocmVzcG9uc2UuaHR0cFZlcnNp
b24pIHsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMDoKLSAgICAgICAgc2V0SFRUUFZl
cnNpb24oIkhUVFAvMS4wIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCJfcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOgotICAgICAg
ICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjEiKTsKKyAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhU
VFAvMS4xIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8y
XzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiKTsKKyAgICAgICAgc2V0SFRUUFZl
cnNpb24oIkhUVFAvMiJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZF
UlNJT05fTk9ORToKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmlu
ZGV4IDBmZTY1YTI5ZTYzNi4uYzIwZWM4ZTcyMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCIiKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0
eVN0cmluZygpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGZhYjU3NDIzM2ZlMC4uYThkMjM3MDY0OGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgQ29tcGxldGkKICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llU3RvcmFnZSgpKSk7CiAgICAgZm9yIChh
dXRvKiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVt
KSkgewogICAgICAgICBHVW5pcXVlUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxT
b3VwQ29va2llKj4oaXRlbS0+ZGF0YSkpOwotICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdl
dCgpKSkgPT0gZG9tYWluKSB7CisgICAgICAgIGlmIChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoU3RyaW5nIHsgc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUu
Z2V0KCkpIH0pID09IGRvbWFpbikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmlu
ZGV4IDJjZThhMDNmZGYwMi4uNzljNjUwYWZlMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgaW50IHN0YXR1
c0NvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uUGhyYXNlKQogewotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBzdGF0dXND
b2RlLCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pIH0sIHN0
YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFzZSk7CiB9CiAKIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVy
cm9yKQpAQCAtNjEsMjIgKzYxLDIyIEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6YXV0
aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobWVz
c2FnZSk7CiAjaWYgVVNFKFNPVVAyKQotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtf
dG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBtZXNzYWdlLT5zdGF0dXNfY29kZSwK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X0hUVFBfRVJST1JfRE9NQUlOKSB9LCBtZXNzYWdlLT5zdGF0dXNfY29kZSwKICAgICAgICAgc291
cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiAjZWxzZQotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIHNvdXBfbWVzc2FnZV9n
ZXRfc3RhdHVzKG1lc3NhZ2UpLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7IGdf
cXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUikgfSwgc291cF9tZXNzYWdlX2dldF9z
dGF0dXMobWVzc2FnZSksCiAgICAgICAgIHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpLCBT
dHJpbmc6OmZyb21VVEY4KHNvdXBfbWVzc2FnZV9nZXRfcmVhc29uX3BocmFzZShtZXNzYWdlKSkp
OwogI2VuZGlmCiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJv
cihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIEdFcnJvciogZXJyb3IpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2Rl
LCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190
b19zdHJpbmcoR19UTFNfRVJST1IpLCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUsIGZhaWxp
bmdVUkwsIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOworICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhHX1RMU19FUlJPUikgfSwg
R19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1bmFjY2VwdGFibGVUTFND
ZXJ0aWZpY2F0ZSgpKTsKICAgICByZXNvdXJjZUVycm9yLnNldFRMU0Vycm9ycyh0bHNFcnJvcnMp
OwogICAgIHJlc291cmNlRXJyb3Iuc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpOwogICAgIHJl
dHVybiByZXNvdXJjZUVycm9yOwpAQCAtODgsOCArODgsOCBAQCBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiAgICAgLy8gbmV0
d29ya2luZyBlcnJvcnMgZnJvbSB0aGF0IGZpbGUgc2hvdWxkIGJlIG1vdmVkIGhlcmUuCiAKICAg
ICAvLyBVc2UgdGhlIHNhbWUgdmFsdWUgYXMgaW4gTlNVUkxFcnJvci5oCi0gICAgc3RhdGljIGNv
bnN0IGludCB0aW1lb3V0RXJyb3IgPSAtMTAwMTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciI7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBpbnQgdGltZW91dEVycm9yID0gLTEwMDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciJfczsKICAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVzdCB0
aW1lZCBvdXQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
c3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYzMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpS
ZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYg
c25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3N0
YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291cF9tZXNzYWdlX2dl
dF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0YXR1c1RleHQoU3Ry
aW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSB9KTsKIAog
ICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVyX2NlcnRpZmljYXRl
KHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2FnZV9nZXRfdGxzX3Bl
ZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkgKzY2LDkgQEAgUmVz
b3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2Us
IGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgY29uc3Qg
Y2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShyZXNwb25z
ZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRDb250ZW50VHlwZS5p
c051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCAm
JiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAgICBjb250ZW50VHlw
ZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3Ry
aW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UKLSAgICAgICAgY29u
dGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsg
b2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0
dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWlt
ZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0
cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2lu
LmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAg
dm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRp
dmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwogICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsK
ICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFyZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJl
Zml4ID0gIigiOwotICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRp
dmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAgbmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAg
ICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1
NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBA
IC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dz
S2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkg
ewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAg
ICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAg
ICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsK
ICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAg
ICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAg
ICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2Nr
Il9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAg
ICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAg
ICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAg
ICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICBy
ZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAi
RW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAg
ICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNh
c2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICBy
ZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAg
ICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1
cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7
CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAg
ICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBj
YXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4g
IkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7Cisg
ICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAg
ICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNl
IFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3
Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAg
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAg
cmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZL
X0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBj
YXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAg
ICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAg
ICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVy
biAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
OToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9z
OwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAg
IHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNl
IFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAi
RjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAg
ICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAg
ICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAg
cmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1
cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZL
X0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4g
IkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05F
WFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAi
UGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBW
S19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJu
ICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVy
biAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAg
ICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAg
ICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAg
ICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAg
ICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8g
U3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19E
RUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3Ry
aW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5k
ZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2Fk
Il9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRl
ZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBl
UmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0
cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAu
aXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAi
dGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFn
ZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwg
ImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53
YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92
bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1t
NGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywg
ImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
eGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28i
X3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImlt
YWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1w
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5k
LndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94
LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwi
LCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2Uv
anhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAu
Z2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5j
cHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29s
IFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0
KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQog
ewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZv
cm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRz
LmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlz
dCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNm
Rm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQp
Ci0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRk
KCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0
YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUs
OSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25z
dCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlw
ZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwot
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1s
aXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAg
ICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcg
KzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJv
YXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9i
amVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFU
eXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUg
PT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1f
ZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZt
X2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRh
KGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0
ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJv
b2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0
bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwg
IiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmws
IHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xv
YmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5o
R2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJV
RSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3
ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVS
TCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5z
dHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkg
aXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9t
VVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1Bh
dGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9z
LCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJc
blVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3Ry
aW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNs
aXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVu
dGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25l
cikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1M
KHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAg
ICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwg
ZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xv
YmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBi
b2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpA
QCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5U
ZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXND
bGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3du
ZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENG
X1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3Rl
cnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0
IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0
PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3Ry
aW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAg
ICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgp
OwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFM
IGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNl
cnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUo
dXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRo
Lmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6
d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3Vw
KQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwg
IiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0
YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1F
RF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3Rl
bUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmlu
ZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUyZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVt
SW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBv
c1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2lu
ZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5k
b3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldp
bmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdp
bmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRv
d3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dz
TUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoK
LSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciog
ZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJX
aW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpv
cikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmco
ZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0
KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVy
ZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVjdHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAg
IGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJldHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVy
biAiOyBXT1c2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VT
U09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAgICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOwor
ICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0
ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4g
IjsgV2luNjQ7IElBNjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVk
NzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUklucHV0TWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9v
cGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHBy
IHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlwZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5s
aW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJpbmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewog
ICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjog
cmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJl
dHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0
dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiBy
ZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0
OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25B
OiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjog
cmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJl
dHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJl
dHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiBy
ZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGlj
azogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1
bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJfczsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogICAgIH0KIH0KIApAQCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBz
dGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAyPiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0
cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5YUkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91
Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1
bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91
Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0
aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRp
bHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEy
IEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNzVG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVz
cykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVzcykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpM
ZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAg
ICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJyaWdodCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBh
OTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVu
dFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5n
RW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9j
a1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBN
b2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJp
bmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxs
cHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3
NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5k
UmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01
MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6
VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2Jq
ZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdl
dEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVn
ZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAg
IGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7
CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5j
cHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApA
QCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFs
b2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAg
ICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFT
Y3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1
bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3Vy
cmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmpl
Y3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9u
c2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBp
ZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJy
b3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAg
ICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAg
ICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
Q29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJv
cikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQg
U2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRp
b25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxl
Il9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAm
JiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUo
KSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7
CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsK
KyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwog
ICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2lu
ZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewog
ICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAg
ICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsK
LSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVl
KCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgu
dmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywg
aGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXpl
Il9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNl
bmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVz
cG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3Jl
YXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElE
KS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2Fk
U2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQg
PQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVu
dC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAn
ZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdt
dWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAi
ICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAg
ICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBt
X3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAg
dm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
RnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVt
ZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRh
YmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0
ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1l
bnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVy
biBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0Vk
aXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgog
ICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAg
IiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAg
YXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJz
LT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5n
Q29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxl
bWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQs
IEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNG
aWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVV
cGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFs
dWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBh
biBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10g
PQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAg
ICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAg
ICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVu
dDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9j
LmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVt
ZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwg
RnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25S
YW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAg
ICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09
IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0Vs
ZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxl
Lid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJf
czsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0
ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50
KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3Rh
dGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9u
OjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5u
YW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1
ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZh
bHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29r
aWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJk
b21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNv
b2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29y
KGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29v
a2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29s
ZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRE
b3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tp
ZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29y
KCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29v
a2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVj
dDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRl
JiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJu
IG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0
ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0
aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVND
SUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNv
dXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0
U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1
cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAg
ICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6
TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAg
cmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBj
YXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAg
ICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVu
OgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7
CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6
S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2Fy
ZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJu
ICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9u
T3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFs
IGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBz
d2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0Ogot
ICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsK
ICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAi
UG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJP
cmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAg
IHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdl
ZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZl
clNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0
YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigi
V0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVu
dlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAj
ZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29u
c3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNl
cnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRV
c2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlM
VVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07Cisg
ICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2Vy
dmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVz
YWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxV
UkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOwor
ICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmpl
Y3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0
byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAg
aWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsK
ICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAg
ICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2Vy
aWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICgh
cHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmpl
Y3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNp
b25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAg
ICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6
OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBz
dAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dS
ZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAg
ICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1
ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAg
ICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhh
dmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAg
ICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhh
dmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQg
YW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdu
b3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBh
Z2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAg
ICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNh
cGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9h
ZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBh
YmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9h
ZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9h
ZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNl
L1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAw
OTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2Fw
YWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmls
aXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2Nr
ZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxp
dGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJp
bmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29j
a2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNT
dHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUo
InNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1
ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRy
ID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVl
OwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZh
bHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZh
bHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMu
Z2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdl
dFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMu
dGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2
ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQv
SFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3Bl
Y3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFu
ZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAg
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8
L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwv
aDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNw
b25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VD
b3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJU
b1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJn
ZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+
Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAg
IG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4i
X3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBD
b21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4
dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZm
ZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0
ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJh
dGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5k
RW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUm
IHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNv
dXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2
YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+
Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4u
MzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3Rh
dGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAg
ICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAg
Y2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0
dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1
cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExT
UHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tS
ZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODYuLjNhODhmYzI2YWQwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rl
ci5oCkBAIC00NCw1ICs0NCw1IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUo
TlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNC4u
MTU3M2RmMmI3MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQpAQCAtNTQsMjUgKzU0LDIyIEBAIHN0YXRpYyBSZWZQ
dHI8QVBJOjpEaWN0aW9uYXJ5PiBjcmVhdGVFbmNvZGVkT2JqZWN0KFdLUmVtb3RlT2JqZWN0RW5j
b2RlciAqLCBpZCk7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIG1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYgd2lyZSwgY29uc3QgU3RyaW5nJiBsb2NhbCkK
K2Jvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKndpcmUsIE5TU3Ry
aW5nICpsb2NhbCkKIHsKLSAgICBpZiAobG9jYWwgPT0gd2lyZSkKKyAgICBpZiAoW2xvY2FsIGlz
RXF1YWxUb1N0cmluZzp3aXJlXSA9PSAgTlNPcmRlcmVkU2FtZSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBpZiAobG9jYWwubGVuZ3RoKCkgIT0gd2lyZS5sZW5ndGgoKSkKKyAgICBpZiAo
bG9jYWwubGVuZ3RoICE9IHdpcmUubGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICB1bnNpZ25lZCBsZW5ndGggPSBsb2NhbC5sZW5ndGgoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgY2hhciBsb2NhbFR5cGUgPSBsb2NhbFtp
XTsKLSAgICAgICAgY2hhciB3aXJlVHlwZSA9IHdpcmVbaV07Ci0KLSAgICAgICAgaWYgKGxvY2Fs
VHlwZSAhPSB3aXJlVHlwZSkgewotICAgICAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNo
YXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCi0gICAgICAgICAgICBpZiAoc3RyY2hyKCJCYyIsIGxv
Y2FsVHlwZSkgJiYgc3RyY2hyKCJCYyIsIHdpcmVUeXBlKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICBhdXRvIG1hcENoYXJhY3RlciA9IFtdKHVuaWNoYXIgYykgLT4gdW5pY2hhciB7
CisgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxl
LgorICAgICAgICByZXR1cm4gYyA9PSAnQicgPyAnYycgOiBjOworICAgIH07CisgICAgTlNVSW50
ZWdlciBsZW5ndGggPSBsb2NhbC5sZW5ndGg7CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKG1hcENoYXJhY3RlcihbbG9jYWwgY2hhcmFj
dGVyQXRJbmRleDppXSkgIT0gbWFwQ2hhcmFjdGVyKFt3aXJlIGNoYXJhY3RlckF0SW5kZXg6aV0p
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQpAQCAtOTcwLDkgKzk2Nyw4IEBAIHN0YXRpYyBOU0ludm9jYXRpb24gKmRlY29k
ZUludm9jYXRpb24oV0tSZW1vdGVPYmplY3REZWNvZGVyICpkZWNvZGVyKQogICAgIGlmICghdHlw
ZVNpZ25hdHVyZSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZFVuYXJjaGl2
ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZvY2F0aW9uIGhhZCBubyB0eXBlIHNpZ25h
dHVyZSJdOwogCi0gICAgU3RyaW5nIHJlbW90ZU1ldGhvZFNpZ25hdHVyZSA9IHR5cGVTaWduYXR1
cmUuVVRGOFN0cmluZzsKLSAgICBTdHJpbmcgbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2Nh
dGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nLlVURjhTdHJpbmc7Ci0gICAgaWYgKCFX
ZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHJlbW90ZU1ldGhvZFNpZ25hdHVy
ZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQorICAgIE5TU3RyaW5nICpsb2NhbE1ldGhvZFNpZ25h
dHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmc7CisgICAgaWYg
KCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHR5cGVTaWduYXR1cmUsIGxv
Y2FsTWV0aG9kU2lnbmF0dXJlKSkKICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZFVuYXJjaGl2ZU9wZXJhdGlvbkV4Y2VwdGlvbiBmb3JtYXQ6QCJMb2NhbCBhbmQgcmVtb3RlIG1l
dGhvZCBzaWduYXR1cmVzIGFyZSBub3QgY29tcGF0aWJsZSBmb3IgbWV0aG9kIFwiJXNcIiIsIHNl
bGVjdG9yID8gc2VsX2dldE5hbWUoc2VsZWN0b3IpIDogIihubyBzZWxlY3RvcikiXTsKIAogICAg
IGlmIChpc1JlcGx5QmxvY2spIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCBhYTMxOTQ5YzBjNTQu
LjU5Njk3ZTI2MmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0g
KFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAg
cmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlC
bG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdl
ciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3Rv
Y29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAg
ICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1l
dGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9j
b2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBT
dHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBp
ZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUg
PSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5j
b2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFy
Z2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4g
bmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJs
b2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3
ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9i
amVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRo
b2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0
dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0s
IGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2ln
bmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJ
bmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAg
TlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtp
bnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBp
ZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVj
dGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDog
RmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQg
bG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRo
b2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxv
Y2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxl
ZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxp
ZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJl
LCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAg
LSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRp
b24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVw
bHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVh
dGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNp
YWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgp
LCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJ
bnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFr
ZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0
cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2Vy
XShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9
IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5
XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJy
b3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJu
aW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2Fy
ZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4g
cmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1
bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAg
IHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmki
OwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGlj
P3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20v
Y2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29t
L3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAt
NjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VM
b29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNl
VVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJp
bmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxz
ZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczov
L3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOwor
ICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90
cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJv
d3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZp
ZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQog
CiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlv
bigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1Q
cmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBh
Z2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJf
YXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JU
ZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90
IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1
Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwog
ICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9S
TShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5h
ZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgi
Y29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggNzI5NDk0MWNhYTJiLi5mYmUwMmVjOGUzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUxLDcgKzM4NTEsNyBAQCB2b2lkIFdlYlBh
Z2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVy
cyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJp
dmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNl
cHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0
aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRh
aWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50
ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQt
PmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91
bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1
c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAg
ICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IEln
bm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3lu
dGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgog
ICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJf
cywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9z
LCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAg
ICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJf
cywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZh
Y2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBA
IlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAor
ICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAg
ImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisg
ICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToK
LSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSsw
MDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAg
ICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr
OwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50
KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChk
b2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05h
bWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJk
VXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0
dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3Mp
OwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpA
QCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBD
b2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
ICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2Vy
IG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBj
b2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1h
Y3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAg
ICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpp
bmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAog
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlh
UXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJD
b250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2Ny
ZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJW
aWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7
CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwg
ZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6
IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNo
ZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxp
bmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlz
c3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tH
cmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+
JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1
ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQp
X3NldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5n
ICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJy
aWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZh
dGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2
ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1
bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYK
ICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFi
bGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJp
dmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHMo
dHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRG
YW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAg
ICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlh
MTEuLmMyOTBkYWUzNzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVC
YXNlLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFz
ZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkco
b2JqLCBvYmopOwogICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNz
Q291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3Np
YmxlQmFzZTo6fkFjY2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2Uq
IEFjY2Vzc2libGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmos
IEhXTkQgd2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
Y3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFy
eVByb3BlcnR5QmFnOjp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWciX3MpOwogfQogCiBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlv
bmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUy
Li4zMDJmNjM3YWJjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1
bHREb3dubG9hZERlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRl
Ojp+RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwog
ICAgIEhhc2hTZXQ8SVdlYkRvd25sb2FkKj46Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdp
bigpOwogICAgIGZvciAoO2kgIT0gbV9kb3dubG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCpp
KS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVs
dFBvbGljeURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZS5jcHAKaW5kZXggZThlNWY1YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAt
NDMsMTMgKzQzLDEzIEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVn
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUi
X3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJE
ZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVm
YXVsdFBvbGljeURlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMg
QEAgTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+
TWVtb3J5U3RyZWFtKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJl
YW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZm
NzU3YjM4NmQxNS4uZTk3YzQxMzI0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9u
UHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IGFjdGlvbiwgUmVmUHQKICAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5
QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJf
cyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJB
Y3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0
aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9u
UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmlu
ZGV4IDhmMjcxNjJiYmFmMS4uZjMxMDJlNTI2ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFw
cGxpY2F0aW9uQ2FjaGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgw
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJB
cHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9u
Q2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2Vi
QXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtODEsNyArODEsNyBAQCBzdGF0
aWMgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIAogV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UmIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3JhZ2UoKQogewotICAgIHN0YXRp
YyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5s
ZWFrUmVmKCk7CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAi
QXBwbGljYXRpb25DYWNoZSJfcykubGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2Ny4u
MTdkZWJjNDg3ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNo
aXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAt
NjIsMTMgKzYyLDEzIEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUmVmUHRyPExlZ2FjeVdlYkFy
Y2hpdmU+JiYgY29yZUFyY2hpdmUpCiAjZW5kaWYKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViQXJjaGl2ZSJfcyk7CiB9CiAKIFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
QXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSJfcyk7
CiB9CiAKIEhSRVNVTFQgV2ViQXJjaGl2ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA5MDRhYzJkMjgxMDQuLjExNmFhNDIw
MTc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRM
aXN0KFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0CiAgICAgYmFja0Zv
cndhcmRMaXN0V3JhcHBlcnMoKS5zZXQobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCksIHRoaXMpOwog
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tG
b3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRM
aXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkK
QEAgLTY1LDcgKzY1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0
KCkKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnJlbW92ZShtX2JhY2tGb3J3YXJkTGlz
dC5nZXQoKSk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3QqIFdlYkJh
Y2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBi
YWNrRm9yd2FyZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKaW5kZXggZGU4
NTBlNzEzYjAzLi44YjE2YjQzZDQxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5j
cHAKQEAgLTQ3LDEzICs0NywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNhY2hl
OjpXZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSJf
cyk7CiB9CiAKIFdlYkNhY2hlOjp+V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZSogV2ViQ2FjaGU6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcAppbmRleCAzNTY5ODNjNTJiMzcuLmYxMzE2ZGU0NmMyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ29yZVN0YXRpc3RpY3M6OldlYkNvcmVTdGF0
aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNv
cmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3M6On5XZWJDb3JlU3RhdGlz
dGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzKiBXZWJDb3JlU3Rh
dGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIEhSRVNVTFQgV2Vi
Q29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKF9DT01f
T3V0cHRyX29wdF8KICAgICBJdGVyYXRvciBlbmQgPSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gdHlwZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0
b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsg
KytjdXJyZW50KQotICAgICAgICB0eXBlQ291bnRNYXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVu
dC0+dmFsdWUpOworICAgICAgICB0eXBlQ291bnRNYXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtl
eSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAgICBDT01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0
cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50
TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8odHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTE2
Nyw3ICsxNjcsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0
VHlwZUNvdW50cyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eQogICAgIEl0ZXJhdG9yIGVuZCA9
IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBl
Q291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMt
PmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1h
cC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1h
cC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENP
TVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+
OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0
eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMjk2LDEzICsyOTYsMTMgQEAgSFJFU1VMVCBXZWJDb3Jl
U3RhdGlzdGljczo6bWVtb3J5U3RhdGlzdGljcyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJh
ZyoqIHN0YXQKICAgICBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0g
Z2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
IGxvbmcgbG9uZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBmaWVsZHM7Ci0gICAgZmllbGRz
LmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSk7Ci0gICAgZmll
bGRzLmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKLSAg
ICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxpc3RCeXRlcyIsIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOwotICAg
IGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSIsIGhlYXBTaXplKTsKLSAgICBmaWVsZHMu
YWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiLCBoZWFwRnJlZSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2
YVNjcmlwdFN0YWNrU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFs
TWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRT
aXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5K
SVRCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiX3Ms
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVz
ZXJ2ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0
ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3Rp
Y3MuY29tbWl0dGVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlz
dEJ5dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0
aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNp
emUiX3MsIGhlYXBTaXplKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiX3Ms
IGhlYXBGcmVlKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIl9zLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMp
KTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SklUU2l6ZSJfcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcykpOwogCiAgICAgKnN0
YXRpc3RpY3MgPSBDT01Qcm9wZXJ0eUJhZzx1bnNpZ25lZCBsb25nIGxvbmcsIFN0cmluZywgQVND
SUlDYXNlSW5zZW5zaXRpdmVIYXNoPjo6YWRvcHQoZmllbGRzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKaW5kZXggMjExNTk4ZDM5YTZhLi5iOWY0MTA5MzU5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cApAQCAtNDU0LDcgKzQ1NCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENv
bW1hbmRGcm9tRXZlbnQoRWxlbWVudCogZSwgS2V5Ym9hcmRFdmVudCoga2UpCiAgICAgICAgIGlm
IChkb21FbGVtZW50KSB7CiAgICAgICAgICAgICBJRE9NSFRNTElucHV0RWxlbWVudCogZG9tSW5w
dXRFbGVtZW50OwogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkb21FbGVtZW50LT5RdWVyeUlu
dGVyZmFjZShJSURfSURPTUhUTUxJbnB1dEVsZW1lbnQsICh2b2lkKiopJmRvbUlucHV0RWxlbWVu
dCkpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgPSBtX3dlYlZpZXctPmludGVy
cHJldEtleUV2ZW50KGtlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCB7IG1fd2Vi
Vmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpIH07CiAgICAgICAgICAgICAgICAgLy8gV2UgYWxs
b3cgZW1wdHkgY29tbWFuZHMgaGVyZSBiZWNhdXNlIHRoZSBhcHAgY29kZSBhY3R1YWxseSBkZXBl
bmRzIG9uIHRoaXMgYmVpbmcgY2FsbGVkIGZvciBhbGwga2V5IHByZXNzZXMuCiAgICAgICAgICAg
ICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gcmV2aXNpdCB0aGlzIGxhdGVyIGJlY2F1c2UgaXQgZG9l
c24ndCByZWFsbHkgbWFrZSBzZW5zZSB0byBzZW5kIGFuIGVtcHR5IGNvbW1hbmQuCiAgICAgICAg
ICAgICAgICAgZm9ybURlbGVnYXRlLT5kb1BsYXRmb3JtQ29tbWFuZChkb21JbnB1dEVsZW1lbnQs
IEJTdHJpbmcoY29tbWFuZCksIGtpdChlLT5kb2N1bWVudCgpLmZyYW1lKCkpLCAmcmVzdWx0KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVm
Yjc5Li5mNzhjMWJkMmE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2Vi
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJj
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAK
IFdlYkRhdGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0
YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNv
dXJjZSgpOwogICAgIFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJj
ZSogV2ViRGF0YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmlu
ZGV4IDY3Njc3MjAzMTVjMy4uOGYzNzY1NDEyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRh
dGFiYXNlTWFuYWdlciogV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJE
YXRhYmFzZU1hbmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2Vi
RGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwog
fQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApA
QCAtMzUsNyArMzUsNyBAQCBXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hl
ZERhdGFTb3VyY2UoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRvY3VtZW50TG9hZGVyIl9zKTsKIH0KIAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJE
b2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgU3Vic3RpdHV0ZURhdGEmIGRhdGEpCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVu
dExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsCiBXZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1l
bnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9h
ZGVyIl9zKTsKICAgICBpZiAobV9kYXRhU291cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRh
Y2hlZERhdGFTb3VyY2UpOwogICAgICAgICBtX2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5
MDQ1NTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMs
NyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3du
bG9hZCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJf
cyk7CiB9CiAKIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBX
ZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9h
ZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9h
ZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQog
CiBXZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggMTgxMGE2Njg1ODE4Li5m
YzY0YjliYzk5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25s
b2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW8KICAgICB9
CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhIFVSTCBvciBkZXNjcmlwdGlvbiBmb3IgdGhp
cyBlcnJvciBjb2RlPwotICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9y
RG9tYWluKSwgV2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCAi
Iik7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBX
ZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksIGVtcHR5U3RyaW5n
KCkpOwogICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3IoQWRvcHRDT00sIFdlYkVycm9yOjpj
cmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdhdGUtPmRpZEZhaWxXaXRoRXJyb3Io
dGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEcm9wU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BT
b3VyY2UuY3BwCmluZGV4IDZiYWJmOTBiODlmYS4uNWIxYzVkZmM3ZTg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIFdlYkRy
b3BTb3VyY2U6OldlYkRyb3BTb3VyY2UoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmll
dyh3ZWJWaWV3KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJEcm9wU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEcm9w
U291cmNlIl9zKTsKIH0KIAogV2ViRHJvcFNvdXJjZTo6fldlYkRyb3BTb3VyY2UoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291
cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIl9zKTsK
IH0KIAogU1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVG
SUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOGFmYmEwZjZk
NTNhLi5jNjFmMTcyZDQ3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCkKICAgICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVu
dFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJv
cGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJv
cGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0
eUJhZyogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJF
cnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTlk
ZTM3MWJlYTFjLi43MTYxMjE5MjMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5j
cHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFcnJvcjo6V2ViRXJyb3IoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCiAgICAgLCBtX2Vycm9yKGVycm9y
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJF
cnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRXJyb3IiX3MpOwogfQogCiBX
ZWJFcnJvcjo6fldlYkVycm9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkVycm9yIl9zKTsKIH0KIAogV2ViRXJyb3IqIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5j
ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA1OTQ4YjBlYzViODAuLjA3YmQ0NmZj
OTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjQzLDcgKzI0Myw3
IEBAIFdlYkZyYW1lOjpXZWJGcmFtZSgpCiB7CiAgICAgV2ViRnJhbWVDb3VudCsrOwogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZTo6fldl
YkZyYW1lKCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBXZWJGcmFtZTo6fldlYkZyYW1lKCkKICAgICBk
ZWxldGUgZDsKICAgICBXZWJGcmFtZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lKiBXZWJGcmFtZTo6Y3JlYXRl
SW5zdGFuY2UoKQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJl
ZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5CiB7
CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5
cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0
L2h0bWwiOworICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAgICBT
dHJpbmcgZW5jb2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRleHRF
bmNvZGluZ05hbWUpKTsKIApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6
c2VsZWN0QWxsKCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBF
Q1RFRDsKIAotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwi
KS5leGVjdXRlKCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVj
dEFsbCJfcykuZXhlY3V0ZSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgcmV0dXJu
IFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGlj
eUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXIuY3BwCmluZGV4IGFmZWQyYjRlNmE0Mi4uOTQ0NjhiYjczZDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcApAQCAtMzks
MTMgKzM5LDEzIEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVu
ZXIoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQogICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1l
UG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJl
ZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3Li42
ODkyZjc3MWFkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihSZWZQ
dHI8R2VvbG9jYXRpb24+JiYKICAgICAsIG1fZ2VvbG9jYXRpb24oV1RGTW92ZShnZW9sb2NhdGlv
bikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
Ykdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyOjp+V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
CmluZGV4IDkyNGM0OGIxM2M0MS4uZmYxZmQ5MGM0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtMzYsMTMgKzM2LDEz
IEBAIENPTVB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2NhdGlv
blBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9
CiAKIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0luXyBS
RUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAppbmRleCA0NmFhYWU5
N2Q3YmIuLjg2YTNjYjZkYWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIHsKICAgICBXZWJIVE1MUmVwcmVzZW50
YXRpb25Db3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiAKICAgICBXZWJIVE1MUmVwcmVzZW50
YXRpb25Db3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRh
dGlvbiogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjcmVhdGVJbnN0YW5jZShXZWJGcmFtZSogZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDNmMWViNmQ3Mzhi
ZC4uNTBhOGU1ZjZiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApA
QCAtODksNyArODksNyBAQCBzdGF0aWMgaW5saW5lIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0
ZVVzZXJJbmZvRnJvbUhpc3RvcnlJdGVtKEJTVFIgbm90aWZpY2F0aQogV2ViSGlzdG9yeTo6V2Vi
SGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3Rvcnki
X3MpOwogCiAgICAgbV9wcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFy
ZFByZWZlcmVuY2VzKCk7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIFdlYkhpc3Rvcnk6OldlYkhpc3Rv
cnkoKQogV2ViSGlzdG9yeTo6fldlYkhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Il9zKTsKIH0KIAogV2ViSGlzdG9yeSogV2ViSGlz
dG9yeTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eUl0ZW0uY3BwCmluZGV4IGZiODhlMzllN2I1Ni4uOGRkOWJkYWFhMjg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdlYkhp
c3RvcnlJdGVtOjpXZWJIaXN0b3J5SXRlbShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0
ZW0pCiAgICAgaGlzdG9yeUl0ZW1XcmFwcGVycygpLnNldChtX2hpc3RvcnlJdGVtLmdldCgpLCB0
aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0
ZW0iX3MpOwogfQogCiBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKQEAgLTYyLDcg
KzYyLDcgQEAgV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCiAgICAgaGlzdG9yeUl0
ZW1XcmFwcGVycygpLnJlbW92ZShtX2hpc3RvcnlJdGVtLmdldCgpKTsKIAogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iX3MpOwogfQogCiBX
ZWJIaXN0b3J5SXRlbSogV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGY2MjE5YTY2ZGFhOS4uNDQ3ZDky
YTNhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTUx
LDEzICs1MSwxMyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNwZWN0
ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlYwogICAgIEFTU0VSVF9BUkcoaW5z
cGVjdGVkV2ViVmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3I6On5XZWJJ
bnNwZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
Ykluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJbnNw
ZWN0b3I6OmZyb250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhlNGJlOGFjMjFiLi43NTg2NjI3MmQ1
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xs
ZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xs
ZWN0b3IuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBX
ZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpXZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENv
bGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxl
Y3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xs
ZWN0b3IqIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCmluZGV4IGNlODYyMGZk
NGJkNy4uNmVlMDcyNTMyZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dENsYXNzRmFjdG9yeS5jcHAKQEAgLTY5LDEzICs2OSwxMyBAQCBXZWJLaXRDbGFzc0ZhY3Rvcnk6
OldlYktpdENsYXNzRmFjdG9yeShDTFNJRCB0YXJnZXRDbGFzcykKICAgICBXZWJDb3JlOjpwb3B1
bGF0ZUpJVE9wZXJhdGlvbnMoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIFdlYktpdENsYXNzRmFjdG9yeTo6
fldlYktpdENsYXNzRmFjdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogLy8gSVVua25vd24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVz
c2FnZUxvb3AuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3Au
Y3BwCmluZGV4IDkzN2E2NjY5ZTkwOC4uZTY5YzBjODA4OThiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdl
YktpdE1lc3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktp
dE1lc3NhZ2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBX
ZWJLaXRNZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKaW5kZXggMTI2M2Jj
MGMxMWY5Li5mNTE1MWNiZTBiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFN0YXRpc3RpY3MuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgaW50IFdlYkZyYW1lVmlld0NvdW50
OwogV2ViS2l0U3RhdGlzdGljczo6V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJL
aXRTdGF0aXN0aWNzOjp+V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJL
aXRTdGF0aXN0aWNzKiBXZWJLaXRTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggNWM5
MTI1NzcyNTI2Li4yNDQxMDY2ODg2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTXV0YWJsZVVS
TFJlcXVlc3Q6OldlYk11dGFibGVVUkxSZXF1ZXN0KGJvb2wgaXNNdXRhYmxlKQogICAgIDogbV9p
c011dGFibGUoaXNNdXRhYmxlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiBXZWJNdXRhYmxlVVJMUmVx
dWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkzLDcgKzkz
LDcgQEAgV2ViTXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJ
bW11dGFibGVJbnN0YW5jZShjb25zdCBSZXNvdXIKIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojp+V2Vi
TXV0YWJsZVVSTFJlcXVlc3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiAvLyBJVW5rbm93
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZp
Z2F0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0
YS5jcHAKaW5kZXggYmM0ZjI2ODRhZDE2Li42YTkzM2FiYjVmODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcyLDEzICs3MiwxMyBAQCBX
ZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRh
Ojp+V2ViTmF2aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9u
RGF0YSogV2ViTmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlVSTFJl
c3BvbnNlKiByZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwgY29uc3QgU3RyaW5nJiBj
bGllbnRSZWRpcmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmlj
YXRpb24uY3BwCmluZGV4IGY1M2JiNzI2MzUzZi4uOTQ5MjU2ZWU4MDIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV2Vi
Tm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oQlNUUiBuYW1lLCBJVW5rbm93biogYW5PYmpl
Y3QsIElQcm9wZXJ0eUJhZyogdXMKICAgICAgICAgbV91c2VySW5mby0+QWRkUmVmKCk7CiAKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0
aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQpAQCAtNTYsNyArNTYsNyBA
QCBXZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQogICAgICAgICBtX3VzZXJJbmZv
LT5SZWxlYXNlKCk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlmaWNh
dGlvbjo6Y3JlYXRlSW5zdGFuY2UoQlNUUiBuYW1lIC8qPTAqLywgSVVua25vd24qIGFuT2JqZWN0
IC8qPTAqLywgSVByb3BlcnR5QmFnKiB1c2VySW5mbyAvKj0wKi8pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA5MjUzMmRiZGNh
NDEuLjZjZDg4NDJlN2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJO
b3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQogICAgIDogZChtYWtlVW5pcXVlPFdlYk5v
dGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90
aWZpY2F0aW9uQ2VudGVyOjp+V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50
ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNhdGlvbkNlbnRl
cjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5j
ZXMuY3BwCmluZGV4IDljZjhjYzAyYTIxYy4uZmIxNzNkZDVjMWU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBXZWJQ
cmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKQog
V2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXM6
On5XZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVm
ZXJlbmNlczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3Vy
Y2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOC4uM2JiYTMxZTM5ZDk1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3VyY2U6
OldlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJgogICAgICwgbV9mcmFtZU5hbWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZTo6
fldlYlJlc291cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNjcmlwdE9iamVjdC5jcHAKaW5kZXggYjhmZTMwN2NiODZiLi5kZjA3ODFmNDEyMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApAQCAtMzQsMTMg
KzM0LDEzIEBACiBXZWJTY3JpcHRPYmplY3Q6OldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAog
V2ViU2NyaXB0T2JqZWN0Ojp+V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTY3JpcHRXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3Js
ZC5jcHAKaW5kZXggMjY4MTAxYTZjMGYwLi43ZWY4YTQ1MzQ2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIFdl
YlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdv
cmxkKQogICAgIGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAgICsr
Z0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBX
ZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2ViU2Ny
aXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29y
bGQuZ2V0KCkpOwogCiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6
c3RhbmRhcmRXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9y
aWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIzZjZiLi5lZWYxNjQzYjYxN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwxMyBA
QCBXZWJTZWN1cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNl
Y3VyaXR5T3JpZ2luKQogICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJp
dHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2lu
Il9zKTsKIH0KIAogV2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3Vy
aXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9y
aWdpbiJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgwYTJm
Y2EyOS4uN2YxMWRmNWZmZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VyaWFsaXplZEpTVmFsdWUuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6V2ViU2VyaWFsaXplZEpTVmFsdWUoKQog
ewogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJp
YWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXpl
ZEpTVmFsdWUiX3MpOwogfQogCiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6ZWRK
U1ZhbHVlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogQ09NUHRyPFdlYlNlcmlhbGl6ZWRK
U1ZhbHVlPiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKaW5kZXggNjIwN2I1NmE3ZjY3Li4w
NDUzNWYzZjcyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRS
ZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVy
LmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVy
OjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRS
ZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIl9z
KTsKIH0KIAogV2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVy
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwog
fQogCiBIUkVTVUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKaW5k
ZXggNTk3ODhjNGY1ZTI0Li40MGI3YjY2ZmE3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAgLTQ2
LDEzICs0NiwxMyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIoc2Vu
ZGVyKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0YW5j
ZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKaW5kZXggMzVhODQ1ZWQ2OTNjLi41MDk5YmEw
YWYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKQEAgLTQyLDEzICs0MiwxMyBA
QCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIoUmVmUHRyPAogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5k
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwog
fQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTENyZWRlbnRpYWwuY3BwCmluZGV4IGU3NTk0NmIyODQyNS4uYTUzMWQxMDY5OTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcsMTMg
KzM3LDEzIEBAIFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkKICAgICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50
aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsK
IH0KIAogV2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFs
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsK
IH0KIAogV2ViVVJMQ3JlZGVudGlhbCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNw
YWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5j
cHAKaW5kZXggMTllZDk2ZjgyMTBkLi4zMWIwOWFjNGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEz
IEBAIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwCiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShwcm90
ZWN0aW9uU3BhY2UpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNl
Ojp+V2ViVVJMUHJvdGVjdGlvblNwYWNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBX
ZWJVUkxQcm90ZWN0aW9uU3BhY2UqIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE1
YjIzZGJmYTU0OS4uNjEyMjk2Y2I1NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMUmVzcG9uc2UuY3BwCkBAIC0yMTUsMjAgKzIxNSwyMCBAQCBzdGF0aWMgU3RyaW5nIGxvY2Fs
aXplZFNob3J0RGVzY3JpcHRpb25Gb3JTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogV2ViVVJM
UmVzcG9uc2U6OldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2U6On5XZWJV
UkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNwb25z
ZTo6Y3JlYXRlSW5zdGFuY2UoKQogewogICAgIFdlYlVSTFJlc3BvbnNlKiBpbnN0YW5jZSA9IG5l
dyBXZWJVUkxSZXNwb25zZSgpOwogICAgIC8vIGZha2UgYW4gaHR0cCByZXNwb25zZSAtIHNvIGl0
IGhhcyB0aGUgSVdlYkhUVFBVUkxSZXNwb25zZSBpbnRlcmZhY2UKLSAgICBpbnN0YW5jZS0+bV9y
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJp
bmcoKSwgMCwgU3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VS
ZXNwb25zZShXVEY6OlVSTCgiaHR0cDovLyJfcyksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAg
ICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmlu
ZGV4IDQ4MTIzODQ3MTNjOC4uZWRmMzM1ODZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm46OldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsK
IH0KIAogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
KCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0Li5lNTVhMjQy
ZGNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcg
QEAgV2ViVmlldzo6V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3KCkK
QEAgLTQ2OSw3ICs0NjksNyBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291
bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVmlldyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7CiB9
CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5OTUs
MTEgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLyps
UGFyYW0qLykKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpOwogICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAg
ICAgY2FzZSBTZWxlY3RBbGw6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVu
ZG86Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4
ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRv
Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBm
cmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0
dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3Ojpo
YW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAo
ZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgp
ICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlF
dmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBX
ZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lk
ZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0
b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmNvcHkoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7
CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb21tYW5kKCJDb3B5Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAK
QEAgLTQ3MzQsNyArNDczNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElVbmtu
b3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4
ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpwYXN0ZShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUi
KS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVy
biBTX09LOwogfQogCkBAIC00NzUyLDcgKzQ3NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHlV
UkwoX0luXyBCU1RSIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIp
OworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1wdHlT
dHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6ZGVsZXRlXyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAg
ICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9j
dXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVs
ZXRlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3Jr
ZXJzUHJpdmF0ZS5jcHAKaW5kZXggMDQ1MThmYWQxYTc2Li4yZTkzMWUwOGU3NzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKQEAgLTkwLDExICs5
MCwxMSBAQCBXZWJXb3JrZXJzUHJpdmF0ZSogV2ViV29ya2Vyc1ByaXZhdGU6OmNyZWF0ZUluc3Rh
bmNlKCkKIFdlYldvcmtlcnNQcml2YXRlOjpXZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9
CiAKIFdlYldvcmtlcnNQcml2YXRlOjp+V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiX3Mp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJl
YWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFz
ay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsx
MTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBB
U1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9F
USgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAg
IEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0w
Il9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikp
OworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0w
Il9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwot
ICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikp
OwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50
KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMp
CiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwx
MiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhp
cyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0
aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAg
ICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0y
LTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykp
OworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3Rh
bERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5m
YTkzZGM0OGQxOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNU
KEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3Qg
Y2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8g
bWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsK
QEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsK
IH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xh
c3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBw
SW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQg
aXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJh
bCBqcyA9IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxl
cnQgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNlIFJl
c3BvbnNlVHlwZTo6U3ludGhldGljOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShu
ZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4n
XSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBS
ZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8
L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4cGVj
dGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRj
aGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRt
bCcpKSB9KTsiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZl
ciI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
fX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQo
J2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsg
Ii9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXIn
KTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKQEAgLTM2OSwxMyArMzY5LDEzIEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlw
bGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYu
YWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgo
ZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhwZWN0
ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+
YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIv
Il9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAg
ICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBz
ZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CkBAIC00NTIsMTIgKzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRl
VGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNlcnZl
clBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5l
dyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0Pidd
LCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQu
cmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRo
ZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJf
czsKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsK
LSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAg
ICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAgICAg
IHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRp
YyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogCiAg
ICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAg
ICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwg
eyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0K
KyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAi
L3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH19LCBqcyB9IH0KICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwogCiAg
ICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKQEAg
LTU1OCw3ICs1NTgsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5U
ZXN0Tm9uQXBwSW5pdGlhdGVkKQogCiAjaWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29uc3Qg
Y2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29u
c3RleHByIGF1dG8gbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8c2Ny
aXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAgICAg
bG9nKCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1
ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0RlZmF1
bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScs
IGFzeW5jIChldmVudCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAgICAg
ZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2MjAs
NyBAQCBhc3luYyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2
ZVNlbnRJbml0aWFsTWVzc2FnZSkKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBh
cHAgaW5pdGlhdGVkJyk7CiB9CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiAK
IHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRFU1Qo
QXBwUHJpdmFjeVJlcG9ydCwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcElu
aXRpYXRlZFZhbHVlKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRl
bGVnYXRlLmdldCgpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewot
ICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCi0g
ICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9t
YWluLmh0bWwiX3MsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAgLy8g
TG9hZCBXZWJWaWV3IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhl
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlv
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50
YXRpb24ubW0KaW5kZXggY2RiOTEwNGFlYjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRh
dGlvbi5tbQpAQCAtMzE3LDcgKzMxNyw3IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZpcmVP
cmllbnRhdGlvbkV2ZW50c1JpZ2h0QXdheUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAgICAg
RVhQRUNUX1dLX1NUUkVRKEAicmVjZWl2ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgp
WzFdKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogPHNj
cmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0aW9u
IHJlcXVlc3RQZXJtaXNzaW9uKCkgewogfQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0UiOwor
KVRFU1RSRVNPVVJDRSJfczsKIAogVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lvblNl
Y3VyZUNvbnRleHRDaGVjaykKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBt
YWluQnl0ZXMgfSB9CiAgICAgfSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9u
LmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdOwpAQCAtMzk1LDIzICszOTUsMjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJlcXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24KIH0K
IEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRt
bD48Ym9keT4KIDxpZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBhbGxv
dz0nYWNjZWxlcm9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRwczov
LzEyNy4wLjAuMTo5MDkxO21hZ25ldG9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48L2lm
cmFtZT4KIDwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBm
cmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKKylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9odG1s
PgotKURPQ0RPQ0RPQyI7CispRE9DRE9DRE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNlT3Jp
ZW50YXRpb25QZXJtaXNzaW9uSW5JRnJhbWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAgICAg
ICAgeyAiLyJfcywgeyBtYWluRnJhbWVUZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAKICAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJhbWUi
LCB7IGZyYW1lVGV4dCB9IH0sCisgICAgICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQgfSB9
LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVs
bHB0ciwgbnVsbHB0ciwgOTA5MSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCmluZGV4IDg1ZjdkODlkYmQ4MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVw
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSSIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigi
Y29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7Cisg
ICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdElkZW50aWZpZXIiX3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1
LDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9s
bGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWlu
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAt
ODUwLDkgKzg1MCw5IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMn
KS50aGVuKGZ1bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylT
V1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVz
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwx
NSArODc1LDE1IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50
aGVuKGZ1bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAK
IHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50
LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRh
dGEpOwogfSk7CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBA
IC04OTksOCArODk5LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFp
bkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9
IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0
bWwiX3MsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVz
IH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURh
dGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlz
RG9uZSA9IGZhbHNlOwogICAgIAogICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9h
ZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3Nh
Z2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBw
LWJvdW5kIGRvbWFpbiI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3Jr
ZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFp
biJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhv
c3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogICAgIGlzRG9uZSA9IGZhbHNlOwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIs
IHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OwpAQCAtOTY3LDcgKzk2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
ICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0
aW9uIHN1Y2Nlc3MiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNj
ZXNzIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2Fs
aG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYi4u
NWJjZWE4MTA5M2NmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgzMTcs
OCArODMxNyw4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29wUHJv
Y2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAot
ICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4
dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIg
fSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0g
fSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJz
YW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Q
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVTVChQ
cm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2FwKQog
ICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2
ZXIxKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAgIHsg
Ii9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMpOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9
LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJf
cywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNh
bWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHApOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KaW5kZXggMzNjOGRiYzViNzFlLi5mZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KQEAgLTI0MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVudGlj
YXRpb25QYW5lbCwgRGVsZXRlT25lQ3JlZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgUmVjb3ZlckFmdGVyQXV0aE5Qcm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9Cisg
ICAgICAgIHsgIi8iX3MsIHsgIkZPTyJfcyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNvbmZp
Z3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0
aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29u
ZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9Q
cmVmZXJyZWRDb250ZW50TW9kZS5tbQppbmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZhYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0K
QEAgLTE2OSw3ICsxNjksNyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVn
YXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAi
VGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitS
ZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9k
ZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6
ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChk
ZWZhdWx0Q29udGVudE1vZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFz
cz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmln
YXRpb24KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRh
aW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
Pj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9u
YWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWlu
UHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpA
QCAtMzcyLDcgKzM3Miw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVk
Q29udGVudE1vZGVBdFZhcmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNl
U3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3
Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZl
Q29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxl
cjpuaWxdOwogICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5T
dHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07
CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNh
dGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1h
bnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVm
YXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1
RTE0OCJfcyB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJB
Z2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVF
KFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvbWFpbi5jcHAKaW5kZXggMTIwNGNiNTI4YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAorKysgYi9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQg
dGVzdFN1bW1hcnlQcm92aWRlcnMoKQogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwg
dWludDhfdD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44Qml0
U3RyaW5nLCAyNTUgfTsKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIGJvb2w+IGV4
YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlU2ltcGxlQm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRydWUg
fTsKICAgICAKLSAgICBVUkwgYVVSTCh7IH0sICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIpOwor
ICAgIFVSTCBhVVJMKCJodHRwczovL3d3dy5leGFtcGxlLmNvbSJfcyk7CiAKICAgICBicmVha0Zv
clRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="484797"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456490</attachid>
            <date>2022-04-02 19:10:35 -0700</date>
            <delta_ts>2022-04-02 19:44:40 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>259629</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4ZTU2
NzgyNDIzMS4uM2I3YTc1ZGM3OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwi
OworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5k
YXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCmluZGV4IDMzMDEwOGM2NmRhYS4uYjFmNGM2NDdhNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
QEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3Vj
Y2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRv
IHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5
ZDBjZjYwZS4uYmNiNjc1MWVkYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFy
dGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBt
X2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9hbmltYXRpb25TdGFydFRpbWUpOwogCiAgICAg
bV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50
ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25t
ZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsK
ICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUo
Jm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgw
MjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0g
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmly
ZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlv
bnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJ
bmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwg
ImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAg
ICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFz
dGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFj
Ny4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2lj
UGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5
KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVy
biAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9u
ZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsK
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5
ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7Cisg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0Ny4uYWU0MzllMzBmMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikK
IAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKLSAgICB0ZXh0
LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgbmFtZSgp
LCBjb250ZXh0KCkpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTgiX3MsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQog
ewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHVybC51cmwuc3RyaW5nKCkp
OworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdXJsLnVybC5zdHJpbmco
KSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRU
eXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAg
ICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7CisgICAgd3Jp
dGVTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdGV4dCk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGxhdGZvcm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcAppbmRleCBhMzRkYzIyMGJiYjkuLjg0
MzIzMWQzYjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTc3MywxMDEgKzc3
MywxMDEgQEAgU3RyaW5nIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvcldQ
RUtleUNvZGUodW5zaWduZWQga2V5Q29kZSkKICAgICBjYXNlIFdQRV9LRVlfTWVudToKICAgICBj
YXNlIFdQRV9LRVlfQWx0X0w6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9SOgotICAgICAgICByZXR1
cm4gIkFsdCI7CisgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9DbGVh
cjoKLSAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Rvd246Ci0gICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgIHJl
dHVybiAiRG93biJfczsKICAgICAgICAgLy8gIkVuZCIKICAgICBjYXNlIFdQRV9LRVlfRW5kOgot
ICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAv
LyAiRW50ZXIiCiAgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKICAgICBjYXNlIFdQRV9LRVlf
S1BfRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKLSAgICAgICAgcmV0dXJuICJFbnRl
ciI7CisgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0V4ZWN1dGU6
Ci0gICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE6Ci0gICAgICAgIHJldHVybiAiRjEiOworICAgICAgICByZXR1
cm4gIkYxIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjoKLSAgICAgICAgcmV0dXJuICJGMiI7Cisg
ICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YzOgotICAgICAgICByZXR1
cm4gIkYzIjsKKyAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjQ6Ci0g
ICAgICAgIHJldHVybiAiRjQiOworICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9GNToKLSAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgIHJldHVybiAiRjUiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Y2OgotICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgcmV0dXJu
ICJGNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjc6Ci0gICAgICAgIHJldHVybiAiRjciOworICAg
ICAgICByZXR1cm4gIkY3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GODoKLSAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y5OgotICAg
ICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjEwOgotICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICAgIHJldHVybiAiRjEwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMTE6Ci0gICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgcmV0
dXJuICJGMTEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMjoKLSAgICAgICAgcmV0dXJuICJGMTIi
OworICAgICAgICByZXR1cm4gIkYxMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjEzOgotICAgICAg
ICByZXR1cm4gIkYxMyI7CisgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMTQ6Ci0gICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0YxNToKLSAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICByZXR1
cm4gIkYxNSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE2OgotICAgICAgICByZXR1cm4gIkYxNiI7
CisgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTc6Ci0gICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxODoKLSAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICByZXR1cm4gIkYxOCJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjE5OgotICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgIHJldHVy
biAiRjE5Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjA6Ci0gICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMToKLSAgICAgICAg
cmV0dXJuICJGMjEiOworICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjIyOgotICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMjM6Ci0gICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgcmV0dXJu
ICJGMjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyNDoKLSAgICAgICAgcmV0dXJuICJGMjQiOwor
ICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICBjYXNlIFdQRV9LRVlfSGVscDoKLSAgICAgICAg
cmV0dXJuICJIZWxwIjsKKyAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9Ib21lOgotICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICByZXR1cm4gIkhvbWUiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0luc2VydDoKLSAgICAgICAgcmV0dXJuICJJbnNlcnQiOworICAg
ICAgICByZXR1cm4gIkluc2VydCJfczsKICAgICBjYXNlIFdQRV9LRVlfTGVmdDoKLSAgICAgICAg
cmV0dXJuICJMZWZ0IjsKKyAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgIGNhc2UgV1BFX0tF
WV9QYWdlX0Rvd246Ci0gICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIl9zOwogICAgIGNhc2UgV1BFX0tFWV9QYWdlX1VwOgotICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Q
YXVzZToKLSAgICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgIHJldHVybiAiUGF1c2UiX3M7
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfUHJpbnRTY3JlZW46CiAgICAgY2FzZSBXUEVfS0VZX1By
aW50OgotICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiJfczsKICAgICBjYXNlIFdQRV9LRVlfUmlnaHQ6Ci0gICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9TZWxlY3Q6
Ci0gICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgcmV0dXJuICJTZWxlY3QiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX1VwOgotICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgcmV0dXJu
ICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KICAgICBjYXNlIFdQRV9LRVlfRGVsZXRlOgotICAgICAgICByZXR1cm4gIlUrMDA3RiI7Cisg
ICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Ci0g
ICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAgICAgICAgcmV0dXJuICJVKzAwMDgiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0lTT19MZWZ0X1RhYjoKICAgICBjYXNlIFdQRV9LRVlfMzI3MF9CYWNrVGFi
OgogICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIHJldHVybiAiVSswMDA5IjsKKyAgICAg
ICAgcmV0dXJuICJVKzAwMDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdm
MzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29u
dGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBy
bwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9
IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJf
czsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBl
ICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBD
b250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNv
ZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250
YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2Ug
aWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1l
ID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykg
eyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZTE0M2NkNGY0
YTVlLi5iNDIzNzlmMzNiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBN
SU1FSGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQog
ewogICAgIGF1dG8gbWltZUhlYWRlciA9IGFkb3B0UmVmKCpuZXcgTUlNRUhlYWRlcik7CiAgICAg
S2V5VmFsdWVNYXAga2V5VmFsdWVQYWlycyA9IHJldHJpZXZlS2V5VmFsdWVQYWlycyhidWZmZXIp
OwotICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUiKTsKKyAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0
b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10
eXBlIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJz
LmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSwgY2hhcnNldCwgbXVsdGlwYXJ0
VHlwZSwgZW5kT2ZQYXJ0Qm91bmRhcnk7CiAgICAgICAgIGlmIChhdXRvIHBhcnNlZENvbnRlbnRU
eXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52
YWx1ZSkpIHsKICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPm1p
bWVUeXBlKCk7CiAgICAgICAgICAgICBjaGFyc2V0ID0gcGFyc2VkQ29udGVudFR5cGUtPmNoYXJz
ZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIG11bHRpcGFydFR5cGUgPSBwYXJz
ZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIik7Ci0gICAgICAgICAg
ICBlbmRPZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZv
ck5hbWUoImJvdW5kYXJ5Iik7CisgICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29u
dGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSJfcyk7CisgICAgICAgICAgICBl
bmRPZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5h
bWUoImJvdW5kYXJ5Il9zKTsKICAgICAgICAgfQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRl
bnRUeXBlID0gY29udGVudFR5cGU7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBh
cnQoKSkKQEAgLTEwOSwxMSArMTA5LDExIEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVy
OjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmlu
ZCgiY29udGVudC10cmFuc2Zlci1lbmNvZGluZyIpOworICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0
b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciX3MpOwog
ICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpCiAg
ICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFRyYW5zZmVyRW5jb2RpbmcgPSBwYXJzZUNvbnRl
bnRUcmFuc2ZlckVuY29kaW5nKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKIAotICAg
IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtbG9j
YXRpb24iKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5k
KCJjb250ZW50LWxvY2F0aW9uIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAh
PSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRMb2Nh
dGlvbiA9IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXgg
NTE2OTA0NWM3MDVmLi4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAy
LDE1IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0
cmluZ1JlZiBkb21haW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7
CiAgICAgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVy
cm9yRG9tYWluQ29jb2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0g
IkNGVVJMRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWlu
Il9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAg
ICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9t
YWluT1NTdGF0dXMpCi0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNl
IGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9
ICJrQ0ZFcnJvckRvbWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRv
bWFpbldpblNvY2siX3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApA
QCAtMTkwLDEzICsxOTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVh
bUVycm9yIGVycm9yKQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NG
U3RyZWFtRXJyb3JEb21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJv
ckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAg
ICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFt
RXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9z
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRl
eCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZp
bGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1Jl
cEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0
ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0g
bV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkg
eworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmlj
ZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2Uu
dmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJl
cXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKaW5kZXggZTBlZWY2ODgwZjJiLi4wNzFiYjFhNDdiZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNh
dGVJbmZvQ3VybC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmlj
YXRlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6
dmVyaWZpY2F0aW9uRXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlf
dmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVy
biBTdHJpbmcgeyBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVy
cm9yKSB9OwogfQogCiBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5m
bzo6bWFrZUNlcnRpZmljYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcAppbmRleCA2MTM2NTMxYjViMWMuLjZiMTZmYzM0ZGU3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODIs
NyArMzgyLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNl
YXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LAogCiAgICAgU3RyaW5nIHJlcXVlc3RQ
YXRoID0gcmVxdWVzdFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocmVxdWVzdFBhdGgu
aXNFbXB0eSgpKQotICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIjsKKyAgICAgICAgcmVxdWVzdFBh
dGggPSAiLyJfczsKIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsg
cmVxdWVzdFVybCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKaW5kZXggNmQzNDY4ZTQyMjI1Li4wNGU2NGNkMmM3YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGls
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRp
bC5jcHAKQEAgLTE4NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25z
dCBVUkwmIHVybCkKIAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwog
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAg
IHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNo
UG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3Np
dGlvbikKLSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAg
cmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCmluZGV4IDdiNDY4NTVhMDUxNS4uYTdhMTUyN2M4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAg
LTYxLDEwICs2MSwxMCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3Ry
aW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFz
ZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCht
X2Jhc2VuYW1lKTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAg
IG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZp
bGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1lKTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQo
Ii5jb250ZW50Iik7CisgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7
CiB9CiAKIEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAh
PSBlbmQpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAg
aGVhZGVyRmllbGQuYXBwZW5kKCI6ICIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjog
Il9zKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhl
YWRlckZpZWxkLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJf
cyk7CiAgICAgICAgIENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRp
bjEoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVy
RmllbGRMYXRpbjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAg
IG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggM2JkMmNjNzQyODZlLi43MDJjNWIzMWEwMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpz
ZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIik7CisgICAgbV9jYWNoZURpci5hcHBlbmQo
Ii8iX3MpOwogCiAgICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpAQCAt
MTM4LDggKzEzOCw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBp
ZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBh
dGgobV9jYWNoZURpcik7Ci0gICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwor
ICAgIGF1dG8gaW5kZXhGaWxlUGF0aCA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgImluZGV4LmRh
dCJfcyk7CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCmluZGV4IDcyOGNiODhiZmIwNS4uM2U1ZDZmMWM5MGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQy
OSwyNiArNDI5LDIzIEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1
ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBTdHJpbmcgaGVhZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhh
dCB0aGlzIGhlYWRlciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQo
IjsiKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQo
dmFsdWUpOworICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsK
ICAgICB9CiAKLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVx
dWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92
ZVJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRl
ciB3aXRoIG5vIGNvbnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRp
c2FibGVkLiAKLSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoi
KTsKLQotICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9
IG1ha2VTdHJpbmcobmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUo
aGVhZGVyKSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi5iMDkyNTZiMTk4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6Ondp
bGxTZW5kUmVxdWVzdCgpCiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlm
IChzaG91bGRSZWRpcmVjdEFzR0VUKG5ld1JlcXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAg
ICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNl
dEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAppbmRleCAyYmFmOTQyZGJjOTYuLjdlYjA4NzBkNzk3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01
NTksNyArNTU5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBQVVQoKQogICAgIG1fY3VybEhh
bmRsZS0+ZW5hYmxlSHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8vIERpc2FibGUgdGhlIEV4cGVj
dDogMTAwIGNvbnRpbnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhl
YWRlcigiRXhwZWN0Iik7CisgICAgbV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJF
eHBlY3QiX3MpOwogCiAgICAgYXV0byBlbGVtZW50U2l6ZSA9IG1fZm9ybURhdGFTdHJlYW0uZWxl
bWVudFNpemUoKTsKICAgICBpZiAoIWVsZW1lbnRTaXplKQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OnNldHVwU2VuZERhdGEoYm9vbCBmb3JQdXRNZXRob2QpCiB7CiAgICAg
Ly8gY3VybCBndWVzc2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMg
d2Ugc3BlY2lmeSB0aGUgaGVhZGVyCiAgICAgaWYgKG1fZm9ybURhdGFTdHJlYW0uc2hvdWxkVXNl
Q2h1bmtUcmFuc2ZlcigpKQotICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFk
ZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+
YXBwZW5kUmVxdWVzdEhlYWRlcigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiX3MpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAoZm9yUHV0TWV0aG9kKQogICAgICAgICAgICAgbV9jdXJsSGFu
ZGxlLT5zZXRJbkZpbGVTaXplTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3JtRGF0
YVN0cmVhbS50b3RhbFNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKaW5kZXggMzg5N2UwMWM2ZDA3Li5iM2FiOGQxY2I2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVl
c3QsIEN1CiAgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNo
ZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAg
IGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAg
ICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNl
MDczNS4uNGY4OWQ5NzNlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CkBAIC00MywxMyArNDMsMTMgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0Q29va2llSmFyUGF0aCgp
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRGaWxlTmFtZSA9ICJjb29raWUuamFyLmRi
IjsKICAgICBjaGFyKiBjb29raWVKYXJQYXRoID0gZ2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFU
SCIpOwogICAgIGlmIChjb29raWVKYXJQYXRoKQotICAgICAgICByZXR1cm4gY29va2llSmFyUGF0
aDsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llSmFyUGF0aCk7CiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
ZGVmYXVsdEZpbGVOYW1lKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI0MTcKLSAgICByZXR1cm4gZGVmYXVsdEZpbGVOYW1l
OworICAgIHJldHVybiBTdHJpbmcgeyBkZWZhdWx0RmlsZU5hbWUgfTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAKaW5kZXggMzYxNTA5ZDc0ZGM5Li5kMzliNjViNDQwZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAK
QEAgLTM0MCwxMiArMzQwLDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVT
dW1tYXJ5PiBjcmVhdGVTdW1tYXJ5SW5mbyhjb25zdCBWZWN0b3I8dWludDhfCiAKIFN0cmluZyB0
bHNWZXJzaW9uKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfZ2V0X3ZlcnNpb24o
c3NsKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgU1NMX2dldF92ZXJzaW9uKHNzbCkgfTsKIH0KIAog
U3RyaW5nIHRsc0NpcGhlck5hbWUoY29uc3QgU1NMKiBzc2wpCiB7Ci0gICAgcmV0dXJuIFNTTF9D
SVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKTsKKyAgICByZXR1cm4g
U3RyaW5nIHsgU1NMX0NJUEhFUl9nZXRfbmFtZShTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNzbCkp
IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAppbmRleCBiNzlhNDczMTVlYzguLmY5YjAwZTE4
NDUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1
YmxpY1N1ZmZpeEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5n
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5JbnRlcm5hbChjb25zdCBwc2xfY3R4X3QqIHBz
bCwgY29uc3QgYwogewogICAgIC8vIHBzbF9yZWdpc3RlcmFibGVfZG9tYWluIHJldHVybnMgYSBw
b2ludGVyIHRvIGRvbWFpbidzIGRhdGEgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBwcml2YXRlIGRv
bWFpbgogICAgIGlmIChjb25zdCBjaGFyKiB0b3BQcml2YXRlRG9tYWluID0gcHNsX3JlZ2lzdHJh
YmxlX2RvbWFpbihwc2wsIGRvbWFpbikpCi0gICAgICAgIHJldHVybiB0b3BQcml2YXRlRG9tYWlu
OworICAgICAgICByZXR1cm4gU3RyaW5nIHsgdG9wUHJpdmF0ZURvbWFpbiB9OwogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggZDFkN2I2NmVhYTc4Li4xNDVmZjY4ZDU4ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlRXJyb3IuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgY3VybEVycm9yRG9tYWluOworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWwgY3VybEVycm9yRG9tYWluOwogCiAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnMgeyAwIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlRXJyb3JDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKaW5kZXggOWUzZTE1NjFiNTI5Li45OWQwNmEyN2EwMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlRXJyb3JDdXJsLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IFJlc291cmNlRXJyb3I6OmN1cmxFcnJvckRvbWFp
biA9ICJDdXJsRXJyb3JEb21haW4iOworQVNDSUlMaXRlcmFsIFJlc291cmNlRXJyb3I6OmN1cmxF
cnJvckRvbWFpbiA9ICJDdXJsRXJyb3JEb21haW4iX3M7CiAKIFJlc291cmNlRXJyb3IgUmVzb3Vy
Y2VFcnJvcjo6aHR0cEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
VHlwZSB0eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA5ZWRiZDJlODFhN2YuLmRl
YTBkYWM0YmQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0
VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBj
cm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdS
ZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRU
UENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5kZXggM2Qx
YmQxMjQ5YjdkLi41YmY4ZDY4MDExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAt
ODksMTMgKzg5LDEzIEBAIFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoY29uc3Qg
Q3VybFJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIHN3aXRjaCAocmVzcG9uc2UuaHR0cFZlcnNp
b24pIHsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMDoKLSAgICAgICAgc2V0SFRUUFZl
cnNpb24oIkhUVFAvMS4wIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCJfcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOgotICAgICAg
ICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjEiKTsKKyAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhU
VFAvMS4xIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8y
XzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiKTsKKyAgICAgICAgc2V0SFRUUFZl
cnNpb24oIkhUVFAvMiJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZF
UlNJT05fTk9ORToKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmlu
ZGV4IDBmZTY1YTI5ZTYzNi4uYzIwZWM4ZTcyMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCIiKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0
eVN0cmluZygpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGZhYjU3NDIzM2ZlMC4uYThkMjM3MDY0OGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgQ29tcGxldGkKICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llU3RvcmFnZSgpKSk7CiAgICAgZm9yIChh
dXRvKiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVt
KSkgewogICAgICAgICBHVW5pcXVlUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxT
b3VwQ29va2llKj4oaXRlbS0+ZGF0YSkpOwotICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdl
dCgpKSkgPT0gZG9tYWluKSB7CisgICAgICAgIGlmIChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoU3RyaW5nIHsgc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUu
Z2V0KCkpIH0pID09IGRvbWFpbikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmlu
ZGV4IDJjZThhMDNmZGYwMi4uMzRhNTdlNWMyYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgaW50IHN0YXR1
c0NvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uUGhyYXNlKQogewotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBzdGF0dXND
b2RlLCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pIH0sIHN0
YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFzZSk7CiB9CiAKIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVy
cm9yKQpAQCAtNjEsMjIgKzYxLDIyIEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6YXV0
aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobWVz
c2FnZSk7CiAjaWYgVVNFKFNPVVAyKQotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtf
dG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBtZXNzYWdlLT5zdGF0dXNfY29kZSwK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X0hUVFBfRVJST1JfRE9NQUlOKSB9LCBtZXNzYWdlLT5zdGF0dXNfY29kZSwKICAgICAgICAgc291
cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiAjZWxzZQotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIHNvdXBfbWVzc2FnZV9n
ZXRfc3RhdHVzKG1lc3NhZ2UpLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7IGdf
cXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUikgfSwgc291cF9tZXNzYWdlX2dldF9z
dGF0dXMobWVzc2FnZSksCiAgICAgICAgIHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpLCBT
dHJpbmc6OmZyb21VVEY4KHNvdXBfbWVzc2FnZV9nZXRfcmVhc29uX3BocmFzZShtZXNzYWdlKSkp
OwogI2VuZGlmCiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJv
cihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIEdFcnJvciogZXJyb3IpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2Rl
LCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190
b19zdHJpbmcoR19UTFNfRVJST1IpLCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUsIGZhaWxp
bmdVUkwsIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOworICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhHX1RMU19FUlJPUikgfSwg
R19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1bmFjY2VwdGFibGVUTFND
ZXJ0aWZpY2F0ZSgpKTsKICAgICByZXNvdXJjZUVycm9yLnNldFRMU0Vycm9ycyh0bHNFcnJvcnMp
OwogICAgIHJlc291cmNlRXJyb3Iuc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpOwogICAgIHJl
dHVybiByZXNvdXJjZUVycm9yOwpAQCAtODgsOSArODgsOSBAQCBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiAgICAgLy8gbmV0
d29ya2luZyBlcnJvcnMgZnJvbSB0aGF0IGZpbGUgc2hvdWxkIGJlIG1vdmVkIGhlcmUuCiAKICAg
ICAvLyBVc2UgdGhlIHNhbWUgdmFsdWUgYXMgaW4gTlNVUkxFcnJvci5oCi0gICAgc3RhdGljIGNv
bnN0IGludCB0aW1lb3V0RXJyb3IgPSAtMTAwMTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciI7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3Qg
dGltZWQgb3V0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgdGltZW91dEVycm9yID0gLTEwMDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciJfczsKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVz
dCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOwogfQogCiB2b2lk
IFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJv
ciYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRleCA5YjdiNGIzMmQ3NTcuLjg4
OGRiN2Q4ZjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLCBjb25zdCBDU3RyaW5nJiBzbmlmCiAgICAgfQogCiAgICAgbV9odHRwU3RhdHVzQ29kZSA9
IHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKHNvdXBNZXNzYWdlKTsKLSAgICBzZXRIVFRQU3RhdHVz
VGV4dChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2Uoc291cE1lc3NhZ2UpKTsKKyAgICBz
ZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2Uo
c291cE1lc3NhZ2UpIH0pOwogCiAgICAgbV9jZXJ0aWZpY2F0ZSA9IHNvdXBfbWVzc2FnZV9nZXRf
dGxzX3BlZXJfY2VydGlmaWNhdGUoc291cE1lc3NhZ2UpOwogICAgIG1fdGxzRXJyb3JzID0gc291
cF9tZXNzYWdlX2dldF90bHNfcGVlcl9jZXJ0aWZpY2F0ZV9lcnJvcnMoc291cE1lc3NhZ2UpOwpA
QCAtNjYsOSArNjYsOSBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBN
ZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgogICAgIFN0cmluZyBjb250
ZW50VHlwZTsKICAgICBjb25zdCBjaGFyKiBvZmZpY2lhbFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19nZXRfb25lKHJlc3BvbnNlSGVhZGVycywgIkNvbnRlbnQtVHlwZSIpOwogICAgIGlmICgh
c25pZmZlZENvbnRlbnRUeXBlLmlzTnVsbCgpICYmIG1faHR0cFN0YXR1c0NvZGUgIT0gU09VUF9T
VEFUVVNfTk9UX01PRElGSUVEICYmIHNuaWZmZWRDb250ZW50VHlwZSAhPSBvZmZpY2lhbFR5cGUp
Ci0gICAgICAgIGNvbnRlbnRUeXBlID0gc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKTsKKyAgICAg
ICAgY29udGVudFR5cGUgPSBTdHJpbmcgeyBzbmlmZmVkQ29udGVudFR5cGUuZGF0YSgpIH07CiAg
ICAgZWxzZQotICAgICAgICBjb250ZW50VHlwZSA9IG9mZmljaWFsVHlwZTsKKyAgICAgICAgY29u
dGVudFR5cGUgPSBTdHJpbmcgeyBvZmZpY2lhbFR5cGUgfTsKICAgICBzZXRNaW1lVHlwZShleHRy
YWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgaWYgKG1fbWltZVR5
cGUuaXNFbXB0eSgpICYmIG1faHR0cFN0YXR1c0NvZGUgIT0gU09VUF9TVEFUVVNfTk9UX01PRElG
SUVEKQogICAgICAgICBzZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBh
dGgobV91cmwucGF0aCgpLnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IGFhMDBhNGFkNmY1Yi4uYTQ0ZTQzNmI2NWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAK
QEAgLTQzNCw4ICs0MzQsOCBAQCB2b2lkIExvY2FsZVdpbjo6aW5pdGlhbGl6ZUxvY2FsZURhdGEo
KQogICAgIFN0cmluZyBuZWdhdGl2ZVN1ZmZpeCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgc3dpdGNo
IChuZWdhdGl2ZUZvcm1hdCkgewogICAgIGNhc2UgTmVnYXRpdmVGb3JtYXRQYXJlbnRoZXNpczoK
LSAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCI7Ci0gICAgICAgIG5lZ2F0aXZlU3VmZml4ID0g
IikiOworICAgICAgICBuZWdhdGl2ZVByZWZpeCA9ICIoIl9zOworICAgICAgICBuZWdhdGl2ZVN1
ZmZpeCA9ICIpIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0U2ln
blNwYWNlUHJlZml4OgogICAgICAgICBuZWdhdGl2ZVByZWZpeCA9IG5lZ2F0aXZlU2lnbiArICIg
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4IGFh
ZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRpYyBTdHJpbmcga2V5
SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtleUNvZGUpCiB7CiAg
ICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToKLSAgICAgICAgICAg
IHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgICAgICBjYXNl
IFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAgICAg
cmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICAgICAg
cmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9zOwogICAgICAgICBj
YXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAgICAg
ICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJTjoKICAgICAgICAg
Y2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAgICAgICAgICAgcmV0
dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1cm4g
IkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAgICAgIGNhc2UgVktf
RE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAg
ICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAgIC8v
ICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAgICByZXR1cm4gIkVu
dGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAgIGNhc2UgVktfRVhF
Q1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgICAgICByZXR1cm4g
IkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjI6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICByZXR1cm4gIkY0IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktfRjU6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7CiAgICAgICAgIGNh
c2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6Ci0gICAgICAgICAg
ICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjki
X3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOworICAg
ICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEyOgotICAgICAgICAg
ICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgICAgIGNh
c2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAgcmV0dXJuICJGMTQi
OworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2UgVktfRjE1OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAgICAg
cmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAgIGNhc2UgVktfRjE4
OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0dXJuICJGMTgiX3M7
CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgotICAgICAgICAgICAg
cmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAgICAgcmV0dXJuICJG
MjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjIzOgotICAgICAg
ICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMiX3M7CiAgICAgICAg
IGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAgICAgICAgICAgcmV0
dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAgIGNhc2UgVktfSE9N
RToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICByZXR1cm4gIkhvbWUi
X3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQi
OworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNhc2UgVktfTEVGVDoK
LSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiX3M7
CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iOwor
ICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2FzZSBWS19QUklPUjoK
LSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZVVw
Il9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0dXJuICJQYXVzZSI7
CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNlIFZLX1NOQVBTSE9U
OgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgICAgICByZXR1cm4g
IlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgcmV0
dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgICAgICBjYXNl
IFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAgICAgICAgICAgIHJl
dHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAgICAgICAgICAgIHJl
dHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgICAgICBj
YXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1cm4g
IlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdG
LgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiAiVSswMDdGIjsK
KyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBlcihrZXlDb2RlKSwg
NCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6
ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIzNDMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNw
cApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxvYWRG
aWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9hZCI7
CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJldHVy
biAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXgg
YjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBAQCBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBz
dHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFwOwog
ICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGggaW5p
dGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFpbiIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwgInRl
eHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1s
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlvbi94
LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uvc3Zn
K3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJpbWFn
ZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3
bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCJf
cywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywgImFw
cGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJhcHBs
aWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiX3Ms
ICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRleHQv
aHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1sIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwreG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciX3Ms
ICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9zLCAi
aW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAiaW1h
Z2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdlL2pw
ZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCJf
cywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMi
X3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQogICAgIFN0cmluZyBy
ZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2ODVlZDk5MzY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAt
MjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBzdGF0aWMgdm9pZCBh
ZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29uc3Qg
Rk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxGb3Jt
YXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3JtYXQoKS0+Y2ZGb3Jt
YXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHJlc3Vs
dHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09IHBs
YWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4
dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iKTsK
KyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURh
dGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVz
U2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICAgICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmkt
bGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCIpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRU
eXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRPcmln
aW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQog
ewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgQ2xp
cGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUp
OwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCkBAIC0zNDEsNyAr
MzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0YU9iamVjdC5n
ZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAotICAgIHJldHVybiAi
IjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI1LDcgKzQyNSw3
IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1
cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRv
TWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAgIG1hcmt1cFRvQ0ZI
VE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBjZmh0bWxEYXRhKTsK
ICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEpOwog
ICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRtbEZv
cm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVt
LmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxU
b0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQogICAg
IFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJSSgp
KTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1BhdGgg
PSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIiwgdHJ1
ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJs
LCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5nKCJb
SW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJpbmcg
Y29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwp
CiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFibGUg
dG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYgKDo6
T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAg
ICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxl
KSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0ZWJv
YXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAgICAgICAgSEdMT0JB
TCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6U2V0Q2xp
cGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAgICAgOjpH
bG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ks
IHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAmJiA6
Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEgPSA6
OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTggb3IgZXZlbiBXaW5k
b3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAgICAgICAgICAgdGV4
dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSk7CisgICAgICAg
ICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayhj
YkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAg
ICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTAsNyArOTUw
LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxGcmVlKG1lbU9iaik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwgMCk7
CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRoID0gZmlsZVN5c3Rl
bVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24sIGZhbHNl
KTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5Niw3ICsxMDk2LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAo
Y29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgbWFy
a3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9DRkhUTUwobWFya3Vw
LCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRpdW0geyB9OwogICAg
IG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNiZTJkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4NSwy
NSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdpbmRv
d3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9zOwog
ICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiOwor
ICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3MzXzE6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRvd3Mg
My4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6Ci0g
ICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5OCJf
czsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBXaW4g
OXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7CiAg
ICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAgICAg
cmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05UMykg
PyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFtZSAr
IFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9CiAK
IHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdPUkQg
cHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9rZW5G
b3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7IFdP
VzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNo
aXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICByZXR1
cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwogICAg
IGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lB
NjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAiOyBX
aW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCmlu
ZGV4IGNmYmZkNTRiNjI5YS4uNWQ3NTQ4OTc2YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmgKQEAgLTQ3LDE3
ICs0NywxNyBAQCBjb25zdGV4cHIgc3RkOjphcnJheTxPcGVuWFJCdXR0b25UeXBlLCA3PiBvcGVu
WFJCdXR0b25UeXBlcyB7CiBpbmxpbmUgU3RyaW5nIGJ1dHRvblR5cGVUb1N0cmluZyhPcGVuWFJC
dXR0b25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpUcmlnZ2VyOiByZXR1cm4gInRyaWdnZXIiOwotICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6U3F1ZWV6ZTogcmV0dXJuICJzcXVlZXplIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRv
blR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRv
blR5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7Ci0gICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpUaHVtYnJlc3Q6IHJldHVybiAidGh1bWJyZXN0IjsKLSAgICBjYXNlIE9wZW5Y
UkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSI7Ci0gICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpCdXR0b25COiByZXR1cm4gImJ1dHRvbmIiOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIl9zOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6U3F1ZWV6ZTogcmV0dXJuICJzcXVlZXplIl9zOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siX3M7CisgICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnJlc3Q6IHJldHVybiAidGh1bWJyZXN0Il9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQTogcmV0dXJuICJidXR0b25hIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIl9zOwogCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogfQogCkBAIC04MCwxMSAr
ODAsMTEgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQXhpc1R5cGUsIDI+IG9wZW5YUkF4
aXNUeXBlcyB7CiBpbmxpbmUgU3RyaW5nIGF4aXNUeXBldG9TdHJpbmcoT3BlblhSQXhpc1R5cGUg
dHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpU
b3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VGh1
bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIjsKKyAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpU
b3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCJfczsKKyAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpU
aHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL29wZW54ci9PcGVuWFJVdGlscy5oCmluZGV4IDllY2M0OGE2YTZmMC4uNTYzNzJiYjM1NmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRp
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMu
aApAQCAtMTI3LDEyICsxMjcsMTIgQEAgaW5saW5lIFN0cmluZyBoYW5kZW5lc3NUb1N0cmluZyhY
UkhhbmRlZG5lc3MgaGFuZGVuZXNzKQogewogICAgIHN3aXRjaCAoaGFuZGVuZXNzKSB7CiAgICAg
Y2FzZSBYUkhhbmRlZG5lc3M6OkxlZnQ6Ci0gICAgICAgIHJldHVybiAibGVmdCI7CisgICAgICAg
IHJldHVybiAibGVmdCJfczsKICAgICBjYXNlIFhSSGFuZGVkbmVzczo6UmlnaHQ6Ci0gICAgICAg
IHJldHVybiAicmlnaHQiOworICAgICAgICByZXR1cm4gInJpZ2h0Il9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGE5MDkwZjdlYTFhMy4uMGNmNDI0ODI5ZDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnRlcm5h
bHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldE91dHNp
ZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKLSAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0
UGFzc3dvcmQoIiIpOworICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5z
ZXRQYXNzd29yZChlbXB0eVN0cmluZygpKTsKICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyOjpzZXRD
bGllbnRGb3JUZXN0aW5nKG51bGxwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCmluZGV4IDUyZTI3Njc2M2NhMy4uODM1OTY5YmZhMzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5k
UmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JD
bwogICAgIGlmICghZXJyb3JPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJy
b3IgPSBlcnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSIpOworICAgIGF1dG8gZXJyb3IgPSBl
cnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSJfcyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3Ry
aW5nKCJtZXNzYWdlIik7CisgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0
U3RyaW5nKCJtZXNzYWdlIl9zKTsKICAgICBpZiAoIWVycm9yTWVzc2FnZSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCAwNTI0NmJhYTYzYzUuLmQ3MWY0ZDEwNTdlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1Nlc3Npb24uY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBTZXNzaW9uOjpoYW5k
bGVVc2VyUHJvbXB0cyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gaXNT
aG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29s
ZWFuKCJyZXN1bHQiKTsKKyAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0g
cmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCJfcyk7CiAgICAgICAg
IGlmICghaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZykgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVu
a25vd25FcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU5LDEzICszNTksMTMgQEAg
dm9pZCBTZXNzaW9uOjpnZXRDdXJyZW50VVJMKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCIpOworICAgICAgICAgICAgYXV0byBicm93
c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0
Il9zKTsKICAgICAgICAgICAgIGlmICghYnJvd3NpbmdDb250ZXh0KSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpF
cnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0
cmluZygidXJsIik7CisgICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0
U3RyaW5nKCJ1cmwiX3MpOwogICAgICAgICAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVy
cm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODU1
LDE0ICs4NTUsMTQgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3QKICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUo
KSk7CiAgICAgICAgIGlmICh4ICYmIHkpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93T3JpZ2lu
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0
RG91YmxlKCJ4IiwgeC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91
YmxlKCJ5IiwgeS52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91Ymxl
KCJ4Il9zLCB4LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUo
InkiX3MsIHkudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoIm9y
aWdpbiJfcywgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
d2lkdGggJiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd1NpemUgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0
aCIsIHdpZHRoLnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJo
ZWlnaHQiLCBoZWlnaHQudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3Vi
bGUoIndpZHRoIl9zLCB3aWR0aC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0Il9zLCBoZWlnaHQudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRPYmplY3QoInNpemUiX3MsIFdURk1vdmUod2luZG93U2l6ZSkpOwogICAgICAgICB9
CiAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInNldFdpbmRvd0ZyYW1lT2ZC
cm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vz
c2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTE3MTcs
MTIgKzE3MTcsMTIgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICBhdXRvIGFyZ3VtZW50
cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3Jl
YXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29u
c3QgY2hhciBpc0ZpbGVVcGxvYWRTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGlzRmlsZVVwbG9hZFNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAg
ICAgICAiICAgIGlmIChlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAm
JiBlbGVtZW50LnR5cGUgPT09ICdmaWxlJykiCiAgICAgICAgICIgICAgICAgIHJldHVybiB7ICdm
aWxlVXBsb2FkJzogdHJ1ZSwgJ211bHRpcGxlJzogZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ211bHRp
cGxlJykgfTsiCiAgICAgICAgICIgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiBmYWxzZSB9OyIK
LSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2lu
Z0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBA
IC0xODU1LDcgKzE4NTUsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgIGF1dG8gYXJn
dW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmlu
ZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRp
YyBjb25zdCBjaGFyIGlzRWRpdGFibGVTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGlzRWRpdGFibGVTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAg
ICAgICAgIiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCB8fCBlbGVtZW50LnJlYWRPbmx5KSIKICAg
ICAgICAgIiAgICAgICAgcmV0dXJuIGZhbHNlOyIKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgICAgICIgICAgICAgIHJldHVybiB0cnVlOyIKICAgICAg
ICAgIiAgICB9IgogICAgICAgICAiICAgIHJldHVybiBmYWxzZTsiCi0gICAgICAgICJ9IjsKKyAg
ICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9z
LCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMjE3MCw3ICsyMTcwLDcg
QEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgIGF1dG8gZmlsZVVwbG9hZFR5
cGUgPSBwYXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQocmVzdWx0LnJlc3VsdCgpKTsKICAg
ICAgICAgICAgIGlmICghZmlsZVVwbG9hZFR5cGUgfHwgY2FwYWJpbGl0aWVzKCkuc3RyaWN0Rmls
ZUludGVyYWN0YWJpbGl0eS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogbW92ZSB0aGlzIHRvIGFuIGF0b20uCi0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIgZm9jdXNTY3JpcHRbXSA9CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGZvY3VzU2NyaXB0ID0KICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvY3VzKGVs
ZW1lbnQpIHsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IGRvYyA9IGVsZW1lbnQub3du
ZXJEb2N1bWVudCB8fCBlbGVtZW50OyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgcHJl
dkFjdGl2ZUVsZW1lbnQgPSBkb2MuYWN0aXZlRWxlbWVudDsiCkBAIC0yMTg2LDcgKzIxODYsNyBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgICAgICAgICAiICAgICAgICBl
bGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGVsZW1lbnQudmFsdWUubGVuZ3RoLCBlbGVtZW50LnZh
bHVlLmxlbmd0aCk7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChlbGVtZW50Um9vdE5v
ZGUuYWN0aXZlRWxlbWVudCAhPT0gZWxlbWVudCkiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
ICAgIHRocm93IHtuYW1lOiAnRWxlbWVudE5vdEludGVyYWN0YWJsZScsIG1lc3NhZ2U6ICdFbGVt
ZW50IGlzIG5vdCBmb2N1c2FibGUuJ307IgotICAgICAgICAgICAgICAgICAgICAifSI7CisgICAg
ICAgICAgICAgICAgICAgICJ9Il9zOwogCiAgICAgICAgICAgICAgICAgYXV0byBhcmd1bWVudHMg
PSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwpAQCAtMjUw
NiwxMyArMjUwNiwxMyBAQCBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbHRBdXRvbWF0aW9u
Q29va2llKGNvbnN0IFNlc3Npb246OkNvb2tpZSYgY29va2llKQogICAgIGF1dG8gY29va2llT2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmlu
ZygibmFtZSJfcywgY29va2llLm5hbWUpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJ2
YWx1ZSJfcywgY29va2llLnZhbHVlKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0
aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIl9zKSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXRTdHJpbmcoImRvbWFpbiJfcywgY29va2llLmRvbWFpbi52YWx1ZV9vcihlbXB0
eVN0cmluZygpKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUiX3MsIGNv
b2tpZS5zZWN1cmUudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xl
YW4oImh0dHBPbmx5Il9zLCBjb29raWUuaHR0cE9ubHkudmFsdWVfb3IoZmFsc2UpKTsKICAgICBj
b29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlc3Npb24iX3MsICFjb29raWUuZXhwaXJ5KTsKICAg
ICBjb29raWVPYmplY3QtPnNldERvdWJsZSgiZXhwaXJlcyJfcywgY29va2llLmV4cGlyeS52YWx1
ZV9vcigwKSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29r
aWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiX3MpKTsKICAg
ICByZXR1cm4gY29va2llT2JqZWN0OwogfQogCkBAIC0yNjkxLDM4ICsyNjkxLDM4IEBAIFNlc3Np
b246OklucHV0U291cmNlU3RhdGUmIFNlc3Npb246OmlucHV0U291cmNlU3RhdGUoY29uc3QgU3Ry
aW5nJiBpZCkKICAgICByZXR1cm4gbV9pbnB1dFN0YXRlVGFibGUuZW5zdXJlKGlkLCBbXSB7IHJl
dHVybiBJbnB1dFNvdXJjZVN0YXRlKCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGlj
IGNvbnN0IGNoYXIqIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1
dFNvdXJjZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3Qg
SW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQogewogICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UudHlw
ZSkgewogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAi
TnVsbCI7CisgICAgICAgIHJldHVybiAiTnVsbCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpU
eXBlOjpQb2ludGVyOgogICAgICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnBvaW50ZXJUeXBlLnZh
bHVlX29yKFBvaW50ZXJUeXBlOjpNb3VzZSkpIHsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6
TW91c2U6Ci0gICAgICAgICAgICByZXR1cm4gIk1vdXNlIjsKKyAgICAgICAgICAgIHJldHVybiAi
TW91c2UiX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlRvdWNoOgotICAgICAgICAgICAg
cmV0dXJuICJUb3VjaCI7CisgICAgICAgICAgICByZXR1cm4gIlRvdWNoIl9zOwogICAgICAgICBj
YXNlIFBvaW50ZXJUeXBlOjpQZW46Ci0gICAgICAgICAgICByZXR1cm4gIlBlbiI7CisgICAgICAg
ICAgICByZXR1cm4gIlBlbiJfczsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNl
IElucHV0U291cmNlOjpUeXBlOjpLZXk6Ci0gICAgICAgIHJldHVybiAiS2V5Ym9hcmQiOworICAg
ICAgICByZXR1cm4gIktleWJvYXJkIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6Oldo
ZWVsOgotICAgICAgICByZXR1cm4gIldoZWVsIjsKKyAgICAgICAgcmV0dXJuICJXaGVlbCJfczsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIGNv
bnN0IGNoYXIqIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkK
K3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6
VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUG9pbnRlck9yaWdp
bjo6VHlwZTo6Vmlld3BvcnQ6Ci0gICAgICAgIHJldHVybiAiVmlld3BvcnQiOworICAgICAgICBy
ZXR1cm4gIlZpZXdwb3J0Il9zOwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6UG9pbnRl
cjoKLSAgICAgICAgcmV0dXJuICJQb2ludGVyIjsKKyAgICAgICAgcmV0dXJuICJQb2ludGVyIl9z
OwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6RWxlbWVudDoKLSAgICAgICAgcmV0dXJu
ICJFbGVtZW50IjsKKyAgICAgICAgcmV0dXJuICJFbGVtZW50Il9zOwogICAgIH0KICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAKaW5kZXggNWU0NDA2N2VmMGEyLi41OTE4NDcwYjg1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9X
ZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBpbnQgV2ViRHJpdmVyU2Vydmlj
ZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9T
RVJWRVIpCiAgICAgU3RyaW5nIHRhcmdldFN0cmluZzsKICAgICBpZiAoY29uc3QgY2hhciogdGFy
Z2V0RW52VmFyID0gZ2V0ZW52KCJXRUJEUklWRVJfVEFSR0VUX0FERFIiKSkKLSAgICAgICAgdGFy
Z2V0U3RyaW5nID0gdGFyZ2V0RW52VmFyOworICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcg
eyB0YXJnZXRFbnZWYXIgfTsKICNlbmRpZgogICAgIGZvciAoaW50IGkgPSAxIDsgaSA8IGFyZ2M7
ICsraSkgewogICAgICAgICBjb25zdCBjaGFyKiBhcmcgPSBhcmd2W2ldOwpAQCAtNzUsNyArNzUs
NyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAg
ICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAg
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0
U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2
W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC05Nyw3ICs5Nyw3
IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAg
ICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhcmdl
dFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyBh
cmd2W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDEsNyAr
NDQxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNP
Tjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuaHR0cHNVUkwt
PmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tz
UHJveHkiKSkgeworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1Byb3h5Il9zKSkgewogICAgICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUt
PmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzUHJveHkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0
KQogICAgICAgICAgICAgaWYgKCFwcm94eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGF1dG8gc29ja3NWZXJz
aW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7CisgICAgICAg
ICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tz
VmVyc2lvbiJfcyk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzVmVyc2lvblZhbHVlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcyLDMwIEBAIHZv
aWQgV2ViRHJpdmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYm
IGNhcGFiaWxpdGllc0xpc3QsIHN0CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dEJvb2xlYW4oInNldFdpbmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5zZXRXaW5kb3dSZWN0LnZh
bHVlX29yKHRydWUpKTsKICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yLnZhbHVlX29yKFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNz
QW5kTm90aWZ5KSkgewogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
RGlzbWlzczoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
dW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIik7CisgICAgICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9z
LCAiZGlzbWlzcyJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHQ6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNj
ZXB0Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Il9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NB
bmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Iik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFu
ZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
dW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6Oklnbm9yZToKLSAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiX3Mp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dp
dGNoIChjYXBhYmlsaXRpZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0
ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2Fk
U3RyYXRlZ3kiX3MsICJub25lIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIl9zKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgot
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCAibm9ybWFsIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiX3MpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoK
LSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRT
dHJhdGVneSJfcywgImVhZ2VyIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWNhcGFiaWxpdGll
cy5wcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGll
c1NvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwCmluZGV4IDBmNmM4NzgyMDA5NS4uMmI2NzEzNDlkMzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCB2
b2lkIENhcGFiaWxpdGllc1NvY2tldDo6cGFyc2VDYXBhYmlsaXRpZXMoY29uc3QgSlNPTjo6T2Jq
ZWN0JiBtYXRjaGVkQ2FwYWJpbGl0aQogewogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0
QWRkclZhbHVlOwogICAgIFN0cmluZyB0YXJnZXRBZGRyOwotICAgIGlmIChtYXRjaGVkQ2FwYWJp
bGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciIsIHRhcmdldEFkZHJWYWx1ZSkgJiYg
dGFyZ2V0QWRkclZhbHVlLT5hc1N0cmluZyh0YXJnZXRBZGRyKSkKKyAgICBpZiAobWF0Y2hlZENh
cGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiX3MsIHRhcmdldEFkZHJWYWx1
ZSkgJiYgdGFyZ2V0QWRkclZhbHVlLT5hc1N0cmluZyh0YXJnZXRBZGRyKSkKICAgICAgICAgY2Fw
YWJpbGl0aWVzLnRhcmdldEFkZHIgPSB0YXJnZXRBZGRyOwogCiAgICAgUmVmUHRyPEpTT046OlZh
bHVlPiB0YXJnZXRQb3J0VmFsdWU7CiAgICAgaW50IHRhcmdldFBvcnQ7Ci0gICAgaWYgKG1hdGNo
ZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0IiwgdGFyZ2V0UG9ydFZh
bHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKKyAgICBpZiAo
bWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiX3MsIHRhcmdl
dFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRQb3J0ID0gdGFyZ2V0UG9ydDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAppbmRleCA3OWI3Y2E0YjJk
MTMuLjcwYWE0NGYwYmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRU
UFNlcnZlclNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZl
clNvY2tldC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVFRQUmVxdWVzdEhhbmRsZXI6OmRp
ZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQKICAg
ICAgICAgSFRUUFJlcXVlc3RIYW5kbGVyOjpSZXNwb25zZSByZXNwb25zZSB7CiAgICAgICAgICAg
ICA0MDAsCiAgICAgICAgICAgICAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKLSAgICAgICAg
ICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiLAorICAgICAgICAg
ICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCJfcywKICAgICAgICAg
fTsKICAgICAgICAgc2VuZFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCAzYjZmZjhhZjIw
NmEuLjU3ZGJhMDNlMWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0K
QEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0
dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogICAgIC8vICJJZiBh
bnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAo
IXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6
ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4i
Ci0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1
Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNv
bnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgIC8vICJJZiBhbnkgb2Yg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlk
YXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsK
ICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAg
ICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVy
ZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgwMSw3ICs4
MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBX
R1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29w
eVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAg
ICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBt
X2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7
CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
aW5kZXggZTE4MDgyZTVkNTI4Li4zNWZhYmVlNWE0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAg
LTI1MCw5ICsyNTAsOSBAQCBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclNTTFByb3RvY29sKFNTTFBy
b3RvY29sIHByb3RvY29sKQogICAgIGNhc2Uga1RMU1Byb3RvY29sMTM6CiAgICAgICAgIHJldHVy
biAiVExTIDEuMyJfczsKICAgICBjYXNlIGtTU0xQcm90b2NvbEFsbDoKLSAgICAgICAgcmV0dXJu
ICJBbGwiOworICAgICAgICByZXR1cm4gIkFsbCJfczsKICAgICBjYXNlIGtTU0xQcm90b2NvbFVu
a25vd246Ci0gICAgICAgIHJldHVybiAiVW5rbm93biI7CisgICAgICAgIHJldHVybiAiVW5rbm93
biJfczsKICAgICBjYXNlIGtUTFNQcm90b2NvbE1heFN1cHBvcnRlZDoKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4Ni4u
M2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFy
eTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWdu
YXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0K
aW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwyNSAr
NTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmpl
Y3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJlLCBj
b25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShO
U1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3aXJl
KQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRTYW1l
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJl
Lmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFy
IGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsK
LQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAvLyBg
Ym9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAgICAg
IGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10odW5p
Y2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJg
IGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6IGM7
CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3Ig
KE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFwQ2hh
cmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dpcmUg
Y2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3RhdGlj
IE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIgKmRl
Y29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9jYXRp
b24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9kU2ln
bmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1ldGhv
ZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcuVVRG
OFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUo
cmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNTdHJp
bmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5f
dHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
IkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlIGZv
ciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAiKG5v
IHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBA
IC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVtb3Rl
T2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0KIAot
c3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VM
IHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJlcGx5
QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVn
ZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRob2Q6
CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1ldGhv
ZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3LDEy
ICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpw
cm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRob2RU
eXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICByZXR1
cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUgKnRh
cmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNpZ25h
dHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25h
dHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVT
dHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNv
bnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVCbG9j
a1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJl
cGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0gICAg
ICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShb
aW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAgIE5T
U3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJl
V2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90
eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJl
cGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0
b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7
CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAgTlNM
b2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0
dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9ja1Np
Z25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRCbG9j
a1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1l
dGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0gJUAi
LCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6
UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9Owog
CiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBseUJs
b2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVwbHlC
bG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2NrU2ln
bmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCBy
ZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAgaWQg
cmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dpcmVC
bG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0
cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAgICAg
ICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBhbGxv
Y10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRpb24g
Zm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXggNmIwNTEzNjYy
MGVjLi5iYzFlMWM5ZTNjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KQEAgLTQxLDggKzQxLDggQEAg
c3RhdGljIFN0cmluZyBtYWx3YXJlRGV0YWlsc0Jhc2UoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAq
cmVzdWx0KQogICAgIHJldHVybiByZXN1bHQubWFsd2FyZURldGFpbHNCYXNlVVJMU3RyaW5nOwog
I2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlk
ZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2No
ZWNrLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL2dvb2dsZS5jb20vc2Fm
ZWJyb3dzaW5nL2RpYWdub3N0aWM/dHBsPXNhZmFyaSI7CisgICAgICAgIHJldHVybiAiaHR0cHM6
Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiX3M7CisgICAgcmV0dXJu
ICJodHRwczovL2dvb2dsZS5jb20vc2FmZWJyb3dzaW5nL2RpYWdub3N0aWM/dHBsPXNhZmFyaSJf
czsKICNlbmRpZgogfQogCkBAIC02Myw4ICs2Myw4IEBAIHN0YXRpYyBTdHJpbmcgcmVwb3J0QW5F
cnJvckJhc2UoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIHJldHVybiByZXN1
bHQucmVwb3J0QW5FcnJvckJhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnBy
b3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1
cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIjsK
LSAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9l
cnJvci8/dHBsPXNhZmFyaSI7CisgICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFx
LmNvbS9jb21wbGFpbi5odG1sP3RwbD1zYWZhcmkiX3M7CisgICAgcmV0dXJuICJodHRwczovL3d3
dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiX3M7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNWU2Njc4ZmU3M2U1Li41
ZjVlMmQ0NTJjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjk3LDcgKzI5Nyw3
IEBAIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OmZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdn
ZXJTeXN0ZW1QcmV2aWV3QWN0aW9uKCkKIHsKLSAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlv
blRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0
b25fdGFwcGVkIik7CisgICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9z
eXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCJfcyk7
CiB9CiAKIHZvaWQgU3lzdGVtUHJldmlld0NvbnRyb2xsZXI6OnRyaWdnZXJTeXN0ZW1QcmV2aWV3
QWN0aW9uV2l0aFRhcmdldEZvclRlc3RpbmcodWludDY0X3QgZWxlbWVudElELCBOU1N0cmluZyog
ZG9jdW1lbnRJRCwgdWludDY0X3QgcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCmluZGV4IDVjYWU4MTlmZDI0NC4uZmQ3MTRhMzA1OTE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJ
c1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpKTsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1l
KCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKTsKKyAgICAgICAgc2V0
UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZp
Y2UiX3MpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCA3Mjk0OTQxY2FhMmIuLmZiZTAyZWM4ZTNlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTEsNyAr
Mzg1MSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRF
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2
YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3Ms
IDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAg
ICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5n
LCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24g
YXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMy
OWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQg
V2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2Fz
ZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAot
ICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAi
eiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5
IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAg
ICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwg
IktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAg
ICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDcz
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSsw
MDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5
VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZp
ZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1
Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFn
ZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9T
MTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAg
ICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEy
XzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25O
YW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3
NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hD
bGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50
Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hv
c3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3Vy
cmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlz
IFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxs
IFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9z
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRB
UEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAg
ICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9t
ZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVu
dCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRp
YSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFR
dWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygp
ID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZSht
ZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJz
Y3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVu
ZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0
KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4Zjhl
YzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lk
IFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCog
bWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJl
dHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2Vi
RWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2Vi
Q29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRH
cmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgs
NyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClm
bGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVu
Y29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0
ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOwor
ICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNv
ZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChp
ZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1l
OihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERp
c3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0Vu
YWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFj
a1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JF
bW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJr
dXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3Jp
cHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwCmluZGV4IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJs
ZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5k
b3cpCiAgICAgQVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIo
dGhpcyk7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFj
Y2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFz
ZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0t
Z0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFz
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwog
fQogCiBBY2Nlc3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJj
Li5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGlj
dGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWci
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9z
KTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
ZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNw
cAppbmRleCAxYTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1
LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6
OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVm
YXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3du
bG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3Ig
aSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQo
KTsgKytpKQogICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFm
YThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBv
bGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJh
TmF2aWdhdGlvblR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVs
ZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVs
dFBvbGljeURlbGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNj
Yi4uOWRhNTk2MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5j
cHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5
U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwog
fQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1v
cnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rp
b25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEz
ICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29u
c3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3Zl
KGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblBy
b3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJl
ZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBw
bGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01
MCwxMyArNTAsMTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgp
CiAgICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNh
Y2hlOjp+V2ViQXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJB
cHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBA
IC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3Rv
cmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0g
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAi
QXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxp
Y2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAg
ICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAK
aW5kZXggODE1Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2
ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJj
aGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkw
NGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRM
aXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9y
d2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJk
TGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5X
ZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6
On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVt
b3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJh
Y2tGb3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8
QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdl
YkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2
YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGlj
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3Bw
CkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3Rh
dGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlz
dGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0
YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyAr
MTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9i
amVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2Jq
ZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRN
YXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2lu
KCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQo
Y3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQo
U3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJ
UHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVh
dGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFt
ZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3Rp
Y3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5
CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hN
YXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQg
PSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkK
LSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsK
KyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVu
dC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00s
IENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAg
IHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5Niwx
MyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0
cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3Mg
Z2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNo
TWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZl
ZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29t
bWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVz
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5m
cmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVh
cFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsK
LSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRz
LmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxv
Y1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0
TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0
TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFk
ZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5h
ZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3Jp
cHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVt
b3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXpl
Il9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJ
VEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxv
bmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JD
bGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2
ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1M
SW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVE
KGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZv
aWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFu
ZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0
cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAg
ICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFw
cCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkg
cHJlc3Nlcy4KICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMg
bGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1w
dHkgY29tbWFuZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21t
YW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCku
ZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNl
LmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJj
ZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRh
dGFTb3VyY2VDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJE
YXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAt
NjYsNyArNjYsNyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1f
bG9hZGVyLT5kZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFT
b3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3Mp
OwogfQogCiBXZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJE
b2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYw
LDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNy
ZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0
YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1h
bmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRh
dGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBm
YTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpX
ZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1
YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2Vi
RG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2
LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9j
dW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAg
ICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJj
ZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4
IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViRG93bmxvYWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgp
CkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhE
b3dubG9hZCwgIldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7
CiAgICAgY2FuY2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcApp
bmRleCAxODEwYTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdl
YkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJM
QXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9y
IGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJv
cihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRo
ZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhX
ZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9u
LCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihB
ZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0
ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRm
YzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01
MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2Vi
RHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFn
LmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYs
MTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3Qg
SGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0
UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0
eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0K
IAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUlu
c3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJF
cnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykK
ICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2Vi
RXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVy
dHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5
NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUu
Y3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJG
cmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7
CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1l
Ojp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJh
bWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBX
ZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYg
ZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUs
IFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1p
bWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRl
eHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1l
LCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBA
QCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAg
ICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigp
LmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJi
NzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5
TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2Zy
YW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVy
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVy
Il9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcApp
bmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQy
LDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlv
bihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9
CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElV
bmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24u
Y3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9z
aXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAog
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpR
dWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9i
amVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRp
b24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewog
ICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0
LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAog
ICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0K
IAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUlu
c3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5j
cHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRy
PElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmlj
YXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVy
ZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAg
V2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQog
CiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRh
YWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0
b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1f
aGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlz
dG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJ
dGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0
KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0
b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXgg
ZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVj
dG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVj
CiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0
b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAK
IFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0
YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRD
b2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rv
cjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0K
IAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xh
c3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9y
eS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBA
IFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNz
KQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAog
V2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3Mp
OwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAg
LTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0
TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VM
b29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktp
dE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNz
YWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6
Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0
aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBp
bnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNz
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
S2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlz
dGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0
U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlz
dGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0
ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFi
bGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxS
ZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyAr
NDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBp
c011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9
CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5z
dGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJs
ZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0
YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJf
cyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApA
QCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0K
IAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRh
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7
CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0
KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVE
YXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZl
ZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5h
bWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJ
bmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
Yk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlv
bigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigp
CiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlm
aWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCov
LCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAq
LykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNl
bnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIu
Y3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1Nywx
MyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAg
OiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9u
Q2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50
ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciog
V2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMx
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0
NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3Rh
bmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJl
bmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwog
fQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2Vi
UHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlk
OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0
MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RG
OjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5h
bWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7
CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSog
V2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4
NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRP
YmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0
T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3Jp
cHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJT
Y3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9i
amVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcs
NyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxE
T01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0
KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3Jp
cHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAt
NTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxX
b3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29y
bGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNi
NjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmln
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdp
bihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2lu
KHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNl
Y3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVk
SlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1
ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJT
ZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1Zh
bHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBD
T01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVu
ZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcApp
bmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRl
cmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6
V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVu
ZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
CiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7
CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQog
CiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAz
NWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNw
cApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
OjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNT
RVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsK
IH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2Uo
UmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1
Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRl
bnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3Jl
ZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFs
KGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVu
dGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50
aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90
ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1f
cHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBX
ZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0
aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rp
b25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlv
blNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBA
IHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50
IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBX
ZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVz
cG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVz
cG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBo
dHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFj
ZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7
IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5n
KCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGlu
c3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5l
IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsK
ICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAK
IENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBk
YjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdD
b3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAog
V2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3
KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2Uo
KQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJB
TSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dP
UkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVy
biBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRl
KCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3Io
KS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgot
ICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRl
KCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcyku
ZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcs
NyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZl
bnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25F
dmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkg
fSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlE
b3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9u
IGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQg
aWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcy
NSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIq
LykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFu
ZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3
OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00
NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3du
KiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNU
UlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
NDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtu
b3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUi
X3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJl
OTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vy
c1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2
YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJz
UHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQ
cml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldv
cmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJp
dmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJh
c2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNp
emUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0
cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JT
ZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0
cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5
Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUs
IGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAK
ICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNr
LCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBp
biBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ug
c3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNp
emUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAg
IEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpp
bmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAt
MjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVx
dWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50
aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQo
J0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQg
fTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2
LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VU
eXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxw
dHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29u
c3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNl
VHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyBy
ZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dC
eXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
IiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0s
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMi
X3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0s
IGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgn
ZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAg
ICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29u
c3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29u
c3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkg
PT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJW
aWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0
YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQog
ICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwog
CiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9
LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5T
V0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJ
ZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00
NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQg
aXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIo
KSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIg
PSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNl
cnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0Nf
U1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSAr
NTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmlu
dGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFs
cycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJl
cG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02
NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVz
RGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVl
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1
ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0s
CiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJl
cXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBp
bml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0
NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
ZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZp
Y2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9u
QWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJl
Y2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5
dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0g
UiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEy
ICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0
PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVu
dGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQor
ICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1l
VGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQg
PSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAu
MC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkw
OTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8v
MTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwot
c3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJf
czsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1s
Pjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRF
U1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWlu
RnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAg
fSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBu
dWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7
Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1l
Il9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTVi
ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQK
IHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsK
ICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVy
cmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29t
LmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwog
fQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNs
ZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2Vi
Q29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5
VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRT
dGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVu
ZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0
PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlv
biBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0Pgot
KVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3Jp
cHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2
ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJl
Y2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4u
aHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5
MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZl
ZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJv
bSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2
LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAg
eyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWlu
VW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0g
fSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFS
ZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0g
IlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0K
aW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVu
dE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwx
MSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRo
ZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAK
ICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJm
b28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZl
cjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUi
LCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9y
aWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7
IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9
LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcg
QEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkK
IHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8i
LCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0p
OwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIy
Nzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9Q
cmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0
cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dp
dGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZh
dWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6
ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBA
QCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0Ns
YXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1v
ZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2Rl
TmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0g
eyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENv
bnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8g
bmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250
ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAg
ICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVy
byk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9z
IH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
IiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRo
UG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJU
ZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVk
Q29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQog
ICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1
c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1
RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVE
ZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAg
ICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJd
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNm
MTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4u
Y3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBv
aW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1h
eFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVw
bGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsg
JmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8v
d3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29t
Il9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484799"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456491</attachid>
            <date>2022-04-02 19:44:40 -0700</date>
            <delta_ts>2022-04-02 20:42:13 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>267887</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCmluZGV4IGViY2RiMWRk
MDgxMi4uNWE5NDg5MDA5NDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
c2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaApAQCAt
MzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVzZXJBZ2VudFR5
cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5nKCksIFVzZXJB
Z2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9FWFBPUlQgU3Ry
aW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlMaXRlcmFsIG9z
TmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3RlbU1hcmtldGlu
Z1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rl
c3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTQuLjhiN2U3NDFiN2M4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEy
Myw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFt
ZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NB
U1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxl
UmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0
aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRy
KSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3Jt
QXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0g
Y3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWls
YWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJS
T1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYw
MDAxMGFhYzg4Li4wZDI5ZDVmM2Q1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgY29uc3QgU3Ry
aW5nIHBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKCkKIHsKICNpZiBPUyhVTklYKQogICAgIGlm
IChjaGFzc2lzVHlwZSgpID09IFdURjo6Q2hhc3Npc1R5cGU6Ok1vYmlsZSkKLSAgICAgICAgcmV0
dXJuICJsaWtlIEFuZHJvaWQgNC40IjsKKyAgICAgICAgcmV0dXJuICJsaWtlIEFuZHJvaWQgNC40
Il9zOwogCiAgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKICAgICB1bmFtZSgmbmFtZSk7CkBAIC0x
MzYsNyArMTM2LDcgQEAgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW8KICAgICB9IGVsc2UgewogICAg
ICAgICBTdHJpbmcgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSBhcHBsaWNhdGlvblZlcnNpb247
CiAgICAgICAgIGlmIChmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbi5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSI7CisgICAgICAgICAgICBm
aW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9ICI2MDUuMS4xNSJfczsKICAgICAgICAgdXNlckFnZW50
ID0gc3RhbmRhcmRVc2VyQWdlbnRTdGF0aWMoKSArICcgJyArIGFwcGxpY2F0aW9uTmFtZSArICcv
JyArIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCmluZGV4IGI3
ZDU4ZjQ2YjllYS4uYzVkZTFiNjhiNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMgKzE4Niwx
MyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNvbnN0IGNo
YXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNjZXNzKSB7
CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxl
cik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJWYWxpZGF0
aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9nID0g
U3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENvZGUoY29t
cGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFuc2xhdGVk
U2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAgICAgaWYg
KCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFLCBz
eW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODAuLmU2MmNmZDc1ZGY1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRv
IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBA
IC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVs
c0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRl
bnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNl
IEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVu
Y2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0
cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6
ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5
cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4
dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5n
bGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOS4u
ZmNkNTYzYTY3MzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCkBAIC0zNTMsNyAr
MzUzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50
aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJl
IGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8g
aW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFy
KiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0
ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9p
ZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xp
bnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xl
bnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSog
bGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRh
dGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcAppbmRleCA3ZTYzNDZmZmExODEuLjNmMzU0OGRhMGZmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRyYW5z
Zm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFuc2Zv
cgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIx
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBidWls
ZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCiB7
CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9yKSk7
CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBAIHN0
YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxhdGZv
cm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3VuZENv
bG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tn
cm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZvcm1M
YXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3Vu
ZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5
ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRD
b2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRCb3Jk
ZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVy
LCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMgaWYg
bmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tzVG9C
b3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4ZTU2
NzgyNDIzMS4uM2I3YTc1ZGM3OGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQu
Y3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsK
ICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwi
OworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJk
YXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5k
YXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBl
LmNwcAppbmRleCBiOTNiYzM0Y2M0ZDQuLjFmNTE2OTFlZjlmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNo
ZUZyZWVUeXBlLmNwcApAQCAtMzQyLDIyICszNDIsMjIgQEAgc3RhdGljIFN0cmluZyBnZXRGYW1p
bHlOYW1lU3RyaW5nRnJvbUZhbWlseShjb25zdCBTdHJpbmcmIGZhbWlseSkKICAgICAgICAgcmV0
dXJuIGZhbWlseTsKIAogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTdGFuZGFyZEZhbWlseSkgfHwgZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0
YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNl
cmlmIjsKKyAgICAgICAgcmV0dXJuICJzZXJpZiJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWls
eU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6U2Fuc1NlcmlmRmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJzYW5zLXNlcmlmIjsKKyAgICAgICAgcmV0dXJuICJzYW5zLXNlcmlmIl9zOwog
ICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpN
b25vc3BhY2VGYW1pbHkpKQotICAgICAgICByZXR1cm4gIm1vbm9zcGFjZSI7CisgICAgICAgIHJl
dHVybiAibW9ub3NwYWNlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5h
dChGYW1pbHlOYW1lc0luZGV4OjpDdXJzaXZlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJjdXJz
aXZlIjsKKyAgICAgICAgcmV0dXJuICJjdXJzaXZlIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFt
aWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpGYW50YXN5RmFtaWx5KSkKLSAgICAg
ICAgcmV0dXJuICJmYW50YXN5IjsKKyAgICAgICAgcmV0dXJuICJmYW50YXN5Il9zOwogCiAjaWYg
UExBVEZPUk0oR1RLKQogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTeXN0ZW1VaUZhbWlseSkgfHwgZmFtaWx5ID09ICItd2Via2l0LXN5c3Rl
bS1mb250IikKICAgICAgICAgcmV0dXJuIGRlZmF1bHRHdGtTeXN0ZW1Gb250KCk7CiAjZW5kaWYK
IAotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogI2lmIEZD
X1ZFUlNJT04gPCAyMTM5NQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggMWQ2YWUyZTEyZTdkLi5mZDlmNzhlN2QyMTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDEuLjEyMDdjMzVhMTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKQEAgLTYxMyw3ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVW
YWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlm
IChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAg
ICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJE
YXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElk
KSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1
ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVh
c2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4Li5iZDZiZTZm
N2E2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwCkBA
IC0xNzYsNyArMTc2LDcgQEAgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpSZWdpc3RyeUxvb2t1
cFJlc3VsdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnQKICAgICBpZiAoc2hvdWxk
Q2hlY2tIYXJkd2FyZUNsYXNzaWZpZXIgPT0gQ2hlY2tIYXJkd2FyZUNsYXNzaWZpZXI6Olllcykg
ewogICAgICAgICBmb3IgKEdMaXN0KiBmYWN0b3JpZXMgPSBjYW5kaWRhdGVzOyBmYWN0b3JpZXM7
IGZhY3RvcmllcyA9IGdfbGlzdF9uZXh0KGZhY3RvcmllcykpIHsKICAgICAgICAgICAgIGF1dG8q
IGZhY3RvcnkgPSByZWludGVycHJldF9jYXN0PEdzdEVsZW1lbnRGYWN0b3J5Kj4oZmFjdG9yaWVz
LT5kYXRhKTsKLSAgICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSA9IGdzdF9lbGVtZW50X2ZhY3Rv
cnlfZ2V0X21ldGFkYXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKTsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXRhZGF0YSB7IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFk
YXRhKGZhY3RvcnksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0tMQVNTKSB9OwogICAgICAgICAgICAg
YXV0byBjb21wb25lbnRzID0gbWV0YWRhdGEuc3BsaXQoJy8nKTsKICAgICAgICAgICAgIGlmIChj
b21wb25lbnRzLmNvbnRhaW5zKCJIYXJkd2FyZSIpKSB7CiAgICAgICAgICAgICAgICAgaXNVc2lu
Z0hhcmR3YXJlID0gdHJ1ZTsKQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lz
dHJ5U2Nhbm5lcjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lcgogICAgIH0KIAogICAgIGF1dG8gYXYxRGVjb2RlckF2YWlsYWJsZSA9IGZhY3Rvcmllcy5o
YXNFbGVtZW50Rm9yTWVkaWFUeXBlKEVsZW1lbnRGYWN0b3JpZXM6OlR5cGU6OlZpZGVvRGVjb2Rl
ciwgInZpZGVvL3gtYXYxIiwgRWxlbWVudEZhY3Rvcmllczo6Q2hlY2tIYXJkd2FyZUNsYXNzaWZp
ZXI6Olllcyk7Ci0gICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVT
dXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiKSkgJiYgYXYxRGVj
b2RlckF2YWlsYWJsZSkgeworICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWlu
ZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0Il9zKSkg
JiYgYXYxRGVjb2RlckF2YWlsYWJsZSkgewogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQo
QXRvbVN0cmluZygiYXYwMSoiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygiYXYxIiksIGF2MURl
Y29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNN
YXAuYWRkKEF0b21TdHJpbmcoIngtYXYxIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hh
cmR3YXJlKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6aW5pdGlhbGl6ZURlY29kZXJzKGNvbnN0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcgogICAg
ICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXAyIikpOwog
ICAgIH0KIAotICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiKTsKKyAgICBhdWRpb01wZWdT
dXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29k
aW5nLCAiYXVkaW8vbXA0Il9zKTsKICAgICBpZiAoYXVkaW9NcGVnU3VwcG9ydGVkKSB7CiAgICAg
ICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcGVnIikpOwog
ICAgICAgICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8veC1tcGVn
IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAzYzBkOGY3M2M0MmIuLjdlYmJhNDMyMmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5
ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9
IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAg
R3N0RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3
MzUsNyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVN
ZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vy
cm9yKG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdT
VF9FUlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2Us
IG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdl
ID0gZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+
bWVzc2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6
RW1wdHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFN
X0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4
OSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdz
dE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25h
bWUoc3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19P
QkpFQ1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZP
Uk1BVCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAg
ICBVUkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVy
aSB9IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEy
Nyw3ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRp
dGxlID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NU
X1RBR19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBj
dWUtPnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmlu
Zzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAg
IH0KICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAg
ICBnX29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJS
ZWNvbmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9s
ZERvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0g
ICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0
KCk7CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxh
dGUuZ2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQ
YXRoLnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVk
Q2FsbGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZp
bGU7CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRl
bXAtbG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlm
IChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkg
eworICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21V
VEY4KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRu
J3QgdW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxv
YWRGaWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAs
MTEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24o
KQogICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3Vy
cmVudCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9u
IHRvIGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRp
b24pID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBu
ZXdMb2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsg
bmV3TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVy
bFN0cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVy
aSIsICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsg
U3RyaW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5V
cmwgPT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCks
ICJQbGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcw
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5Qmlu
KGNvbnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVu
dElkKCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9
ICJtZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwog
CiAgICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5w
cm90b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkx
OCw3ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJz
ZUluaXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1
ZmZlciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVj
dGlvbihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAot
ICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7Cisg
ICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0s
IGRhdGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1Rf
RVZFTlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcg
KzQwMzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVj
dGlvbkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3Rl
bVVVSUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAg
IGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAm
aW5pdERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtl
dmVudEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9
CiAKIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBm
M2NhOGEzMDFjNjcuLjMyZWQzYWU4YjI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NU
YWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURl
c2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBT
dHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVh
bWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1By
aXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2
MzAuLjAzZWRhYzhjOGU5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJl
YW1lcjo6Z2V0TGFuZ3VhZ2VDb2RlKEdzdFRhZ0xpc3QqIHRhZ3MsIEF0b21TdHJpbmcmIHZhCiB7
CiAgICAgU3RyaW5nIGxhbmd1YWdlOwogICAgIGlmIChnZXRUYWcodGFncywgR1NUX1RBR19MQU5H
VUFHRV9DT0RFLCBsYW5ndWFnZSkpIHsKLSAgICAgICAgbGFuZ3VhZ2UgPSBnc3RfdGFnX2dldF9s
YW5ndWFnZV9jb2RlX2lzb182MzlfMShsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
bGFuZ3VhZ2UgPSBTdHJpbmcgeyBnc3RfdGFnX2dldF9sYW5ndWFnZV9jb2RlX2lzb182MzlfMShs
YW5ndWFnZS51dGY4KCkuZGF0YSgpKSB9OwogICAgICAgICBHU1RfREVCVUcoIkNvbnZlcnRlZCB0
cmFjayAlZCdzIGxhbmd1YWdlIGNvZGUgdG8gJXMuIiwgbV9pbmRleCwgbGFuZ3VhZ2UudXRmOCgp
LmRhdGEoKSk7CiAgICAgICAgIGlmIChsYW5ndWFnZSAhPSB2YWx1ZSkgewogICAgICAgICAgICAg
dmFsdWUgPSBsYW5ndWFnZTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJh
c2VHU3RyZWFtZXI6OmdldFRhZyhHc3RUYWdMaXN0KiB0YWdzLCBjb25zdCBnY2hhciogdGFnTmFt
ZSwgUwogICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHRhZ1ZhbHVlOwogICAgIGlmIChnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCB0YWdOYW1lLCAmdGFnVmFsdWUub3V0UHRyKCkpKSB7CiAg
ICAgICAgIEdTVF9ERUJVRygiVHJhY2sgJWQgZ290ICVzICVzLiIsIG1faW5kZXgsIHRhZ05hbWUs
IHRhZ1ZhbHVlLmdldCgpKTsKLSAgICAgICAgdmFsdWUgPSB0YWdWYWx1ZS5nZXQoKTsKKyAgICAg
ICAgdmFsdWUgPSBTdHJpbmdUeXBlIHsgdGFnVmFsdWUuZ2V0KCkgfTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKaW5kZXggODk0NzU0MDVjODA5Li5kN2JlODA1MThl
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3Bw
CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQ
YWQuZ2V0KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBn
cG9pbnRlciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFtt
b2RpZmllZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9Q
Uk9CRV9JTkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRB
KGluZm8pID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdU
aW1lcy5zZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFp
cihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVz
dGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BS
T0JFX09LOwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9y
RWxlbWVudChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAg
ICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFt
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVs
ZW1lbnROYW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAg
IGF1dG8gdmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1l
KTsKICAgICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwg
c3RkOjptYWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwog
ICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NS4uZDY0MDRjMTIwY2E4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAg
LTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVD
b25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDAp
CiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWlt
ZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdl
dCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9Owog
I2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTAuLmQwYWQ2
NzJkNzEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAK
QEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogCiAgICAgR1NUX0RF
QlVHKCJBcHBlbmRpbmcgZXh0cmEgaGVhZGVyOiBcIiVzOiAlc1wiIiwgZmllbGROYW1lLCBmaWVs
ZENvbnRlbnQuZ2V0KCkpOwogICAgIFJlc291cmNlUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PFJlc291cmNlUmVxdWVzdCo+KHVzZXJEYXRhKTsKLSAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoZmllbGROYW1lLCBmaWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChTdHJpbmcgeyBmaWVsZE5hbWUgfSwgU3RyaW5nIHsgZmllbGRDb250
ZW50LmdldCgpIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC02NDQsNyArNjQ0LDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICBBU1NFUlQobWVtYmVycy0+cmVxdWVzdGVkUG9z
aXRpb24gIT0gbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiUG9zdGluZyB0YXNrIHRvIHJlcXVlc3QgUiV1ICVzIHJlcXVlc3RlZFBvc2l0aW9uPSUi
IEdfR1VJTlQ2NF9GT1JNQVQgIiBzdG9wUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVt
YmVycy0+cmVxdWVzdE51bWJlciwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpLCBtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiwgbWVtYmVycy0+c3RvcFBvc2l0aW9uKTsKLSAgICBVUkwgdXJsIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHByaXYt
Pm9yaWdpbmFsVVJJLmRhdGEoKSB9IH07CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1
cmwpOwogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwpAQCAtNjUzLDcgKzY1Myw3
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3Jj
LCBEYXRhTXV0ZXhMb2NrZXI8V2ViS2l0V2ViCiAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIo
bWVtYmVycy0+cmVmZXJyZXIpOwogCiAgICAgaWYgKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpCi0g
ICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChwcml2LT5odHRwTWV0aG9kLmdldCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFN0cmluZyB7IHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkgfSk7CiAKICNpZiBVU0UoU09VUCkKICAgICAvLyBCeSBkZWZhdWx0LCBIVFRQIEFjY2VwdC1F
bmNvZGluZyBpcyBkaXNhYmxlZCBoZXJlIGFzIHdlIGRvbid0CkBAIC02NzIsNyArNjcyLDcgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAvLyBMZXQgQXBwbGUgd2ViIHNlcnZlcnMga25v
dyB3ZSB3YW50IHRvIGFjY2VzcyB0aGVpciBuaWNlIG1vdmllIHRyYWlsZXJzLgogICAgIGlmICgh
Z19hc2NpaV9zdHJjYXNlY21wKCJtb3ZpZXMuYXBwbGUuY29tIiwgdXJsLmhvc3QoKS51dGY4KCku
ZGF0YSgpKQogICAgICAgICB8fCAhZ19hc2NpaV9zdHJjYXNlY21wKCJ0cmFpbGVycy5hcHBsZS5j
b20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBV
c2VyQWdlbnQoIlF1aWNrdGltZS83LjYuNiIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoIlF1aWNrdGltZS83LjYuNiJfcyk7CiAKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24gfHwgbWVtYmVycy0+c3RvcFBvc2l0aW9uICE9IFVJTlQ2NF9NQVgpIHsKICAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3JtYXRlZFJhbmdlOwpAQCAtNjgxLDE5ICs2ODEsMTkgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERh
dGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZm9ybWF0
ZWRSYW5nZS5yZXNldChnX3N0cmR1cF9wcmludGYoImJ5dGVzPSUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0iLCBtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbikpOwogICAgICAgICBHU1RfREVCVUdfT0JK
RUNUKHNyYywgIlJhbmdlIHJlcXVlc3Q6ICVzIiwgZm9ybWF0ZWRSYW5nZS5nZXQoKSk7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpSYW5nZSwgZm9y
bWF0ZWRSYW5nZS5nZXQoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhU
VFBIZWFkZXJOYW1lOjpSYW5nZSwgU3RyaW5nIHsgZm9ybWF0ZWRSYW5nZS5nZXQoKSB9KTsKICAg
ICB9CiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlYWRQb3NpdGlvbiA9PSBtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBlcnNpc3RlbnQgY29u
bmVjdGlvbiBzdXBwb3J0ICVzIiwgcHJpdi0+a2VlcEFsaXZlID8gImVuYWJsZWQiIDogImRpc2Fi
bGVkIik7CiAgICAgaWYgKCFwcml2LT5rZWVwQWxpdmUpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2UiKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24s
ICJjbG9zZSJfcyk7CiAKICAgICBpZiAocHJpdi0+ZXh0cmFIZWFkZXJzKQogICAgICAgICBnc3Rf
c3RydWN0dXJlX2ZvcmVhY2gocHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpLCB3ZWJLaXRXZWJTcmNQ
cm9jZXNzRXh0cmFIZWFkZXJzLCAmcmVxdWVzdCk7CiAKICAgICAvLyBXZSBhbHdheXMgcmVxdWVz
dCBJY2VjYXN0L1Nob3V0Y2FzdCBtZXRhZGF0YSwganVzdCBpbiBjYXNlIC4uLgotICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiKTsK
KyAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRh
dGEsICIxIl9zKTsKIAogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNyYyksIHJlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+cmVxdWVzdE51
bWJlcl0gewpAQCAtODgxLDcgKzg4MSw3IEBAIGNvbnN0IGdjaGFyKiBjb25zdCogd2ViS2l0V2Vi
U3JjR2V0UHJvdG9jb2xzKEdUeXBlKQogCiBzdGF0aWMgVVJMIGNvbnZlcnRQbGF5YmluVVJJKGNv
bnN0IGNoYXIqIHVyaVN0cmluZykKIHsKLSAgICByZXR1cm4gVVJMIHsgdXJpU3RyaW5nIH07Cisg
ICAgcmV0dXJuIFVSTCB7IFN0cmluZyB7IHVyaVN0cmluZyB9IH07CiB9CiAKIHN0YXRpYyBnY2hh
ciogd2ViS2l0V2ViU3JjR2V0VXJpKEdzdFVSSUhhbmRsZXIqIGhhbmRsZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9t
c2UvQXBwZW5kUGlwZWxpbmUuY3BwCmluZGV4IGZlNDc5ZDZiYjUyNy4uMWFmMGU1NTRkODJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L0FwcGVuZFBpcGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0
ZDo6dHVwbGU8R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZs
b2F0U2l6ZT4gQXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlw
ZSA9IGNhcHNNZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lz
dHJ5U2Nhbm5lciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0g
ICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkp
IHsKKyAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdp
bmFsTWVkaWFUeXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZh
bGlkOwogICAgIH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdT
VF9WSURFT19DQVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0g
Z2V0VmlkZW9SZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZs
b2F0U2l6ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIuLjJjZWM2ODQ2NmZmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
TVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJ
ID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJs
b2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5n
KCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVy
bC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2Np
aSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzMy4uOTE5NjNkMzI5MDkzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcApAQCAtMTA2LDE5ICsxMDYsMTkgQEAgYm9vbCBFeHRl
bnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIC8vIEdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQgYW5kIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIGFyZSAiZmFrZSIuIFRoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5n
IG90aGVyCiAgICAgLy8gZXh0ZW5zaW9ucy4gSW4gcGFydGljdWxhciBHTF9FWFRfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlL0dMX0FQUExFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlLgogICAgIGlmIChuYW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9ibGl0IikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQiX3MpOwogICAgIGlmIChu
YW1lID09ICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiX3MpOwogICAgIGlmIChuYW1lID09ICJH
TF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikgewotICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIikpCi0gICAg
ICAgICAgICAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19p
bnN0YW5jZWQiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCIpKTsKKyAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9pbnN0YW5jZWRfYXJyYXlzIl9zKSkKKyAgICAgICAgICAgICYm
IChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCJf
cykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5j
ZWQiX3MpKTsKICAgICB9CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NSR0IiKQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9z
UkdCIikgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX3NSR0IiKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFt
ZWJ1ZmZlcl9zUkdCIikpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9zUkdCIl9zKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiJfcykpOwogCiAgICAgaWYg
KG5hbWUgPT0gIkdMX0VYVF9mcmFnX2RlcHRoIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiKTsKKyAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYWdfZGVwdGgiX3MpOwog
CiAgICAgLy8gRGVza3RvcCBHTCBhbHdheXMgc3VwcG9ydHMgR0xfT0VTX3JnYjhfcmdiYTguCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX09FU19yZ2I4X3JnYmE4IikKQEAgLTEyNywxNCArMTI3LDE0IEBA
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAvLyBJZiBHTF9BUkJfdGV4dHVyZV9mbG9hdCBvciBHTF9PRVNf
dGV4dHVyZV9mbG9hdCBpcyBhdmFpbGFibGUgdGhlbiB3ZSByZXBvcnQKICAgICAvLyBHTF9PRVNf
dGV4dHVyZV9oYWxmX2Zsb2F0LCBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgYW5kIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIGFzIGF2YWlsYWJsZS4KICAgICBpZiAobmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2hhbGZf
ZmxvYXQiIHx8IG5hbWUgPT0gIkdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciIgfHwgbmFtZSA9
PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCIpIHx8IG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3RleHR1cmVfZmxvYXQiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1
cmVfZmxvYXQiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfT0VTX3Rl
eHR1cmVfZmxvYXQiX3MpOwogCiAgICAgLy8gR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKICAg
ICBpZiAobmFtZSA9PSAiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QiKSB7CiAjaWYgKFBMQVRG
T1JNKEdUSykpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bHNlCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FQ
UExFX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZW5k
aWYKICAgICB9CiAKQEAgLTE0NywxNCArMTQ3LDE0IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdM
OjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zaGFkZXJfdGV4dHVy
ZV9sb2QiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiX3MpOwogICAgIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKQotICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl9zKTsKIAog
ICAgIGlmIChuYW1lID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikgewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJC
X2RyYXdfYnVmZmVycyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIl9zKTsKICNlbHNlCiAgICAgICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQgc3VwcG9ydCBmb3Igb3RoZXIgcGxhdGZvcm1zLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yMzEsNyArMjMxLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTDo6Z2V0
RXh0ZW5zaW9ucygpCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXSU4pCiBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCgpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJH
TF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRleF9hcnJheV9vYmpl
Y3QiX3MpOwogICAgIHJldHVybiBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0OwogfQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCmluZGV4IDQ4OTY5OWM0ZWUz
Yy4uMzA0MGNlYmRhOWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNw
cApAQCAtMTc0LDEyICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6
Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNl
IGlmIChHTHNoYWRlclR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgc2hhZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxh
dGZvcm1HTE9iamVjdCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5
Pjo6aXRlcmF0b3IgcmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNo
YWRlcik7CiAKICAgICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CiAKICAgICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5
ID0gcmVzdWx0LT52YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25z
R0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdM
T2JqZWN0CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFk
ZXJTb3VyY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAw
MTUwOTUuLmI5MTExMDI1OTgzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBA
IC0yNjQsNyArMjY0LDcgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUiKSk7CiAgICAgICAgICAgICBtX2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWds
R2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAg
ICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVs
c2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KG1ham9yVmVyc2lvbigpID49IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0
ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAg
ICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNl
ZDsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApp
bmRleCBjYWFhYjZmYzU5OGIuLjBhNmE4OGNmMWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuY3BwCkBAIC0zNTIsMTMgKzM1MiwxNCBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVs
QnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZENvbXBvc2l0ZWRSZXN1bHRzKCkK
ICAgICByZXR1cm4gcmVhZFJlbmRlcmluZ1Jlc3VsdHMoKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVw
dGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRh
dGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikK
IHsKICAgICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKIAogICAgIGlmIChhdHRy
cy5zdGVuY2lsKSB7Ci0gICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pKSB7Ci0gICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgICAgIFN0cmluZyBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb25TdHJpbmcgeyBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24gfTsKKyAg
ICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0
cmluZykpIHsKKyAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uU3RyaW5nKTsKICAgICAgICAgICAgIC8vIEZvcmNlIGRlcHRoIGlmIHN0
ZW5jaWwgaXMgdHJ1ZS4KICAgICAgICAgICAgIGF0dHJzLmRlcHRoID0gdHJ1ZTsKICAgICAgICAg
fSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDg0OWE3ZjVhMzkx
Mi4uYWY3NWUwZDA5OTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAt
NDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwg
YW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxk
IG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAog
ICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29u
c3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRl
RGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwog
ICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1w
bChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0
LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dM
c2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2
b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Li43YjU0
YTAxZjNlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
CkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9yUGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURl
cHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUp
CkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xD
b21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRlbnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0
IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Uga25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAo
ZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
X3MpKQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0
ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01QT05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNiOWI4NmM1MzI3Li4zYWU2MmJmNmVlYjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKQEAgLTEwNCw3ICsxMDQsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXpl
JiBzaXplKQogCiAgICAgLy8gV2UgZG9uJ3QgYWxsb3cgdGhlIGxvZ2ljIHdoZXJlIHN0ZW5jaWwg
aXMgcmVxdWlyZWQgYW5kIGRlcHRoIGlzIG5vdC4KICAgICAvLyBTZWUgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcy4KLSAgICBib29sIHN1cHBvcnRQYWNrZWREZXB0
aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVuY2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgp
ICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAg
ICBib29sIHN1cHBvcnRQYWNrZWREZXB0aFN0ZW5jaWxCdWZmZXIgPSAoYXR0cmlidXRlcy5zdGVu
Y2lsIHx8IGF0dHJpYnV0ZXMuZGVwdGgpICYmIHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgLy8gUmVzaXplIHJlZ3VsYXIgRkJPLgogICAg
IGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKQEAgLTI0MCwxMSArMjQwLDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnRleEltYWdlMkQoR0NHTGVudW0gdGFyZ2V0LCBHQ0dM
aW50IGxldmVsLCBHQ0dMZW51CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNr
ZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gY29udGV4dEF0
dHJpYnV0ZXMoKTsKIAotICAgIGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNF
eHRlbnNpb24oIkdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiKSkgeworICAg
IGlmIChhdHRyaWJ1dGVzLmFudGlhbGlhcyAmJiAhc3VwcG9ydHNFeHRlbnNpb24oIkdMX0lNR19t
dWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUiX3MpKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMu
YW50aWFsaWFzID0gZmFsc2U7CiAgICAgICAgIHNldENvbnRleHRBdHRyaWJ1dGVzKGF0dHJpYnV0
ZXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEUuY3BwCmluZGV4IDMzMDEwOGM2NmRhYS4uYjFmNGM2NDdhNzYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAK
QEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3Vj
Y2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRv
IHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRz
RXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBv
cnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5
ZDBjZjYwZS4uYmNiNjc1MWVkYjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlv
bnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFy
dGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBt
X2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9hbmltYXRpb25TdGFydFRpbWUpOwogCiAgICAg
bV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1Li5jN2ExYzI3MjVkM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291
bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcApAQCAtMzQsNyArMzQsNyBAQCBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlcjo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKQogICAgICwgbV9sYXN0RlBTKDAp
CiAgICAgLCBtX2ZyYW1lQ291bnQoMCkKIHsKLSAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25tZW50
ID0gZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKTsKKyAgICBTdHJpbmcgc2hvd0ZQU0Vudmlyb25t
ZW50IHsgZ2V0ZW52KCJXRUJLSVRfU0hPV19GUFMiKSB9OwogICAgIGJvb2wgb2sgPSBmYWxzZTsK
ICAgICBtX2Zwc0ludGVydmFsID0gU2Vjb25kcyhzaG93RlBTRW52aXJvbm1lbnQudG9Eb3VibGUo
Jm9rKSk7CiAgICAgaWYgKG9rICYmIG1fZnBzSW50ZXJ2YWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGRiOTgw
MjE4MDU1Li43NjY5YTExZGJhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0g
ICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0
aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMs
IGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmly
ZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4
dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0
cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlv
bnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJ
bmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwg
ImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAg
ICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tk
cm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OC4uZTk1NzgyOTJiMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGFzdGVib2FyZElPUy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERy
YWdJbWFnZShEcmFnSW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6
Om5hbWVPZkRyYWdQYXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFz
dGVib2FyZCI7CisgICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5k
RHJvcChzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFj
Ny4uOGQ1YzQzZGU4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0KQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNDbGFzc2lj
UGhvbmUoKQogICAgIHJldHVybiBpc0NsYXNzaWMoKSAmJiBbUEFMOjpnZXRVSUFwcGxpY2F0aW9u
Q2xhc3MoKSBfY2xhc3NpY01vZGVdICE9IFVJQXBwbGljYXRpb25TY2VuZUNsYXNzaWNNb2RlT3Jp
Z2luYWxQYWQ7CiB9CiAKLVN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKQorQVNDSUlMaXRlcmFs
IG9zTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAgICAgaWYgKGRldmljZUhhc0lQYWRDYXBhYmlsaXR5
KCkgJiYgIWlzQ2xhc3NpY1Bob25lKCkpCi0gICAgICAgIHJldHVybiAiT1MiOwotICAgIHJldHVy
biAiaVBob25lIE9TIjsKKyAgICAgICAgcmV0dXJuICJPUyJfczsKKyAgICByZXR1cm4gImlQaG9u
ZSBPUyJfczsKIH0KIAogc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KaW5kZXggNDc1NzRmYzQ1YzgwLi5iZTQ2ZTFlMGVjNzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsK
ICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5
ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJv
bGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7Cisg
ICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2Rl
bDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bh
c3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0Ny4uYWU0MzllMzBmMWZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikK
IAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWlu
VGV4dFVSTFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKLSAgICB0ZXh0
LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRT
dHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgbmFtZSgp
LCBjb250ZXh0KCkpOworICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWlu
O2NoYXJzZXQ9dXRmLTgiX3MsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQog
ewotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHVybC51cmwuc3RyaW5nKCkp
OworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVU
b1Bhc3RlYm9hcmQoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdXJsLnVybC5zdHJpbmco
KSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRU
eXBlKGNvbnN0IFBhc3RlYm9hcmRVUkwmKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6d3JpdGVNYXJrdXAoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAg
ICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7CisgICAgd3Jp
dGVTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdGV4dCk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3
cGUvUGxhdGZvcm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcAppbmRleCBhMzRkYzIyMGJiYjkuLjg0
MzIzMWQzYjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bs
YXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKQEAgLTc3MywxMDEgKzc3
MywxMDEgQEAgU3RyaW5nIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRpZmllckZvcldQ
RUtleUNvZGUodW5zaWduZWQga2V5Q29kZSkKICAgICBjYXNlIFdQRV9LRVlfTWVudToKICAgICBj
YXNlIFdQRV9LRVlfQWx0X0w6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9SOgotICAgICAgICByZXR1
cm4gIkFsdCI7CisgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9DbGVh
cjoKLSAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Rvd246Ci0gICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgIHJl
dHVybiAiRG93biJfczsKICAgICAgICAgLy8gIkVuZCIKICAgICBjYXNlIFdQRV9LRVlfRW5kOgot
ICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAv
LyAiRW50ZXIiCiAgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKICAgICBjYXNlIFdQRV9LRVlf
S1BfRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKLSAgICAgICAgcmV0dXJuICJFbnRl
ciI7CisgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0V4ZWN1dGU6
Ci0gICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE6Ci0gICAgICAgIHJldHVybiAiRjEiOworICAgICAgICByZXR1
cm4gIkYxIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjoKLSAgICAgICAgcmV0dXJuICJGMiI7Cisg
ICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YzOgotICAgICAgICByZXR1
cm4gIkYzIjsKKyAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjQ6Ci0g
ICAgICAgIHJldHVybiAiRjQiOworICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9GNToKLSAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgIHJldHVybiAiRjUiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0Y2OgotICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgcmV0dXJu
ICJGNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjc6Ci0gICAgICAgIHJldHVybiAiRjciOworICAg
ICAgICByZXR1cm4gIkY3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GODoKLSAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y5OgotICAg
ICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjEwOgotICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgICAgIHJldHVybiAiRjEwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMTE6Ci0gICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgcmV0
dXJuICJGMTEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMjoKLSAgICAgICAgcmV0dXJuICJGMTIi
OworICAgICAgICByZXR1cm4gIkYxMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjEzOgotICAgICAg
ICByZXR1cm4gIkYxMyI7CisgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMTQ6Ci0gICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0YxNToKLSAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICByZXR1
cm4gIkYxNSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE2OgotICAgICAgICByZXR1cm4gIkYxNiI7
CisgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTc6Ci0gICAgICAg
IHJldHVybiAiRjE3IjsKKyAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxODoKLSAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICByZXR1cm4gIkYxOCJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjE5OgotICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgIHJldHVy
biAiRjE5Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjA6Ci0gICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMToKLSAgICAgICAg
cmV0dXJuICJGMjEiOworICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjIyOgotICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMjM6Ci0gICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgcmV0dXJu
ICJGMjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyNDoKLSAgICAgICAgcmV0dXJuICJGMjQiOwor
ICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICBjYXNlIFdQRV9LRVlfSGVscDoKLSAgICAgICAg
cmV0dXJuICJIZWxwIjsKKyAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9Ib21lOgotICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICByZXR1cm4gIkhvbWUiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0luc2VydDoKLSAgICAgICAgcmV0dXJuICJJbnNlcnQiOworICAg
ICAgICByZXR1cm4gIkluc2VydCJfczsKICAgICBjYXNlIFdQRV9LRVlfTGVmdDoKLSAgICAgICAg
cmV0dXJuICJMZWZ0IjsKKyAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgIGNhc2UgV1BFX0tF
WV9QYWdlX0Rvd246Ci0gICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIl9zOwogICAgIGNhc2UgV1BFX0tFWV9QYWdlX1VwOgotICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgICAgIHJldHVybiAiUGFnZVVwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Q
YXVzZToKLSAgICAgICAgcmV0dXJuICJQYXVzZSI7CisgICAgICAgIHJldHVybiAiUGF1c2UiX3M7
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfUHJpbnRTY3JlZW46CiAgICAgY2FzZSBXUEVfS0VZX1By
aW50OgotICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIjsKKyAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiJfczsKICAgICBjYXNlIFdQRV9LRVlfUmlnaHQ6Ci0gICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9TZWxlY3Q6
Ci0gICAgICAgIHJldHVybiAiU2VsZWN0IjsKKyAgICAgICAgcmV0dXJuICJTZWxlY3QiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX1VwOgotICAgICAgICByZXR1cm4gIlVwIjsKKyAgICAgICAgcmV0dXJu
ICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3
Ri4KICAgICBjYXNlIFdQRV9LRVlfRGVsZXRlOgotICAgICAgICByZXR1cm4gIlUrMDA3RiI7Cisg
ICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Ci0g
ICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAgICAgICAgcmV0dXJuICJVKzAwMDgiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0lTT19MZWZ0X1RhYjoKICAgICBjYXNlIFdQRV9LRVlfMzI3MF9CYWNrVGFi
OgogICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIHJldHVybiAiVSswMDA5IjsKKyAgICAg
ICAgcmV0dXJuICJVKzAwMDkiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA2MDdm
MzY2YmY3MmYuLjRmYTgyYmJkZTE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29u
dGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBy
bwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0
VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZp
ZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9
IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJf
czsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBl
ICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBD
b250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNv
ZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250
YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2Ug
aWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1l
ID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gt
b3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykg
eyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAg
ICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAg
ICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZTE0M2NkNGY0
YTVlLi5iNDIzNzlmMzNiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcApAQCAtODUsMTQgKzg1LDE0IEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBN
SU1FSGVhZGVyOjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQog
ewogICAgIGF1dG8gbWltZUhlYWRlciA9IGFkb3B0UmVmKCpuZXcgTUlNRUhlYWRlcik7CiAgICAg
S2V5VmFsdWVNYXAga2V5VmFsdWVQYWlycyA9IHJldHJpZXZlS2V5VmFsdWVQYWlycyhidWZmZXIp
OwotICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUiKTsKKyAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0
b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10
eXBlIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJz
LmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSwgY2hhcnNldCwgbXVsdGlwYXJ0
VHlwZSwgZW5kT2ZQYXJ0Qm91bmRhcnk7CiAgICAgICAgIGlmIChhdXRvIHBhcnNlZENvbnRlbnRU
eXBlID0gUGFyc2VkQ29udGVudFR5cGU6OmNyZWF0ZShtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52
YWx1ZSkpIHsKICAgICAgICAgICAgIGNvbnRlbnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPm1p
bWVUeXBlKCk7CiAgICAgICAgICAgICBjaGFyc2V0ID0gcGFyc2VkQ29udGVudFR5cGUtPmNoYXJz
ZXQoKS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIG11bHRpcGFydFR5cGUgPSBwYXJz
ZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIik7Ci0gICAgICAgICAg
ICBlbmRPZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZv
ck5hbWUoImJvdW5kYXJ5Iik7CisgICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29u
dGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSJfcyk7CisgICAgICAgICAgICBl
bmRPZlBhcnRCb3VuZGFyeSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5h
bWUoImJvdW5kYXJ5Il9zKTsKICAgICAgICAgfQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRl
bnRUeXBlID0gY29udGVudFR5cGU7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBh
cnQoKSkKQEAgLTEwOSwxMSArMTA5LDExIEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVy
OjpwYXJzZUhlYWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQogICAgICAgICB9
CiAgICAgfQogCi0gICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmlu
ZCgiY29udGVudC10cmFuc2Zlci1lbmNvZGluZyIpOworICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0
b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciX3MpOwog
ICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpCiAg
ICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFRyYW5zZmVyRW5jb2RpbmcgPSBwYXJzZUNvbnRl
bnRUcmFuc2ZlckVuY29kaW5nKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKIAotICAg
IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtbG9j
YXRpb24iKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5k
KCJjb250ZW50LWxvY2F0aW9uIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAh
PSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRMb2Nh
dGlvbiA9IG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXgg
NTE2OTA0NWM3MDVmLi4yZGMyNzE2NjNhMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTEwMiwxNSArMTAy
LDE1IEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1MYXp5SW5pdCgpCiAKICAgICBDRlN0
cmluZ1JlZiBkb21haW4gPSBDRkVycm9yR2V0RG9tYWluKG1fcGxhdGZvcm1FcnJvci5nZXQoKSk7
CiAgICAgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk1hY2ggfHwgZG9tYWluID09IGtDRkVy
cm9yRG9tYWluQ29jb2EpCi0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5DRk5ldHdvcmspCi0gICAgICAgIG1fZG9tYWluID0g
IkNGVVJMRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWlu
Il9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpblBPU0lYKQotICAgICAg
ICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9t
YWluT1NTdGF0dXMpCi0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICBlbHNl
IGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5XaW5Tb2NrKQotICAgICAgICBtX2RvbWFpbiA9
ICJrQ0ZFcnJvckRvbWFpbldpblNvY2siOworICAgICAgICBtX2RvbWFpbiA9ICJrQ0ZFcnJvckRv
bWFpbldpblNvY2siX3M7CiAgICAgZWxzZQogICAgICAgICBtX2RvbWFpbiA9IGRvbWFpbjsKIApA
QCAtMTkwLDEzICsxOTAsMTMgQEAgUmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcihDRlN0cmVh
bUVycm9yIGVycm9yKQogCiAgICAgc3dpdGNoKGVycm9yLmRvbWFpbikgewogICAgIGNhc2Uga0NG
U3RyZWFtRXJyb3JEb21haW5DdXN0b206Ci0gICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJv
ckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0iTlNDdXN0b21FcnJvckRvbWFpbiJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpblBPU0lYOgotICAgICAg
ICBtX2RvbWFpbiA9ICJOU1BPU0lYRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJO
U1BPU0lYRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFt
RXJyb3JEb21haW5NYWNPU1N0YXR1czoKLSAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9z
OwogICAgICAgICBicmVhazsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQppbmRl
eCA0NTliZjJhNDJmOWUuLjZjZjA0OTE4MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1t
CkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZp
bGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1Jl
cEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0
ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0g
bV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkg
eworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmlj
ZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2Uu
dmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJl
cXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKaW5kZXggZTBlZWY2ODgwZjJiLi4wNzFiYjFhNDdiZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNh
dGVJbmZvQ3VybC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmlj
YXRlSW5mbzo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6
dmVyaWZpY2F0aW9uRXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlf
dmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVy
biBTdHJpbmcgeyBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVy
cm9yKSB9OwogfQogCiBDZXJ0aWZpY2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5m
bzo6bWFrZUNlcnRpZmljYXRlKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRC
LmNwcAppbmRleCA2MTM2NTMxYjViMWMuLjZiMTZmYzM0ZGU3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCkBAIC0zODIs
NyArMzgyLDcgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Q29va2llPj4gQ29va2llSmFyREI6OnNl
YXJjaENvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LAogCiAgICAgU3RyaW5nIHJlcXVlc3RQ
YXRoID0gcmVxdWVzdFVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocmVxdWVzdFBhdGgu
aXNFbXB0eSgpKQotICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIjsKKyAgICAgICAgcmVxdWVzdFBh
dGggPSAiLyJfczsKIAogICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlZ2lzdHJhYmxlRG9tYWluIHsg
cmVxdWVzdFVybCB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llVXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ29va2llVXRpbC5jcHAKaW5kZXggNmQzNDY4ZTQyMjI1Li4wNGU2NGNkMmM3YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGls
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRp
bC5jcHAKQEAgLTE4NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25z
dCBVUkwmIHVybCkKIAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwog
ICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAg
IHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNo
UG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3Np
dGlvbikKLSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAg
cmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnku
Y3BwCmluZGV4IDdiNDY4NTVhMDUxNS4uYTdhMTUyN2M4NmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAg
LTYxLDEwICs2MSwxMCBAQCBDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3Ry
aW5nJiB1cmwsIFJlc291cmNlSGFuZGxlKiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFz
ZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCht
X2Jhc2VuYW1lKTsKLSAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAg
IG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZp
bGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1lKTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQo
Ii5jb250ZW50Iik7CisgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7
CiB9CiAKIEN1cmxDYWNoZUVudHJ5Ojp+Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5
IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAh
PSBlbmQpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAg
aGVhZGVyRmllbGQuYXBwZW5kKCI6ICIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjog
Il9zKTsKICAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhl
YWRlckZpZWxkLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJf
cyk7CiAgICAgICAgIENTdHJpbmcgaGVhZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRp
bjEoKTsKICAgICAgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVy
RmllbGRMYXRpbjEuZGF0YSgpLCBoZWFkZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAg
IG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bENhY2hlTWFuYWdlci5jcHAKaW5kZXggM2JkMmNjNzQyODZlLi43MDJjNWIzMWEwMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENh
Y2hlTWFuYWdlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBDdXJsQ2FjaGVNYW5hZ2VyOjpz
ZXRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSkKICAgICAgICAgfQogICAg
IH0KIAotICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIik7CisgICAgbV9jYWNoZURpci5hcHBlbmQo
Ii8iX3MpOwogCiAgICAgbV9kaXNhYmxlZCA9IGZhbHNlOwogICAgIGxvYWRJbmRleCgpOwpAQCAt
MTM4LDggKzEzOCw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2F2ZUluZGV4KCkKICAgICBp
ZiAobV9kaXNhYmxlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGluZGV4RmlsZVBh
dGgobV9jYWNoZURpcik7Ci0gICAgaW5kZXhGaWxlUGF0aC5hcHBlbmQoImluZGV4LmRhdCIpOwor
ICAgIGF1dG8gaW5kZXhGaWxlUGF0aCA9IG1ha2VTdHJpbmcobV9jYWNoZURpciwgImluZGV4LmRh
dCJfcyk7CiAKICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGluZGV4RmlsZVBhdGgpOwogICAg
IEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBpbmRleEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShpbmRleEZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwCmluZGV4IDcyOGNiODhiZmIwNS4uM2U1ZDZmMWM5MGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQy
OSwyNiArNDI5LDIzIEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1
ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBTdHJpbmcgaGVhZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhh
dCB0aGlzIGhlYWRlciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQo
IjsiKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQo
dmFsdWUpOworICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsK
ICAgICB9CiAKLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVx
dWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92
ZVJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRl
ciB3aXRoIG5vIGNvbnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRp
c2FibGVkLiAKLSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoi
KTsKLQotICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9
IG1ha2VTdHJpbmcobmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUo
aGVhZGVyKSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwLi5iMDkyNTZiMTk4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsRG93bmxvYWQuY3BwCkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6Ondp
bGxTZW5kUmVxdWVzdCgpCiAgICAgbmV3UmVxdWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlm
IChzaG91bGRSZWRpcmVjdEFzR0VUKG5ld1JlcXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAg
ICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNl
dEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgIG5ld1JlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1
ZXN0LmNwcAppbmRleCAyYmFmOTQyZGJjOTYuLjdlYjA4NzBkNzk3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC01
NTksNyArNTU5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBQVVQoKQogICAgIG1fY3VybEhh
bmRsZS0+ZW5hYmxlSHR0cFB1dFJlcXVlc3QoKTsKIAogICAgIC8vIERpc2FibGUgdGhlIEV4cGVj
dDogMTAwIGNvbnRpbnVlIGhlYWRlcgotICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhl
YWRlcigiRXhwZWN0Iik7CisgICAgbV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJF
eHBlY3QiX3MpOwogCiAgICAgYXV0byBlbGVtZW50U2l6ZSA9IG1fZm9ybURhdGFTdHJlYW0uZWxl
bWVudFNpemUoKTsKICAgICBpZiAoIWVsZW1lbnRTaXplKQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OnNldHVwU2VuZERhdGEoYm9vbCBmb3JQdXRNZXRob2QpCiB7CiAgICAg
Ly8gY3VybCBndWVzc2VzIHRoYXQgd2Ugd2FudCBjaHVua2VkIGVuY29kaW5nIGFzIGxvbmcgYXMg
d2Ugc3BlY2lmeSB0aGUgaGVhZGVyCiAgICAgaWYgKG1fZm9ybURhdGFTdHJlYW0uc2hvdWxkVXNl
Q2h1bmtUcmFuc2ZlcigpKQotICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFk
ZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIik7CisgICAgICAgIG1fY3VybEhhbmRsZS0+
YXBwZW5kUmVxdWVzdEhlYWRlcigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWQiX3MpOwogICAg
IGVsc2UgewogICAgICAgICBpZiAoZm9yUHV0TWV0aG9kKQogICAgICAgICAgICAgbV9jdXJsSGFu
ZGxlLT5zZXRJbkZpbGVTaXplTGFyZ2Uoc3RhdGljX2Nhc3Q8Y3VybF9vZmZfdD4obV9mb3JtRGF0
YVN0cmVhbS50b3RhbFNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKaW5kZXggMzg5N2UwMWM2ZDA3Li5iM2FiOGQxY2I2MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJj
ZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVl
c3QsIEN1CiAgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNo
ZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAg
IGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAg
ICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNl
MDczNS4uNGY4OWQ5NzNlYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CkBAIC00MywxMyArNDMsMTMgQEAgc3RhdGljIFN0cmluZyBkZWZhdWx0Q29va2llSmFyUGF0aCgp
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1bHRGaWxlTmFtZSA9ICJjb29raWUuamFyLmRi
IjsKICAgICBjaGFyKiBjb29raWVKYXJQYXRoID0gZ2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFU
SCIpOwogICAgIGlmIChjb29raWVKYXJQYXRoKQotICAgICAgICByZXR1cm4gY29va2llSmFyUGF0
aDsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llSmFyUGF0aCk7CiAKICNp
ZiBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwg
ZGVmYXVsdEZpbGVOYW1lKTsKICNlbHNlCiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI0MTcKLSAgICByZXR1cm4gZGVmYXVsdEZpbGVOYW1l
OworICAgIHJldHVybiBTdHJpbmcgeyBkZWZhdWx0RmlsZU5hbWUgfTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAKaW5kZXggMzYxNTA5ZDc0ZGM5Li5kMzliNjViNDQwZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAK
QEAgLTM0MCwxMiArMzQwLDEyIEBAIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q2VydGlmaWNhdGVT
dW1tYXJ5PiBjcmVhdGVTdW1tYXJ5SW5mbyhjb25zdCBWZWN0b3I8dWludDhfCiAKIFN0cmluZyB0
bHNWZXJzaW9uKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfZ2V0X3ZlcnNpb24o
c3NsKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgU1NMX2dldF92ZXJzaW9uKHNzbCkgfTsKIH0KIAog
U3RyaW5nIHRsc0NpcGhlck5hbWUoY29uc3QgU1NMKiBzc2wpCiB7Ci0gICAgcmV0dXJuIFNTTF9D
SVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKTsKKyAgICByZXR1cm4g
U3RyaW5nIHsgU1NMX0NJUEhFUl9nZXRfbmFtZShTU0xfZ2V0X2N1cnJlbnRfY2lwaGVyKHNzbCkp
IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAppbmRleCBiNzlhNDczMTVlYzguLmY5YjAwZTE4
NDUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1
YmxpY1N1ZmZpeEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5n
IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5JbnRlcm5hbChjb25zdCBwc2xfY3R4X3QqIHBz
bCwgY29uc3QgYwogewogICAgIC8vIHBzbF9yZWdpc3RlcmFibGVfZG9tYWluIHJldHVybnMgYSBw
b2ludGVyIHRvIGRvbWFpbidzIGRhdGEgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBwcml2YXRlIGRv
bWFpbgogICAgIGlmIChjb25zdCBjaGFyKiB0b3BQcml2YXRlRG9tYWluID0gcHNsX3JlZ2lzdHJh
YmxlX2RvbWFpbihwc2wsIGRvbWFpbikpCi0gICAgICAgIHJldHVybiB0b3BQcml2YXRlRG9tYWlu
OworICAgICAgICByZXR1cm4gU3RyaW5nIHsgdG9wUHJpdmF0ZURvbWFpbiB9OwogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggZDFkN2I2NmVhYTc4Li4xNDVmZjY4ZDU4ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlRXJyb3IuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQg
ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgY3VybEVycm9yRG9tYWluOworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWwgY3VybEVycm9yRG9tYWluOwogCiAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnMgeyAwIH07
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlRXJyb3JDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKaW5kZXggOWUzZTE1NjFiNTI5Li45OWQwNmEyN2EwMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L1Jlc291cmNlRXJyb3JDdXJsLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNvbnN0IGNoYXIqIGNvbnN0IFJlc291cmNlRXJyb3I6OmN1cmxFcnJvckRvbWFp
biA9ICJDdXJsRXJyb3JEb21haW4iOworQVNDSUlMaXRlcmFsIFJlc291cmNlRXJyb3I6OmN1cmxF
cnJvckRvbWFpbiA9ICJDdXJsRXJyb3JEb21haW4iX3M7CiAKIFJlc291cmNlRXJyb3IgUmVzb3Vy
Y2VFcnJvcjo6aHR0cEVycm9yKGludCBlcnJvckNvZGUsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
VHlwZSB0eXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAppbmRleCA5ZWRiZDJlODFhN2YuLmRl
YTBkYWM0YmQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0
VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBj
cm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdS
ZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRU
UENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5kZXggM2Qx
YmQxMjQ5YjdkLi41YmY4ZDY4MDExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcApAQCAt
ODksMTMgKzg5LDEzIEBAIFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoY29uc3Qg
Q3VybFJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIHN3aXRjaCAocmVzcG9uc2UuaHR0cFZlcnNp
b24pIHsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMDoKLSAgICAgICAgc2V0SFRUUFZl
cnNpb24oIkhUVFAvMS4wIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCJfcyk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMV8xOgotICAgICAg
ICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjEiKTsKKyAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhU
VFAvMS4xIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8y
XzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiKTsKKyAgICAgICAgc2V0SFRUUFZl
cnNpb24oIkhUVFAvMiJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZF
UlNJT05fTk9ORToKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCmlu
ZGV4IDBmZTY1YTI5ZTYzNi4uYzIwZWM4ZTcyMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNs
aWVudC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKCkgeyB9CiAgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzUGFzc3dvcmRFbnRyeSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKCIiKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihlbXB0
eVN0cmluZygpKTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IGZhYjU3NDIzM2ZlMC4uYThkMjM3MDY0OGQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAg
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGRvbWFpbiwgQ29tcGxldGkKICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llU3RvcmFnZSgpKSk7CiAgICAgZm9yIChh
dXRvKiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVt
KSkgewogICAgICAgICBHVW5pcXVlUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxT
b3VwQ29va2llKj4oaXRlbS0+ZGF0YSkpOwotICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46
OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdl
dCgpKSkgPT0gZG9tYWluKSB7CisgICAgICAgIGlmIChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbUhvc3QoU3RyaW5nIHsgc291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUu
Z2V0KCkpIH0pID09IGRvbWFpbikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmlu
ZGV4IDJjZThhMDNmZGYwMi4uMzRhNTdlNWMyYzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKQEAg
LTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgaW50IHN0YXR1
c0NvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uUGhyYXNlKQogewotICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBzdGF0dXND
b2RlLCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pIH0sIHN0
YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFzZSk7CiB9CiAKIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBHRXJyb3IqIGVy
cm9yKQpAQCAtNjEsMjIgKzYxLDIyIEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6YXV0
aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobWVz
c2FnZSk7CiAjaWYgVVNFKFNPVVAyKQotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtf
dG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBtZXNzYWdlLT5zdGF0dXNfY29kZSwK
KyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X0hUVFBfRVJST1JfRE9NQUlOKSB9LCBtZXNzYWdlLT5zdGF0dXNfY29kZSwKICAgICAgICAgc291
cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpKSwgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiAjZWxzZQotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIHNvdXBfbWVzc2FnZV9n
ZXRfc3RhdHVzKG1lc3NhZ2UpLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7IGdf
cXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUikgfSwgc291cF9tZXNzYWdlX2dldF9z
dGF0dXMobWVzc2FnZSksCiAgICAgICAgIHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2UpLCBT
dHJpbmc6OmZyb21VVEY4KHNvdXBfbWVzc2FnZV9nZXRfcmVhc29uX3BocmFzZShtZXNzYWdlKSkp
OwogI2VuZGlmCiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJv
cihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIEdFcnJvciogZXJyb3IpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2Rl
LCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0bHNFcnJvcihjb25z
dCBVUkwmIGZhaWxpbmdVUkwsIHVuc2lnbmVkIHRsc0Vycm9ycywgR1Rsc0NlcnRpZmljYXRlKiBj
ZXJ0aWZpY2F0ZSkKIHsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoZ19xdWFya190
b19zdHJpbmcoR19UTFNfRVJST1IpLCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUsIGZhaWxp
bmdVUkwsIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOworICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhHX1RMU19FUlJPUikgfSwg
R19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1bmFjY2VwdGFibGVUTFND
ZXJ0aWZpY2F0ZSgpKTsKICAgICByZXNvdXJjZUVycm9yLnNldFRMU0Vycm9ycyh0bHNFcnJvcnMp
OwogICAgIHJlc291cmNlRXJyb3Iuc2V0Q2VydGlmaWNhdGUoY2VydGlmaWNhdGUpOwogICAgIHJl
dHVybiByZXNvdXJjZUVycm9yOwpAQCAtODgsOSArODgsOSBAQCBSZXNvdXJjZUVycm9yIFJlc291
cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiAgICAgLy8gbmV0
d29ya2luZyBlcnJvcnMgZnJvbSB0aGF0IGZpbGUgc2hvdWxkIGJlIG1vdmVkIGhlcmUuCiAKICAg
ICAvLyBVc2UgdGhlIHNhbWUgdmFsdWUgYXMgaW4gTlNVUkxFcnJvci5oCi0gICAgc3RhdGljIGNv
bnN0IGludCB0aW1lb3V0RXJyb3IgPSAtMTAwMTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29u
c3QgIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciI7Ci0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3Qg
dGltZWQgb3V0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCk7CisgICAgc3RhdGljIGNv
bnN0ZXhwciBpbnQgdGltZW91dEVycm9yID0gLTEwMDE7CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciJfczsKKyAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVz
dCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOwogfQogCiB2b2lk
IFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJv
ciYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRleCA5YjdiNGIzMmQ3NTcuLjg4
OGRiN2Q4ZjMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IFJlc291cmNlUmVzcG9uc2U6OlJlc291cmNlUmVzcG9uc2UoU291cE1lc3NhZ2UqIHNvdXBNZXNz
YWdlLCBjb25zdCBDU3RyaW5nJiBzbmlmCiAgICAgfQogCiAgICAgbV9odHRwU3RhdHVzQ29kZSA9
IHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKHNvdXBNZXNzYWdlKTsKLSAgICBzZXRIVFRQU3RhdHVz
VGV4dChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2Uoc291cE1lc3NhZ2UpKTsKKyAgICBz
ZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2Uo
c291cE1lc3NhZ2UpIH0pOwogCiAgICAgbV9jZXJ0aWZpY2F0ZSA9IHNvdXBfbWVzc2FnZV9nZXRf
dGxzX3BlZXJfY2VydGlmaWNhdGUoc291cE1lc3NhZ2UpOwogICAgIG1fdGxzRXJyb3JzID0gc291
cF9tZXNzYWdlX2dldF90bHNfcGVlcl9jZXJ0aWZpY2F0ZV9lcnJvcnMoc291cE1lc3NhZ2UpOwpA
QCAtNjYsOSArNjYsOSBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBN
ZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgogICAgIFN0cmluZyBjb250
ZW50VHlwZTsKICAgICBjb25zdCBjaGFyKiBvZmZpY2lhbFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19nZXRfb25lKHJlc3BvbnNlSGVhZGVycywgIkNvbnRlbnQtVHlwZSIpOwogICAgIGlmICgh
c25pZmZlZENvbnRlbnRUeXBlLmlzTnVsbCgpICYmIG1faHR0cFN0YXR1c0NvZGUgIT0gU09VUF9T
VEFUVVNfTk9UX01PRElGSUVEICYmIHNuaWZmZWRDb250ZW50VHlwZSAhPSBvZmZpY2lhbFR5cGUp
Ci0gICAgICAgIGNvbnRlbnRUeXBlID0gc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKTsKKyAgICAg
ICAgY29udGVudFR5cGUgPSBTdHJpbmcgeyBzbmlmZmVkQ29udGVudFR5cGUuZGF0YSgpIH07CiAg
ICAgZWxzZQotICAgICAgICBjb250ZW50VHlwZSA9IG9mZmljaWFsVHlwZTsKKyAgICAgICAgY29u
dGVudFR5cGUgPSBTdHJpbmcgeyBvZmZpY2lhbFR5cGUgfTsKICAgICBzZXRNaW1lVHlwZShleHRy
YWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgaWYgKG1fbWltZVR5
cGUuaXNFbXB0eSgpICYmIG1faHR0cFN0YXR1c0NvZGUgIT0gU09VUF9TVEFUVVNfTk9UX01PRElG
SUVEKQogICAgICAgICBzZXRNaW1lVHlwZShNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBh
dGgobV91cmwucGF0aCgpLnRvU3RyaW5nKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IGFhMDBhNGFkNmY1Yi4uYTQ0ZTQzNmI2NWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAK
QEAgLTQzNCw4ICs0MzQsOCBAQCB2b2lkIExvY2FsZVdpbjo6aW5pdGlhbGl6ZUxvY2FsZURhdGEo
KQogICAgIFN0cmluZyBuZWdhdGl2ZVN1ZmZpeCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgc3dpdGNo
IChuZWdhdGl2ZUZvcm1hdCkgewogICAgIGNhc2UgTmVnYXRpdmVGb3JtYXRQYXJlbnRoZXNpczoK
LSAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCI7Ci0gICAgICAgIG5lZ2F0aXZlU3VmZml4ID0g
IikiOworICAgICAgICBuZWdhdGl2ZVByZWZpeCA9ICIoIl9zOworICAgICAgICBuZWdhdGl2ZVN1
ZmZpeCA9ICIpIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0U2ln
blNwYWNlUHJlZml4OgogICAgICAgICBuZWdhdGl2ZVByZWZpeCA9IG5lZ2F0aXZlU2lnbiArICIg
IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4IGFh
ZTZjOTlkZDA1Mi4uMDVhMGQxMjU2YTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9LZXlFdmVudFdpbi5jcHAKQEAgLTQ2LDEwMSArNDYsMTAxIEBAIHN0YXRpYyBTdHJpbmcga2V5
SWRlbnRpZmllckZvcldpbmRvd3NLZXlDb2RlKHVuc2lnbmVkIHNob3J0IGtleUNvZGUpCiB7CiAg
ICAgc3dpdGNoIChrZXlDb2RlKSB7CiAgICAgICAgIGNhc2UgVktfTUVOVToKLSAgICAgICAgICAg
IHJldHVybiAiQWx0IjsKKyAgICAgICAgICAgIHJldHVybiAiQWx0Il9zOwogICAgICAgICBjYXNl
IFZLX0NPTlRST0w6Ci0gICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiOworICAgICAgICAgICAg
cmV0dXJuICJDb250cm9sIl9zOwogICAgICAgICBjYXNlIFZLX1NISUZUOgotICAgICAgICAgICAg
cmV0dXJuICJTaGlmdCI7CisgICAgICAgICAgICByZXR1cm4gIlNoaWZ0Il9zOwogICAgICAgICBj
YXNlIFZLX0NBUElUQUw6Ci0gICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIjsKKyAgICAgICAg
ICAgIHJldHVybiAiQ2Fwc0xvY2siX3M7CiAgICAgICAgIGNhc2UgVktfTFdJTjoKICAgICAgICAg
Y2FzZSBWS19SV0lOOgotICAgICAgICAgICAgcmV0dXJuICJXaW4iOworICAgICAgICAgICAgcmV0
dXJuICJXaW4iX3M7CiAgICAgICAgIGNhc2UgVktfQ0xFQVI6Ci0gICAgICAgICAgICByZXR1cm4g
IkNsZWFyIjsKKyAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiX3M7CiAgICAgICAgIGNhc2UgVktf
RE9XTjoKLSAgICAgICAgICAgIHJldHVybiAiRG93biI7CisgICAgICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgICAgIGNhc2UgVktfRU5EOgotICAgICAgICAg
ICAgcmV0dXJuICJFbmQiOworICAgICAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAgIC8v
ICJFbnRlciIKICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAgICByZXR1cm4gIkVu
dGVyIjsKKyAgICAgICAgICAgIHJldHVybiAiRW50ZXIiX3M7CiAgICAgICAgIGNhc2UgVktfRVhF
Q1VURToKLSAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSI7CisgICAgICAgICAgICByZXR1cm4g
IkV4ZWN1dGUiX3M7CiAgICAgICAgIGNhc2UgVktfRjE6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjI6Ci0gICAg
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIiX3M7CiAgICAgICAg
IGNhc2UgVktfRjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYzIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjMiX3M7CiAgICAgICAgIGNhc2UgVktfRjQ6Ci0gICAgICAgICAgICByZXR1cm4gIkY0IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgICAgIGNhc2UgVktfRjU6Ci0gICAgICAg
ICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjUiX3M7CiAgICAgICAgIGNh
c2UgVktfRjY6Ci0gICAgICAgICAgICByZXR1cm4gIkY2IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjYiX3M7CiAgICAgICAgIGNhc2UgVktfRjc6Ci0gICAgICAgICAgICByZXR1cm4gIkY3IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgICAgIGNhc2UgVktfRjg6Ci0gICAgICAgICAg
ICByZXR1cm4gIkY4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjgiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjk6Ci0gICAgICAgICAgICByZXR1cm4gIkY5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjki
X3M7CiAgICAgICAgIGNhc2UgVktfRjEwOgotICAgICAgICAgICAgcmV0dXJuICJGMTEiOworICAg
ICAgICAgICAgcmV0dXJuICJGMTEiX3M7CiAgICAgICAgIGNhc2UgVktfRjEyOgotICAgICAgICAg
ICAgcmV0dXJuICJGMTIiOworICAgICAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgICAgIGNh
c2UgVktfRjEzOgotICAgICAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICAgICAgcmV0dXJu
ICJGMTMiX3M7CiAgICAgICAgIGNhc2UgVktfRjE0OgotICAgICAgICAgICAgcmV0dXJuICJGMTQi
OworICAgICAgICAgICAgcmV0dXJuICJGMTQiX3M7CiAgICAgICAgIGNhc2UgVktfRjE1OgotICAg
ICAgICAgICAgcmV0dXJuICJGMTUiOworICAgICAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAg
ICAgIGNhc2UgVktfRjE2OgotICAgICAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICAgICAg
cmV0dXJuICJGMTYiX3M7CiAgICAgICAgIGNhc2UgVktfRjE3OgotICAgICAgICAgICAgcmV0dXJu
ICJGMTciOworICAgICAgICAgICAgcmV0dXJuICJGMTciX3M7CiAgICAgICAgIGNhc2UgVktfRjE4
OgotICAgICAgICAgICAgcmV0dXJuICJGMTgiOworICAgICAgICAgICAgcmV0dXJuICJGMTgiX3M7
CiAgICAgICAgIGNhc2UgVktfRjE5OgotICAgICAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAg
ICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgICAgIGNhc2UgVktfRjIwOgotICAgICAgICAgICAg
cmV0dXJuICJGMjAiOworICAgICAgICAgICAgcmV0dXJuICJGMjAiX3M7CiAgICAgICAgIGNhc2Ug
VktfRjIxOgotICAgICAgICAgICAgcmV0dXJuICJGMjEiOworICAgICAgICAgICAgcmV0dXJuICJG
MjEiX3M7CiAgICAgICAgIGNhc2UgVktfRjIyOgotICAgICAgICAgICAgcmV0dXJuICJGMjIiOwor
ICAgICAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgICAgIGNhc2UgVktfRjIzOgotICAgICAg
ICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICAgICAgcmV0dXJuICJGMjMiX3M7CiAgICAgICAg
IGNhc2UgVktfRjI0OgotICAgICAgICAgICAgcmV0dXJuICJGMjQiOworICAgICAgICAgICAgcmV0
dXJuICJGMjQiX3M7CiAgICAgICAgIGNhc2UgVktfSEVMUDoKLSAgICAgICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgICAgIGNhc2UgVktfSE9N
RToKLSAgICAgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgICAgICByZXR1cm4gIkhvbWUi
X3M7CiAgICAgICAgIGNhc2UgVktfSU5TRVJUOgotICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQi
OworICAgICAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgICAgIGNhc2UgVktfTEVGVDoK
LSAgICAgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgICAgICByZXR1cm4gIkxlZnQiX3M7
CiAgICAgICAgIGNhc2UgVktfTkVYVDoKLSAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iOwor
ICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICAgICAgY2FzZSBWS19QUklPUjoK
LSAgICAgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZVVw
Il9zOwogICAgICAgICBjYXNlIFZLX1BBVVNFOgotICAgICAgICAgICAgcmV0dXJuICJQYXVzZSI7
CisgICAgICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgICAgICBjYXNlIFZLX1NOQVBTSE9U
OgotICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgICAgICByZXR1cm4g
IlByaW50U2NyZWVuIl9zOwogICAgICAgICBjYXNlIFZLX1JJR0hUOgotICAgICAgICAgICAgcmV0
dXJuICJSaWdodCI7CisgICAgICAgICAgICByZXR1cm4gIlJpZ2h0Il9zOwogICAgICAgICBjYXNl
IFZLX1NDUk9MTDoKLSAgICAgICAgICAgIHJldHVybiAiU2Nyb2xsIjsKKyAgICAgICAgICAgIHJl
dHVybiAiU2Nyb2xsIl9zOwogICAgICAgICBjYXNlIFZLX1NFTEVDVDoKLSAgICAgICAgICAgIHJl
dHVybiAiU2VsZWN0IjsKKyAgICAgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgICAgICBj
YXNlIFZLX1VQOgotICAgICAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgICAgICByZXR1cm4g
IlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdG
LgogICAgICAgICBjYXNlIFZLX0RFTEVURToKLSAgICAgICAgICAgIHJldHVybiAiVSswMDdGIjsK
KyAgICAgICAgICAgIHJldHVybiAiVSswMDdGIl9zOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlUrIiwgaGV4KHRvQVNDSUlVcHBlcihrZXlDb2RlKSwg
NCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6
ZWRTdHJpbmdzV2luLmNwcAppbmRleCBiOTM4NzE0NjY1M2EuLjgwN2Q1NzIzNDMwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNw
cApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxvYWRG
aWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9hZCI7
CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJldHVy
biAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXgg
YjZiMDc2MzdjZDU2Li4yOGI1NGVmNDdhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBAQCBT
dHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBz
dHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFwOwog
ICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGggaW5p
dGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFpbiIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwgInRl
eHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7
Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3ht
bCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1s
Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlvbi94
LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uvc3Zn
K3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJpbWFn
ZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2UvYm1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgid21sIiwgInRleHQvdm5kLndhcC53bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3
bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIm00YSIsICJhdWRpby94LW00YSIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCJf
cywgInRleHQvcGxhaW4iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywgImFw
cGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJhcHBs
aWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiX3Ms
ICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRleHQv
aHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1sIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9zLCAidGV4dC94c2wiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwreG1s
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9yc3Mr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciX3Ms
ICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9zLCAi
aW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAiaW1h
Z2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdlL2pw
ZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImljbyJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCJf
cywgInRleHQvdm5kLndhcC53bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMi
X3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9zKTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFnZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3MpOwogI2VuZGlmCiAgICAgfQogICAgIFN0cmluZyBy
ZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCAwYjI1ZmY2YzM4YzguLjY2ODVlZDk5MzY0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAt
MjQwLDkgKzI0MCw5IEBAIGJvb2wgUGFzdGVib2FyZDo6aGFzRGF0YSgpCiBzdGF0aWMgdm9pZCBh
ZGRNaW1lVHlwZXNGb3JGb3JtYXQoTGlzdEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0cywgY29uc3Qg
Rk9STUFURVRDJiBmb3JtYXQpCiB7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxGb3Jt
YXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHVybFdGb3JtYXQoKS0+Y2ZGb3Jt
YXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgIHJlc3Vs
dHMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKICAgICBpZiAoZm9ybWF0LmNmRm9ybWF0ID09IHBs
YWluVGV4dFdGb3JtYXQoKS0+Y2ZGb3JtYXQgfHwgZm9ybWF0LmNmRm9ybWF0ID09IHBsYWluVGV4
dEZvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iKTsK
KyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvcGxhaW4iX3MpOwogfQogCiBzdGQ6Om9wdGlvbmFs
PFBhc3RlYm9hcmRDdXN0b21EYXRhPiBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZEN1c3RvbURh
dGEoKQpAQCAtMjc1LDkgKzI3NSw5IEBAIFZlY3RvcjxTdHJpbmc+IFBhc3RlYm9hcmQ6OnR5cGVz
U2FmZUZvckJpbmRpbmdzKGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgICAgICAgICAgZG9tUGFz
dGVib2FyZFR5cGVzLmFkZCh0eXBlKTsKICAgICB9CiAKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKCJ0ZXh0L3BsYWluIik7Ci0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmkt
bGlzdCIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvaHRtbCIpOworICAgIGRv
bVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iX3MpOworICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOworICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvaHRtbCJfcyk7CiAKICAgICByZXR1cm4gY29weVRvVmVjdG9yKGRvbVBhc3RlYm9hcmRU
eXBlcyk7CiB9CkBAIC0zMjcsNyArMzI3LDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRPcmln
aW4oKQogU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBlKQog
ewogICAgIGlmICghbV9kYXRhT2JqZWN0ICYmIG1fZHJhZ0RhdGFNYXAuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgQ2xp
cGJvYXJkRGF0YVR5cGUgZGF0YVR5cGUgPSBjbGlwYm9hcmRUeXBlRnJvbU1JTUVUeXBlKHR5cGUp
OwogICAgIGlmIChkYXRhVHlwZSA9PSBDbGlwYm9hcmREYXRhVHlwZVRleHQpCkBAIC0zNDEsNyAr
MzQxLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29uc3QgU3RyaW5nJiB0eXBl
KQogICAgICAgICByZXR1cm4gbV9kYXRhT2JqZWN0ID8gZ2V0Q0ZIVE1MKG1fZGF0YU9iamVjdC5n
ZXQoKSkgOiBnZXRDRkhUTUwoJm1fZHJhZ0RhdGFNYXApOwogICAgIH0KIAotICAgIHJldHVybiAi
IjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogU3RyaW5nIFBhc3RlYm9hcmQ6OnJl
YWRTdHJpbmdJbkN1c3RvbURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKQpAQCAtNDI1LDcgKzQyNSw3
IEBAIHN0YXRpYyBib29sIHdyaXRlVVJMKFdDRGF0YU9iamVjdCAqZGF0YSwgY29uc3QgVVJMJiB1
cmwsIFN0cmluZyB0aXRsZSwgYm9vbCB3aXRoCiAKICAgICBpZiAod2l0aEhUTUwpIHsKICAgICAg
ICAgVmVjdG9yPGNoYXI+IGNmaHRtbERhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRv
TWFya3VwKHVybCwgdGl0bGUpLCAiIiwgY2ZodG1sRGF0YSk7CisgICAgICAgIG1hcmt1cFRvQ0ZI
VE1MKHVybFRvTWFya3VwKHVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBjZmh0bWxEYXRhKTsK
ICAgICAgICAgbWVkaXVtLmhHbG9iYWwgPSBjcmVhdGVHbG9iYWxEYXRhKGNmaHRtbERhdGEpOwog
ICAgICAgICBpZiAobWVkaXVtLmhHbG9iYWwgJiYgRkFJTEVEKGRhdGEtPlNldERhdGEoaHRtbEZv
cm1hdCgpLCAmbWVkaXVtLCBUUlVFKSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUobWVkaXVt
LmhHbG9iYWwpOwpAQCAtNjkyLDcgKzY5Miw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxU
b0RhdGFPYmplY3QoY29uc3QgVVJMJiBrdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlU3RyKQogICAg
IFN0cmluZyB1cmwgPSBrdXJsLnN0cmluZygpOwogICAgIEFTU0VSVCh1cmwuaXNBbGxBU0NJSSgp
KTsgLy8gVVJMOjpzdHJpbmcoKSBpcyBVUkwgZW5jb2RlZC4KIAotICAgIFN0cmluZyBmc1BhdGgg
PSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIiwgdHJ1
ZSk7CisgICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJs
LCB0aXRsZVN0ciwgIi5VUkwiX3MsIHRydWUpOwogICAgIFN0cmluZyBjb250ZW50U3RyaW5nKCJb
SW50ZXJuZXRTaG9ydGN1dF1cclxuVVJMPSIgKyB1cmwgKyAiXHJcbiIpOwogICAgIENTdHJpbmcg
Y29udGVudCA9IGNvbnRlbnRTdHJpbmcubGF0aW4xKCk7CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHBhc3RlYm9hcmRVUkwp
CiAgICAgLy8gd3JpdGUgdG8gY2xpcGJvYXJkIGluIGZvcm1hdCBDRl9IVE1MIHRvIGJlIGFibGUg
dG8gcGFzdGUgaW50byBjb250ZW50ZWRpdGFibGUgYXJlYXMgYXMgYSBsaW5rCiAgICAgaWYgKDo6
T3BlbkNsaXBib2FyZChtX293bmVyKSkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAg
ICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxl
KSwgIiIsIGRhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cChwYXN0ZWJv
YXJkVVJMLnVybCwgdGl0bGUpLCBlbXB0eVN0cmluZygpLCBkYXRhKTsKICAgICAgICAgSEdMT0JB
TCBjYkRhdGEgPSBjcmVhdGVHbG9iYWxEYXRhKGRhdGEpOwogICAgICAgICBpZiAoITo6U2V0Q2xp
cGJvYXJkRGF0YShIVE1MQ2xpcGJvYXJkRm9ybWF0LCBjYkRhdGEpKQogICAgICAgICAgICAgOjpH
bG9iYWxGcmVlKGNiRGF0YSk7CkBAIC04NDAsNyArODQwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQb2xpY3ks
IHN0ZDoKICAgICBpZiAoOjpJc0NsaXBib2FyZEZvcm1hdEF2YWlsYWJsZShDRl9URVhUKSAmJiA6
Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgaWYgKEhBTkRMRSBjYkRhdGEgPSA6
OkdldENsaXBib2FyZERhdGEoQ0ZfVEVYVCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IHRyZWF0cyB0aGUgY2hhcmFjdGVycyBhcyBMYXRpbi0xLCBub3QgVVRGLTggb3IgZXZlbiBXaW5k
b3dzIExhdGluLTEuIElzIHRoYXQgdGhlIHJpZ2h0IGVuY29kaW5nPwotICAgICAgICAgICAgdGV4
dC50ZXh0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSk7CisgICAgICAg
ICAgICB0ZXh0LnRleHQgPSBTdHJpbmcgeyBzdGF0aWNfY2FzdDxjaGFyKj4oR2xvYmFsTG9jayhj
YkRhdGEpKSB9OwogICAgICAgICAgICAgR2xvYmFsVW5sb2NrKGNiRGF0YSk7CiAgICAgICAgICAg
ICA6OkNsb3NlQ2xpcGJvYXJkKCk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTAsNyArOTUw
LDcgQEAgc3RhdGljIEhHTE9CQUwgY3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcihjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJgogICAgICAgICBHbG9iYWxGcmVlKG1lbU9iaik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBleHRlbnNpb24uaW5zZXJ0KCIuIiwgMCk7
CisgICAgZXh0ZW5zaW9uLmluc2VydCgiLiJfcywgMCk7CiAgICAgZnNQYXRoID0gZmlsZVN5c3Rl
bVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHByZWZlcnJlZFRpdGxlLCBleHRlbnNpb24sIGZhbHNl
KTsKIAogICAgIGlmIChmc1BhdGgubGVuZ3RoKCkgPD0gMCkgewpAQCAtMTA5Niw3ICsxMDk2LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvV3JpdGFibGVEYXRhT2JqZWN0KGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGwKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJrdXAo
Y29uc3QgU3RyaW5nJiBtYXJrdXApCiB7CiAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgbWFy
a3VwVG9DRkhUTUwobWFya3VwLCAiIiwgZGF0YSk7CisgICAgbWFya3VwVG9DRkhUTUwobWFya3Vw
LCBlbXB0eVN0cmluZygpLCBkYXRhKTsKIAogICAgIFNUR01FRElVTSBtZWRpdW0geyB9OwogICAg
IG1lZGl1bS50eW1lZCA9IFRZTUVEX0hHTE9CQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU3lzdGVtSW5mby5jcHAKaW5kZXggNzBmNmMxZGNkZWJkLi5lMTY1MzNiZTJkYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3LDcg
QEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4NSwy
NSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdpbmRv
d3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9zOwog
ICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiOwor
ICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3MzXzE6
Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRvd3Mg
My4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6Ci0g
ICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5OCJf
czsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBXaW4g
OXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7CiAg
ICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAgICAg
cmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9
CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05UMykg
PyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFtZSAr
IFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsKKyAg
ICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9CiAK
IHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdPUkQg
cHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9rZW5G
b3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7IFdP
VzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNo
aXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICByZXR1
cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwogICAg
IGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lB
NjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAiOyBX
aW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCmlu
ZGV4IGNmYmZkNTRiNjI5YS4uNWQ3NTQ4OTc2YzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmgKQEAgLTQ3LDE3
ICs0NywxNyBAQCBjb25zdGV4cHIgc3RkOjphcnJheTxPcGVuWFJCdXR0b25UeXBlLCA3PiBvcGVu
WFJCdXR0b25UeXBlcyB7CiBpbmxpbmUgU3RyaW5nIGJ1dHRvblR5cGVUb1N0cmluZyhPcGVuWFJC
dXR0b25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpUcmlnZ2VyOiByZXR1cm4gInRyaWdnZXIiOwotICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6U3F1ZWV6ZTogcmV0dXJuICJzcXVlZXplIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRv
blR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRv
blR5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7Ci0gICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpUaHVtYnJlc3Q6IHJldHVybiAidGh1bWJyZXN0IjsKLSAgICBjYXNlIE9wZW5Y
UkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSI7Ci0gICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpCdXR0b25COiByZXR1cm4gImJ1dHRvbmIiOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIl9zOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6U3F1ZWV6ZTogcmV0dXJuICJzcXVlZXplIl9zOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJC
dXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siX3M7CisgICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnJlc3Q6IHJldHVybiAidGh1bWJyZXN0Il9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQTogcmV0dXJuICJidXR0b25hIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIl9zOwogCiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAi
IjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogfQogCkBAIC04MCwxMSAr
ODAsMTEgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQXhpc1R5cGUsIDI+IG9wZW5YUkF4
aXNUeXBlcyB7CiBpbmxpbmUgU3RyaW5nIGF4aXNUeXBldG9TdHJpbmcoT3BlblhSQXhpc1R5cGUg
dHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpU
b3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VGh1
bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIjsKKyAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpU
b3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCJfczsKKyAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpU
aHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3hyL29wZW54ci9PcGVuWFJVdGlscy5oCmluZGV4IDllY2M0OGE2YTZmMC4uNTYzNzJiYjM1NmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRp
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMu
aApAQCAtMTI3LDEyICsxMjcsMTIgQEAgaW5saW5lIFN0cmluZyBoYW5kZW5lc3NUb1N0cmluZyhY
UkhhbmRlZG5lc3MgaGFuZGVuZXNzKQogewogICAgIHN3aXRjaCAoaGFuZGVuZXNzKSB7CiAgICAg
Y2FzZSBYUkhhbmRlZG5lc3M6OkxlZnQ6Ci0gICAgICAgIHJldHVybiAibGVmdCI7CisgICAgICAg
IHJldHVybiAibGVmdCJfczsKICAgICBjYXNlIFhSSGFuZGVkbmVzczo6UmlnaHQ6Ci0gICAgICAg
IHJldHVybiAicmlnaHQiOworICAgICAgICByZXR1cm4gInJpZ2h0Il9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGE5MDkwZjdlYTFhMy4uMGNmNDI0ODI5ZDg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnRlcm5h
bHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldE91dHNp
ZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKLSAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0
UGFzc3dvcmQoIiIpOworICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5z
ZXRQYXNzd29yZChlbXB0eVN0cmluZygpKTsKICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyOjpzZXRD
bGllbnRGb3JUZXN0aW5nKG51bGxwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCmluZGV4IDUyZTI3Njc2M2NhMy4uODM1OTY5YmZhMzZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5jcHAKQEAgLTUzLDExICs1MywxMSBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5k
UmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JD
bwogICAgIGlmICghZXJyb3JPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJy
b3IgPSBlcnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSIpOworICAgIGF1dG8gZXJyb3IgPSBl
cnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSJfcyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3Ry
aW5nKCJtZXNzYWdlIik7CisgICAgYXV0byBlcnJvck1lc3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0
U3RyaW5nKCJtZXNzYWdlIl9zKTsKICAgICBpZiAoIWVycm9yTWVzc2FnZSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwIGIvU291cmNl
L1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCAwNTI0NmJhYTYzYzUuLmQ3MWY0ZDEwNTdlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL1Nlc3Npb24uY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBTZXNzaW9uOjpoYW5k
bGVVc2VyUHJvbXB0cyhGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRp
b25IYW4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gaXNT
aG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29s
ZWFuKCJyZXN1bHQiKTsKKyAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0g
cmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCJfcyk7CiAgICAgICAg
IGlmICghaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZykgewogICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVu
a25vd25FcnJvcikpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzU5LDEzICszNTksMTMgQEAg
dm9pZCBTZXNzaW9uOjpnZXRDdXJyZW50VVJMKEZ1bmN0aW9uPHZvaWQgKENvbW1hbmRSZXN1bHQm
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVz
cG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCIpOworICAgICAgICAgICAgYXV0byBicm93
c2luZ0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0
Il9zKTsKICAgICAgICAgICAgIGlmICghYnJvd3NpbmdDb250ZXh0KSB7CiAgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpF
cnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0
cmluZygidXJsIik7CisgICAgICAgICAgICBhdXRvIHVybCA9IGJyb3dzaW5nQ29udGV4dC0+Z2V0
U3RyaW5nKCJ1cmwiX3MpOwogICAgICAgICAgICAgaWYgKCF1cmwpIHsKICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVy
cm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODU1
LDE0ICs4NTUsMTQgQEAgdm9pZCBTZXNzaW9uOjpzZXRXaW5kb3dSZWN0KHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiB4LCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geSwgc3QKICAgICAgICAgcGFyYW1ldGVy
cy0+c2V0U3RyaW5nKCJoYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUo
KSk7CiAgICAgICAgIGlmICh4ICYmIHkpIHsKICAgICAgICAgICAgIGF1dG8gd2luZG93T3JpZ2lu
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0
RG91YmxlKCJ4IiwgeC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91
YmxlKCJ5IiwgeS52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91Ymxl
KCJ4Il9zLCB4LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUo
InkiX3MsIHkudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0ZXJzLT5zZXRPYmplY3QoIm9y
aWdpbiJfcywgV1RGTW92ZSh3aW5kb3dPcmlnaW4pKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
d2lkdGggJiYgaGVpZ2h0KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd1NpemUgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0
aCIsIHdpZHRoLnZhbHVlKCkpOwotICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJo
ZWlnaHQiLCBoZWlnaHQudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3Vi
bGUoIndpZHRoIl9zLCB3aWR0aC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0Il9zLCBoZWlnaHQudmFsdWUoKSk7CiAgICAgICAgICAgICBwYXJhbWV0
ZXJzLT5zZXRPYmplY3QoInNpemUiX3MsIFdURk1vdmUod2luZG93U2l6ZSkpOwogICAgICAgICB9
CiAgICAgICAgIG1faG9zdC0+c2VuZENvbW1hbmRUb0JhY2tlbmQoInNldFdpbmRvd0ZyYW1lT2ZC
cm93c2luZ0NvbnRleHQiX3MsIFdURk1vdmUocGFyYW1ldGVycyksIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoU2Vz
c2lvbkhvc3Q6OkNvbW1hbmRSZXNwb25zZSYmIHJlc3BvbnNlKSBtdXRhYmxlIHsKQEAgLTE3MTcs
MTIgKzE3MTcsMTIgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNGaWxlVXBsb2FkKGNvbnN0IFN0
cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW4KICAgICBhdXRvIGFyZ3VtZW50
cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3Jl
YXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29u
c3QgY2hhciBpc0ZpbGVVcGxvYWRTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRv
IGlzRmlsZVVwbG9hZFNjcmlwdCA9CiAgICAgICAgICJmdW5jdGlvbihlbGVtZW50KSB7IgogICAg
ICAgICAiICAgIGlmIChlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAm
JiBlbGVtZW50LnR5cGUgPT09ICdmaWxlJykiCiAgICAgICAgICIgICAgICAgIHJldHVybiB7ICdm
aWxlVXBsb2FkJzogdHJ1ZSwgJ211bHRpcGxlJzogZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ211bHRp
cGxlJykgfTsiCiAgICAgICAgICIgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiBmYWxzZSB9OyIK
LSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVycyA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJicm93c2lu
Z0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUoKSk7CkBA
IC0xODU1LDcgKzE4NTUsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0
IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgIGF1dG8gYXJn
dW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFyZ3VtZW50cy0+cHVzaFN0cmlu
ZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKIAotICAgIHN0YXRp
YyBjb25zdCBjaGFyIGlzRWRpdGFibGVTY3JpcHRbXSA9CisgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGlzRWRpdGFibGVTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAg
ICAgICAgIiAgICBpZiAoZWxlbWVudC5kaXNhYmxlZCB8fCBlbGVtZW50LnJlYWRPbmx5KSIKICAg
ICAgICAgIiAgICAgICAgcmV0dXJuIGZhbHNlOyIKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0
aW9uPHZvaWQgKENvbW1hbmRSCiAgICAgICAgICIgICAgICAgIHJldHVybiB0cnVlOyIKICAgICAg
ICAgIiAgICB9IgogICAgICAgICAiICAgIHJldHVybiBmYWxzZTsiCi0gICAgICAgICJ9IjsKKyAg
ICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0
ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9z
LCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMjE3MCw3ICsyMTcwLDcg
QEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQs
IGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgIGF1dG8gZmlsZVVwbG9hZFR5
cGUgPSBwYXJzZUVsZW1lbnRJc0ZpbGVVcGxvYWRSZXN1bHQocmVzdWx0LnJlc3VsdCgpKTsKICAg
ICAgICAgICAgIGlmICghZmlsZVVwbG9hZFR5cGUgfHwgY2FwYWJpbGl0aWVzKCkuc3RyaWN0Rmls
ZUludGVyYWN0YWJpbGl0eS52YWx1ZV9vcihmYWxzZSkpIHsKICAgICAgICAgICAgICAgICAvLyBG
SVhNRTogbW92ZSB0aGlzIHRvIGFuIGF0b20uCi0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIgZm9jdXNTY3JpcHRbXSA9CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGZvY3VzU2NyaXB0ID0KICAgICAgICAgICAgICAgICAgICAgImZ1bmN0aW9uIGZvY3VzKGVs
ZW1lbnQpIHsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IGRvYyA9IGVsZW1lbnQub3du
ZXJEb2N1bWVudCB8fCBlbGVtZW50OyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBsZXQgcHJl
dkFjdGl2ZUVsZW1lbnQgPSBkb2MuYWN0aXZlRWxlbWVudDsiCkBAIC0yMTg2LDcgKzIxODYsNyBA
QCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwg
Y29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAgICAgICAgICAgICAgICAiICAgICAgICBl
bGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGVsZW1lbnQudmFsdWUubGVuZ3RoLCBlbGVtZW50LnZh
bHVlLmxlbmd0aCk7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGlmIChlbGVtZW50Um9vdE5v
ZGUuYWN0aXZlRWxlbWVudCAhPT0gZWxlbWVudCkiCiAgICAgICAgICAgICAgICAgICAgICIgICAg
ICAgIHRocm93IHtuYW1lOiAnRWxlbWVudE5vdEludGVyYWN0YWJsZScsIG1lc3NhZ2U6ICdFbGVt
ZW50IGlzIG5vdCBmb2N1c2FibGUuJ307IgotICAgICAgICAgICAgICAgICAgICAifSI7CisgICAg
ICAgICAgICAgICAgICAgICJ9Il9zOwogCiAgICAgICAgICAgICAgICAgYXV0byBhcmd1bWVudHMg
PSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwpAQCAtMjUw
NiwxMyArMjUwNiwxMyBAQCBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbHRBdXRvbWF0aW9u
Q29va2llKGNvbnN0IFNlc3Npb246OkNvb2tpZSYgY29va2llKQogICAgIGF1dG8gY29va2llT2Jq
ZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmlu
ZygibmFtZSJfcywgY29va2llLm5hbWUpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJ2
YWx1ZSJfcywgY29va2llLnZhbHVlKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0
aCJfcywgY29va2llLnBhdGgudmFsdWVfb3IoIi8iKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIl9zKSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXRTdHJpbmcoImRvbWFpbiJfcywgY29va2llLmRvbWFpbi52YWx1ZV9vcihlbXB0
eVN0cmluZygpKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZWN1cmUiX3MsIGNv
b2tpZS5zZWN1cmUudmFsdWVfb3IoZmFsc2UpKTsKICAgICBjb29raWVPYmplY3QtPnNldEJvb2xl
YW4oImh0dHBPbmx5Il9zLCBjb29raWUuaHR0cE9ubHkudmFsdWVfb3IoZmFsc2UpKTsKICAgICBj
b29raWVPYmplY3QtPnNldEJvb2xlYW4oInNlc3Npb24iX3MsICFjb29raWUuZXhwaXJ5KTsKICAg
ICBjb29raWVPYmplY3QtPnNldERvdWJsZSgiZXhwaXJlcyJfcywgY29va2llLmV4cGlyeS52YWx1
ZV9vcigwKSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInNhbWVTaXRlIl9zLCBjb29r
aWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiKSk7CisgICAgY29va2llT2JqZWN0LT5zZXRTdHJp
bmcoInNhbWVTaXRlIl9zLCBjb29raWUuc2FtZVNpdGUudmFsdWVfb3IoIk5vbmUiX3MpKTsKICAg
ICByZXR1cm4gY29va2llT2JqZWN0OwogfQogCkBAIC0yNjkxLDM4ICsyNjkxLDM4IEBAIFNlc3Np
b246OklucHV0U291cmNlU3RhdGUmIFNlc3Npb246OmlucHV0U291cmNlU3RhdGUoY29uc3QgU3Ry
aW5nJiBpZCkKICAgICByZXR1cm4gbV9pbnB1dFN0YXRlVGFibGUuZW5zdXJlKGlkLCBbXSB7IHJl
dHVybiBJbnB1dFNvdXJjZVN0YXRlKCk7IH0pLml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotc3RhdGlj
IGNvbnN0IGNoYXIqIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1
dFNvdXJjZSkKK3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvblNvdXJjZVR5cGUoY29uc3Qg
SW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQogewogICAgIHN3aXRjaCAoaW5wdXRTb3VyY2UudHlw
ZSkgewogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6Ok5vbmU6Ci0gICAgICAgIHJldHVybiAi
TnVsbCI7CisgICAgICAgIHJldHVybiAiTnVsbCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpU
eXBlOjpQb2ludGVyOgogICAgICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnBvaW50ZXJUeXBlLnZh
bHVlX29yKFBvaW50ZXJUeXBlOjpNb3VzZSkpIHsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6
TW91c2U6Ci0gICAgICAgICAgICByZXR1cm4gIk1vdXNlIjsKKyAgICAgICAgICAgIHJldHVybiAi
TW91c2UiX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlRvdWNoOgotICAgICAgICAgICAg
cmV0dXJuICJUb3VjaCI7CisgICAgICAgICAgICByZXR1cm4gIlRvdWNoIl9zOwogICAgICAgICBj
YXNlIFBvaW50ZXJUeXBlOjpQZW46Ci0gICAgICAgICAgICByZXR1cm4gIlBlbiI7CisgICAgICAg
ICAgICByZXR1cm4gIlBlbiJfczsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNl
IElucHV0U291cmNlOjpUeXBlOjpLZXk6Ci0gICAgICAgIHJldHVybiAiS2V5Ym9hcmQiOworICAg
ICAgICByZXR1cm4gIktleWJvYXJkIl9zOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6Oldo
ZWVsOgotICAgICAgICByZXR1cm4gIldoZWVsIjsKKyAgICAgICAgcmV0dXJuICJXaGVlbCJfczsK
ICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIGNv
bnN0IGNoYXIqIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkK
K3N0YXRpYyBBU0NJSUxpdGVyYWwgYXV0b21hdGlvbk9yaWdpblR5cGUoUG9pbnRlck9yaWdpbjo6
VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgUG9pbnRlck9yaWdp
bjo6VHlwZTo6Vmlld3BvcnQ6Ci0gICAgICAgIHJldHVybiAiVmlld3BvcnQiOworICAgICAgICBy
ZXR1cm4gIlZpZXdwb3J0Il9zOwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6UG9pbnRl
cjoKLSAgICAgICAgcmV0dXJuICJQb2ludGVyIjsKKyAgICAgICAgcmV0dXJuICJQb2ludGVyIl9z
OwogICAgIGNhc2UgUG9pbnRlck9yaWdpbjo6VHlwZTo6RWxlbWVudDoKLSAgICAgICAgcmV0dXJu
ICJFbGVtZW50IjsKKyAgICAgICAgcmV0dXJuICJFbGVtZW50Il9zOwogICAgIH0KICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZl
ci9XZWJEcml2ZXJTZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vydmlj
ZS5jcHAKaW5kZXggNWU0NDA2N2VmMGEyLi41OTE4NDcwYjg1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9X
ZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBpbnQgV2ViRHJpdmVyU2Vydmlj
ZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9T
RVJWRVIpCiAgICAgU3RyaW5nIHRhcmdldFN0cmluZzsKICAgICBpZiAoY29uc3QgY2hhciogdGFy
Z2V0RW52VmFyID0gZ2V0ZW52KCJXRUJEUklWRVJfVEFSR0VUX0FERFIiKSkKLSAgICAgICAgdGFy
Z2V0U3RyaW5nID0gdGFyZ2V0RW52VmFyOworICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcg
eyB0YXJnZXRFbnZWYXIgfTsKICNlbmRpZgogICAgIGZvciAoaW50IGkgPSAxIDsgaSA8IGFyZ2M7
ICsraSkgewogICAgICAgICBjb25zdCBjaGFyKiBhcmcgPSBhcmd2W2ldOwpAQCAtNzUsNyArNzUs
NyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAg
ICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAg
ICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0
U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2
W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC05Nyw3ICs5Nyw3
IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAg
ICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhcmdl
dFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyBh
cmd2W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDEsNyAr
NDQxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNP
Tjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuaHR0cHNVUkwt
PmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tz
UHJveHkiKSkgeworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVl
KCJzb2Nrc1Byb3h5Il9zKSkgewogICAgICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUt
PmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzUHJveHkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0
KQogICAgICAgICAgICAgaWYgKCFwcm94eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGF1dG8gc29ja3NWZXJz
aW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7CisgICAgICAg
ICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tz
VmVyc2lvbiJfcyk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzVmVyc2lvblZhbHVlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcyLDMwIEBAIHZv
aWQgV2ViRHJpdmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYm
IGNhcGFiaWxpdGllc0xpc3QsIHN0CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dEJvb2xlYW4oInNldFdpbmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5zZXRXaW5kb3dSZWN0LnZh
bHVlX29yKHRydWUpKTsKICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yLnZhbHVlX29yKFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNz
QW5kTm90aWZ5KSkgewogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6
RGlzbWlzczoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
dW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIik7CisgICAgICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9z
LCAiZGlzbWlzcyJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHQ6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNj
ZXB0Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Il9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NB
bmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Iik7CisgICAg
ICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21w
dEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFu
ZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
dW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6Oklnbm9yZToKLSAg
ICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJv
bXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiX3Mp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dp
dGNoIChjYXBhYmlsaXRpZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0
ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2Fk
U3RyYXRlZ3kiX3MsICJub25lIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIl9zKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgot
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0
cmF0ZWd5Il9zLCAibm9ybWFsIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiX3MpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoK
LSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRT
dHJhdGVneSJfcywgImVhZ2VyIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWNhcGFiaWxpdGll
cy5wcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGll
c1NvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwCmluZGV4IDBmNmM4NzgyMDA5NS4uMmI2NzEzNDlkMzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJE
cml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKQEAgLTMyLDEyICszMiwxMiBAQCB2
b2lkIENhcGFiaWxpdGllc1NvY2tldDo6cGFyc2VDYXBhYmlsaXRpZXMoY29uc3QgSlNPTjo6T2Jq
ZWN0JiBtYXRjaGVkQ2FwYWJpbGl0aQogewogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFyZ2V0
QWRkclZhbHVlOwogICAgIFN0cmluZyB0YXJnZXRBZGRyOwotICAgIGlmIChtYXRjaGVkQ2FwYWJp
bGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciIsIHRhcmdldEFkZHJWYWx1ZSkgJiYg
dGFyZ2V0QWRkclZhbHVlLT5hc1N0cmluZyh0YXJnZXRBZGRyKSkKKyAgICBpZiAobWF0Y2hlZENh
cGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiX3MsIHRhcmdldEFkZHJWYWx1
ZSkgJiYgdGFyZ2V0QWRkclZhbHVlLT5hc1N0cmluZyh0YXJnZXRBZGRyKSkKICAgICAgICAgY2Fw
YWJpbGl0aWVzLnRhcmdldEFkZHIgPSB0YXJnZXRBZGRyOwogCiAgICAgUmVmUHRyPEpTT046OlZh
bHVlPiB0YXJnZXRQb3J0VmFsdWU7CiAgICAgaW50IHRhcmdldFBvcnQ7Ci0gICAgaWYgKG1hdGNo
ZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0IiwgdGFyZ2V0UG9ydFZh
bHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKKyAgICBpZiAo
bWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiX3MsIHRhcmdl
dFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRQb3J0ID0gdGFyZ2V0UG9ydDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAppbmRleCA3OWI3Y2E0YjJk
MTMuLjcwYWE0NGYwYmU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRU
UFNlcnZlclNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZl
clNvY2tldC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVFRQUmVxdWVzdEhhbmRsZXI6OmRp
ZFJlY2VpdmUoUmVtb3RlSW5zcGVjdG9yU29ja2V0RW5kcG9pbnQmLCBDb25uZWN0aW9uSUQKICAg
ICAgICAgSFRUUFJlcXVlc3RIYW5kbGVyOjpSZXNwb25zZSByZXNwb25zZSB7CiAgICAgICAgICAg
ICA0MDAsCiAgICAgICAgICAgICAidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiwKLSAgICAgICAg
ICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiLAorICAgICAgICAg
ICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1MIGZvcm1hdCJfcywKICAgICAgICAg
fTsKICAgICAgICAgc2VuZFJlc3BvbnNlKFdURk1vdmUocmVzcG9uc2UpKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0g
Yi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCAzYjZmZjhhZjIw
NmEuLjU3ZGJhMDNlMWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFu
ZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0K
QEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0
dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogICAgIC8vICJJZiBh
bnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAo
IXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6
ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4i
Ci0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1
Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNv
bnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgIC8vICJJZiBhbnkgb2Yg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlk
YXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsK
ICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAg
ICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVy
ZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRh
dGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgwMSw3ICs4
MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBX
R1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29w
eVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAg
ICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBt
X2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7
CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
aW5kZXggZTE4MDgyZTVkNTI4Li4zNWZhYmVlNWE0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAg
LTI1MCw5ICsyNTAsOSBAQCBzdGF0aWMgU3RyaW5nIHN0cmluZ0ZvclNTTFByb3RvY29sKFNTTFBy
b3RvY29sIHByb3RvY29sKQogICAgIGNhc2Uga1RMU1Byb3RvY29sMTM6CiAgICAgICAgIHJldHVy
biAiVExTIDEuMyJfczsKICAgICBjYXNlIGtTU0xQcm90b2NvbEFsbDoKLSAgICAgICAgcmV0dXJu
ICJBbGwiOworICAgICAgICByZXR1cm4gIkFsbCJfczsKICAgICBjYXNlIGtTU0xQcm90b2NvbFVu
a25vd246Ci0gICAgICAgIHJldHVybiAiVW5rbm93biI7CisgICAgICAgIHJldHVybiAiVW5rbm93
biJfczsKICAgICBjYXNlIGtUTFNQcm90b2NvbE1heFN1cHBvcnRlZDoKICAgICBkZWZhdWx0Ogog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAppbmRleCA2NmU0
ODk1NTQ5YTMuLmU2N2Y3ZWQyOWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtOTI5LDkgKzky
OSw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24o
KQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZWRpcmVjdHMgPSAyMDsKICAgICBpZiAo
bV9jdXJyZW50UmVxdWVzdC5yZWRpcmVjdENvdW50KCkgPiBtYXhSZWRpcmVjdHMpIHsKICNpZiBV
U0UoU09VUDIpCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3Io
bV9jdXJyZW50UmVxdWVzdC51cmwoKSwgU09VUF9TVEFUVVNfVE9PX01BTllfUkVESVJFQ1RTLCAi
VG9vIG1hbnkgcmVkaXJlY3RzIikpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRy
YW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5Z
X1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyJfcykpOwogI2Vsc2UKLSAgICAgICAgZGlk
RmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiks
IFNPVVBfU0VTU0lPTl9FUlJPUl9UT09fTUFOWV9SRURJUkVDVFMsIG1fY3VycmVudFJlcXVlc3Qu
dXJsKCksIFN0cmluZzo6ZnJvbVVURjgoIlRvbyBtYW55IHJlZGlyZWN0cyIpKSk7CisgICAgICAg
IGRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NF
U1NJT05fRVJST1IpIH0sIFNPVVBfU0VTU0lPTl9FUlJPUl9UT09fTUFOWV9SRURJUkVDVFMsIG1f
Y3VycmVudFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoIlRvbyBtYW55IHJlZGlyZWN0
cyIpKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTk1OSw3ICs5NTksNyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKICAg
ICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgp
LCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIG5ld1JlcXVlc3QgbWV0aG9kIHRvIEdFVCBp
ZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJlY3Rpb24gb3IgaWYgY3Vy
cmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoc291cF9tZXNzYWdlX2dldF9t
ZXRob2QobV9zb3VwTWVzc2FnZS5nZXQoKSkgPT0gU09VUF9NRVRIT0RfR0VUIHx8ICFyZXF1ZXN0
LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCBzaG91bGRSZWRpcmVjdEFzR0VUKG1f
c291cE1lc3NhZ2UuZ2V0KCksIGlzQ3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXF1ZXN0
LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJHRVQiX3MpOwogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAg
ICAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICAgICAgfQpAQCAt
MTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkQ2FsbGJhY2so
R0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KgogICAgICAgICBpZiAodGFz
ay0+bV9zb3VwTWVzc2FnZSkKICAgICAgICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cjo6Z2VuZXJpY0dFcnJvcih0YXNrLT5tX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBlcnJvci5nZXQo
KSkpOwogICAgICAgICBlbHNlIGlmICh0YXNrLT5tX2ZpbGUpCi0gICAgICAgICAgICB0YXNrLT5k
aWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVy
cm9yLT5jb2RlLCB0YXNrLT5tX2ZpcnN0UmVxdWVzdC51cmwoKSwgU3RyaW5nOjpmcm9tVVRGOChl
cnJvci0+bWVzc2FnZSkpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29k
ZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgPiAwKQpAQCAtMTEyNyw3ICsxMTI3
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQoR1JlZlB0
cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRTdHJlYW0KICAgICBBU1NFUlQoIW1faW5wdXRTdHJlYW0p
OwogICAgIG1faW5wdXRTdHJlYW0gPSBXVEZNb3ZlKGlucHV0U3RyZWFtKTsKICAgICBhdXRvKiBo
ZWFkZXJzID0gc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFtX2dldF9oZWFkZXJzKG1fbXVsdGlw
YXJ0SW5wdXRTdHJlYW0uZ2V0KCkpOwotICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIkNvbnRlbnQtVHlwZSIpOworICAgIFN0cmlu
ZyBjb250ZW50VHlwZSB7IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIkNv
bnRlbnQtVHlwZSIpIH07CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9maXJz
dFJlcXVlc3QudXJsKCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUp
LAogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoaGVhZGVy
cyksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIG1fcmVz
cG9uc2UudXBkYXRlRnJvbVNvdXBNZXNzYWdlSGVhZGVycyhoZWFkZXJzKTsKQEAgLTEzNzYsNyAr
MTM3Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIGVsc2UK
ICAgICAgICAgb3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfZmlsZV9jcmVhdGUobV9kb3dubG9h
ZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkgewotICAgICAgICBkaWRGYWls
RG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNz
YWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3Io
bV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZEludGVybWVkaWF0ZUZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChpbnRlcm1lZGlhdGVQYXRoLmdldCgpKSk7CiAgICAg
b3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfZmlsZV9yZXBsYWNlKG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlLmdldCgpLCBudWxscHRyLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51bGxw
dHIsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICghb3V0cHV0U3RyZWFtKSB7Ci0gICAgICAg
IGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJy
b3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRp
b25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBhZG9w
dEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKQEAgLTE0MTIs
NyArMTQxMiw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6d3JpdGVEb3dubG9hZENhbGxi
YWNrKEdPdXRwdXRTdHJlYW0qIG91dHB1dFN0cmVhbSwgR0FzCiAgICAgZ3NpemUgYnl0ZXNXcml0
dGVuOwogICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGxfZmluaXNoKG91dHB1dFN0cmVhbSwg
cmVzdWx0LCAmYnl0ZXNXcml0dGVuLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikK
LSAgICAgICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0
YXNrLT5tX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICB0YXNrLT5kaWRGYWls
RG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHRhc2stPm1fcmVzcG9uc2UsIFN0cmlu
Zzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5k
aWRXcml0ZURvd25sb2FkKGJ5dGVzV3JpdHRlbik7CiB9CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZEZpbmlzaERvd25sb2FkKCkKICAgICBBU1NFUlQo
bV9kb3dubG9hZEludGVybWVkaWF0ZUZpbGUpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBl
cnJvcjsKICAgICBpZiAoIWdfZmlsZV9tb3ZlKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlLmdl
dCgpLCBtX2Rvd25sb2FkRGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJ
VEUsIG1fY2FuY2VsbGFibGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZlcnJvci5vdXRQdHIo
KSkpIHsKLSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvciht
X3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93
bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2ODgsMTAgKzE2ODgs
MTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRGaWxlSW5mbyhHRmlsZUluZm8q
IGluZm8pCiB7CiAgICAgbV9yZXNwb25zZS5zZXRVUkwobV9maXJzdFJlcXVlc3QudXJsKCkpOwog
ICAgIGlmIChnX2ZpbGVfaW5mb19nZXRfZmlsZV90eXBlKGluZm8pID09IEdfRklMRV9UWVBFX0RJ
UkVDVE9SWSkgewotICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKCJ0ZXh0L2h0bWwiKTsK
KyAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4dC9odG1sIl9zKTsKICAgICAgICAg
bV9yZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoLTEpOwogICAgIH0gZWxzZSB7Ci0g
ICAgICAgIGNvbnN0IGdjaGFyKiBjb250ZW50VHlwZSA9IGdfZmlsZV9pbmZvX2dldF9jb250ZW50
X3R5cGUoaW5mbyk7CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSB7IGdfZmlsZV9pbmZvX2dl
dF9jb250ZW50X3R5cGUoaW5mbykgfTsKICAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZShl
eHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29u
dGVudFR5cGUpKTsKICAgICAgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkp
CkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnJlYWRGaWxl
Q2FsbGJhY2soR0ZpbGUqIGZpbGUsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBOZQogICAgIEdVbmlx
dWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRT
dHJlYW0gPSBhZG9wdEdSZWYoR19JTlBVVF9TVFJFQU0oZ19maWxlX3JlYWRfZmluaXNoKGZpbGUs
IHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFz
ay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4p
LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVU
RjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29k
ZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRSZWFkRmlsZShXVEZNb3ZlKGlu
cHV0U3RyZWFtKSk7CiB9CkBAIC0xNzQzLDcgKzE3NDMsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a1NvdXA6OmVudW1lcmF0ZUZpbGVDaGlsZHJlbkNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNS
ZXN1bAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdGaWxl
RW51bWVyYXRvcj4gZW51bWVyYXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfZW51bWVyYXRlX2NoaWxk
cmVuX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJv
cikKLSAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCks
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgIHRhc2stPmRpZEZh
aWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWlu
KSB9LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJv
bVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRSZWFk
RmlsZSh3ZWJraXREaXJlY3RvcnlJbnB1dFN0cmVhbU5ldyhXVEZNb3ZlKGVudW1lcmF0b3IpLCB0
YXNrLT5tX2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAu
Y3BwCmluZGV4IDRiY2U4ODg0OGM2Ny4uOTdmMDk4NTRjZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKQEAg
LTE0NCw3ICsxNDQsNyBAQCB2b2lkIFdlYlNvY2tldFRhc2s6OmRpZENvbm5lY3QoR1JlZlB0cjxT
b3VwV2Vic29ja2V0Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChtX2Nvbm5lY3Rpb24uZ2V0KCksICJlcnJvciIsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0NhbGxiYWNrPihkaWRSZWNlaXZlRXJyb3JDYWxsYmFjayksIHRoaXMpOwogICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfc3dhcHBlZChtX2Nvbm5lY3Rpb24uZ2V0KCksICJjbG9zZWQiLCByZWludGVycHJl
dF9jYXN0PEdDYWxsYmFjaz4oZGlkQ2xvc2VDYWxsYmFjayksIHRoaXMpOwogCi0gICAgbV9jaGFu
bmVsLmRpZENvbm5lY3Qoc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfcHJvdG9jb2wobV9j
b25uZWN0aW9uLmdldCgpKSwgYWNjZXB0ZWRFeHRlbnNpb25zKCkpOworICAgIG1fY2hhbm5lbC5k
aWRDb25uZWN0KFN0cmluZyB7IHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3Byb3RvY29s
KG1fY29ubmVjdGlvbi5nZXQoKSkgfSwgYWNjZXB0ZWRFeHRlbnNpb25zKCkpOwogCiAgICAgbV9j
aGFubmVsLmRpZFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZShtX2hhbmRzaGFrZU1lc3NhZ2UuZ2V0
KCkpOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZGF0YShtX2hhbmRzaGFr
ZU1lc3NhZ2UuZ2V0KCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXggYTlkZGEzMDBmZDg2Li4zYTg4ZmMy
NmFkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90
ZU9iamVjdENvZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIuaApAQCAtNDQsNSArNDQsNSBAQCBjbGFzcyBEaWN0aW9uYXJ5OwogQGVu
ZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7Citib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKE5TU3RyaW5nICosIE5TU3RyaW5nICopOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5tbQppbmRleCBh
OWJlYzU4NzNlZDQuLjE1NzNkZjJiNzJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0LDI1ICs1NCwyMiBA
QCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1Jl
bW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0
cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5n
ICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAg
aWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3Ro
KCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxU
eXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUgPSB3aXJlW2ldOwotCi0gICAg
ICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKLSAgICAgICAgICAgIC8vIGBib29sYCBh
bmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgotICAgICAgICAgICAgaWYgKHN0
cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigiQmMiLCB3aXJlVHlwZSkpCi0gICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBDaGFyYWN0ZXIgPSBbXSh1bmljaGFyIGMp
IC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGlu
dGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMgPT0gJ0InID8gJ2MnIDogYzsKKyAgICB9
OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50
ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChtYXBDaGFyYWN0ZXIo
W2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1hcENoYXJhY3Rlcihbd2lyZSBjaGFyYWN0
ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5ICs5NjcsOCBAQCBzdGF0aWMgTlNJbnZv
Y2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2RlcikK
ICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBoYWQg
bm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1cmUg
PSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0
dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5n
OwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVN
ZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAqbG9j
YWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3Ry
aW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBl
U2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9jYWwg
YW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1ldGhv
ZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0
b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXgg
YWEzMTk0OWMwYzU0Li41OTY5N2UyNjJkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTE4Nyw3
ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5JilyZW1vdGVPYmplY3RS
ZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lzdHJ5OwogfQogCi1zdGF0aWMg
U3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0
b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0cmluZyAqcmVwbHlCbG9ja1Np
Z25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9j
a0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJpdGVkIG1ldGhvZDoKICAgICBj
b25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9jb2xfZ2V0TWV0aG9kVHlwZUVu
Y29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7CkBAIC0xOTcsMTIgKzE5Nywx
MiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29s
LCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNTRVJUKG1ldGhvZFR5cGVFbmNv
ZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0gICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNpZ25hdHVyZSAqdGFyZ2V0TWV0
aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6
bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0TWV0aG9kU2lnbmF0dXJlKTsK
ICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0TWV0aG9kU2lnbmF0dXJlIF9z
aWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0luZGV4XS5fdHlwZVN0cmluZzsK
IH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2Vi
S2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJpbmcgd2lyZUJsb2NrU2lnbmF0
dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZv
LT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKLSAgICAgICAgU3Ry
aW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZh
Y2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKKyAgICAgICAgTlNTdHJpbmcg
KndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9j
a1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7
CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUuaXNOdWxsKCkpIHsKKyAgICAg
ICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAgICAgICAgICBOU0xvZyhAIl9p
bnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6IGNv
dWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUod2lyZUJsb2NrU2lnbmF0dXJl
LCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAgICAgTlNMb2coQCJfaW52b2tl
TWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlcyAhPSAl
cyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBleHBlY3RlZEJsb2NrU2lnbmF0
dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBG
YWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiAlQCAhPSAlQCIsIHdpcmVC
bG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7CiAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk4
LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVP
YmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAgICAgICAgIH07CiAKICAgICAg
ICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IFJlcGx5QmxvY2tDYWxs
Q2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAgICBpZCByZXBseUJsb2NrID0g
X19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3aXJlQmxvY2tTaWduYXR1cmUu
dXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQs
IGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgeworICAgICAgICBpZCByZXBseUJs
b2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayhbd2lyZUJsb2NrU2ln
bmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVw
bHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CiAgICAgICAgICAgICBh
dXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RFbmNvZGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6aW52b2NhdGlvbiBmb3JLZXk6
aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQppbmRleCA2YjA1MTM2NjIwZWMuLmJj
MWUxYzllM2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEsOCArNDEsOCBAQCBzdGF0aWMg
U3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQp
CiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQog
ICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNl
bnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRt
bD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3Np
bmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51
cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBz
Oi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIl9zOwogI2Vu
ZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmluZyByZXBvcnRBbkVycm9yQmFz
ZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZXBv
cnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIg
aXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0
cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJl
dHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90
cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2Nv
bXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2ds
ZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFyaSJfczsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lz
dGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2NzhmZTczZTUuLjVmNWUyZDQ1
MmM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJl
dmlld0NvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9p
ZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6ZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIAogdm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3Rl
bVByZXZpZXdBY3Rpb24oKQogewotICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dl
cmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBw
ZWQiKTsKKyAgICBwYWdlKCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVBy
ZXZpZXdJbmZvLCAiX2FwcGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVkIl9zKTsKIH0KIAog
dm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25X
aXRoVGFyZ2V0Rm9yVGVzdGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVu
dElELCB1aW50NjRfdCBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7
CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDcyOTQ5NDFjYWEyYi4uZmJlMDJlYzhlM2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1MSw3ICszODUxLDcg
QEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNj
cmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUlu
QXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0
IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwg
RXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAgICAgIGlmIChh
dXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFp
bi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJydW5K
YXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91
bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcxYzI5YTkwYzM3
NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdl
OjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNlIFN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIsCi0gICAgICAg
ICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6Il9zLAor
ICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
eSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTkiLCA4OSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAgIlUrMDA1
OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6
OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAiS2V5QiJf
cywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAgICAgICJiIl9z
LCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiLCAi
aSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImki
X3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJVKzAwNDkiX3Ms
IDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dn
bGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBs
YXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJLZXlVIl9zLAot
ICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUiX3MsICJL
ZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0Ogog
ICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0
Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7
CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1MxM0Zvckdt
YWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAgICAgIHJl
dHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7
CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9
LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4u
YjdmZTgwMDRlNDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGll
bnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0KQEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0
aW9uOjpob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENv
ZGVTaWduaW5nSWRlbnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9J
TlRFUk5BTF9TREspCiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkg
dGhlIG9ubHkgdXNlciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdl
YktpdEFQSSBhbmQgY29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5n
IG9uIHg4Nl82NCBNYWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIg
PSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29k
ZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsK
ICNlbHNlCiAgICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1f
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0KaW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVl
cnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAg
ICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRp
YVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9j
dW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVl
cnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJf
cywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3
KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9
CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVs
bGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3Vn
Z2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIi
OworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JD
bGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJM
ZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRh
dGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3Vy
Y2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgs
NyBAQCAtICh2b2lkKV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdO
YW1lOihOU1N0cmluZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9h
ZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Q
cml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
aW5kZXggYjdhZDBkNjg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRT
aW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVj
dClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxp
c3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0p
OwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVy
c1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBp
Y3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9z
KTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJs
ZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJs
ZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5k
ZXggNWQ2MzBhN2Q5YTExLi5jMjkwZGFlMzc5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6
QWNjZXNzaWJsZUJhc2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKICAg
ICBBU1NFUlRfQVJHKG9iaiwgb2JqKTsKICAgICBtX29iamVjdC0+c2V0V3JhcHBlcih0aGlzKTsK
ICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJs
ZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsK
IH0KIAogQWNjZXNzaWJsZUJhc2U6On5BY2Nlc3NpYmxlQmFzZSgpCiB7CiAgICAgLS1nQ2xhc3ND
b3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFj
Y2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCA5YTFmMDExMjIxYmMuLmE1YzA3
ZWI5MTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFy
eVByb3BlcnR5QmFnLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBDRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZzo6Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQog
CiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6fkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGlj
dGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5
QmFnPiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCmluZGV4
IDFhODBjNGQ2ZThlMi4uMzAyZjYzN2FiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVs
dERvd25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERl
bGVnYXRlIl9zKTsKICAgICBIYXNoU2V0PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9k
b3dubG9hZHMuYmVnaW4oKTsKICAgICBmb3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kp
CiAgICAgICAgICgqaSktPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCmluZGV4IGU4ZTVmNWM0Y2MxMS4uMWZhOGMzNTRk
ZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVs
ZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxl
Z2F0ZS5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCB0eXBlZGVmIGVudW0gV2ViRXh0cmFOYXZpZ2F0
aW9uVHlwZSB7CiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1
bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBv
bGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlOjp+RGVmYXVsdFBv
bGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5
RGVsZWdhdGUqIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiLi45ZGE1
OTYwNTY0YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBAIE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0i
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIE1l
bW9yeVN0cmVhbTo6fk1lbW9yeVN0cmVhbSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogQ09NUHRyPE1lbW9yeVN0cmVh
bT4gTWVtb3J5U3RyZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3Bl
cnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFn
LmNwcAppbmRleCA2Zjc1N2IzODZkMTUuLmU5N2M0MTMyNDcxNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEz
IEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUp
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJB
Y3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9u
UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblBy
b3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlC
YWcqIFdlYkFjdGlvblByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZy
YW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBw
bGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlv
bkNhY2hlLmNwcAppbmRleCA4ZjI3MTYyYmJhZjEuLmYzMTAyZTUyNjg3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTUwLDEzICs1
MCwxMyBAQCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpXZWJBcHBsaWNhdGlvbkNhY2hlKCkKICAgICA6
IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5X
ZWJBcHBsaWNhdGlvbkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0
aW9uQ2FjaGUqIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTgxLDcg
KzgxLDcgQEAgc3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiAKIFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKCkK
IHsKLSAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNh
dGlvbkNhY2hlIikubGVha1JlZigpOworICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25D
YWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtSZWYoKTsKIAogICAgIHJldHVy
biBzdG9yYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4
MTU3OTk2MTA3NjcuLjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0
cjxMZWdhY3lXZWJBcmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNoaXZlOjp+
V2ViQXJjaGl2ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFyY2hpdmUiX3MpOwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJmYWNlKF9J
bl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0YWMyZDI4
MTA0Li4xMTZhYTQyMDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFj
a0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6Oldl
YkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlz
dAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0Lmdl
dCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tG
b3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJh
Y2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9i
YWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0Zvcndh
cmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9y
d2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUu
Y3BwCmluZGV4IGRlODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ2FjaGUuY3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBXZWJDYWNoZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGUq
IFdlYkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li5mMTMxNmRlNDZjMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTQ4
LDEzICs0OCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0aXN0aWNz
OjpXZWJDb3JlU3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzOjp+
V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGlj
cyogV2ViQ29yZVN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE0OSw3ICsxNDksNyBA
QCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlw
ZUNvdW50cyhfQ09NX091dHB0cl9vcHRfCiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBl
TmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAg
ICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3Vy
cmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50
LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcg
eyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0
eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3Rh
bmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENv
dW50cyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2
YVNjcmlwdE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHkKICAgICBJ
dGVyYXRvciBlbmQgPSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJp
bmcsIGludD4gdHlwZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2Jq
ZWN0VHlwZU5hbWVzLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAg
ICB0eXBlQ291bnRNYXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAg
ICB0eXBlQ291bnRNYXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1
ZSk7CiAKICAgICBDT01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJv
cGVydHlCYWc8aW50Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0
cy5jb3B5UmVmVG8odHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTI5NiwxMyArMjk2LDEzIEBAIEhS
RVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoX0NPTV9PdXRwdHJfb3B0
XyBJUHJvcGVydHlCYWcqKiBzdGF0CiAgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxN
ZW1vcnlTdGF0cyA9IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKIAogICAgIEhhc2hNYXA8U3Ry
aW5nLCB1bnNpZ25lZCBsb25nIGxvbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZmllbGRz
OwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRl
cykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRW
TUJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0
Qnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiLCBoZWFwU2l6ZSk7
Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIiwgaGVhcEZyZWUpOwotICAgIGZp
ZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJK
YXZhU2NyaXB0SklUU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFs
TWVtb3J5U3RhdHMuSklUQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2
ZWRWTUJ5dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NT
dGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2ND
b21taXR0ZWRWTUJ5dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RN
YWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0
TWFsbG9jRnJlZUxpc3RCeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihm
YXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiSmF2
YVNjcmlwdEhlYXBTaXplIl9zLCBoZWFwU2l6ZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlw
dEZyZWVTaXplIl9zLCBoZWFwRnJlZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNr
U2l6ZSJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0
cy5zdGFja0J5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiX3MsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMp
KTsKIAogICAgICpzdGF0aXN0aWNzID0gQ09NUHJvcGVydHlCYWc8dW5zaWduZWQgbG9uZyBsb25n
LCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD46OmFkb3B0KGZpZWxkcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuY3BwCmluZGV4IDIxMTU5OGQzOWE2YS4uYjlmNDEwOTM1OWIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6
ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGUsIEtleWJvYXJkRXZlbnQqIGtl
KQogICAgICAgICBpZiAoZG9tRWxlbWVudCkgewogICAgICAgICAgICAgSURPTUhUTUxJbnB1dEVs
ZW1lbnQqIGRvbUlucHV0RWxlbWVudDsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZG9tRWxl
bWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCAodm9pZCoqKSZk
b21JbnB1dEVsZW1lbnQpKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kID0gbV93
ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNv
bW1hbmQgeyBtX3dlYlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKSB9OwogICAgICAgICAgICAg
ICAgIC8vIFdlIGFsbG93IGVtcHR5IGNvbW1hbmRzIGhlcmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUg
YWN0dWFsbHkgZGVwZW5kcyBvbiB0aGlzIGJlaW5nIGNhbGxlZCBmb3IgYWxsIGtleSBwcmVzc2Vz
LgogICAgICAgICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciBi
ZWNhdXNlIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gc2VuZCBhbiBlbXB0eSBjb21t
YW5kLgogICAgICAgICAgICAgICAgIGZvcm1EZWxlZ2F0ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9t
SW5wdXRFbGVtZW50LCBCU3RyaW5nKGNvbW1hbmQpLCBraXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgp
KSwgJnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmlu
ZGV4IDllMDMxZDllZmI3OS4uZjc4YzFiZDJhODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhU291cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXZWJEYXRhU291cmNlOjpXZWJE
YXRhU291cmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgV2ViRGF0YVNvdXJj
ZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3Vy
Y2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCkBAIC02Niw3ICs2
Niw3IEBAIFdlYkRhdGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKICAgICAgICAgbV9sb2FkZXIt
PmRldGFjaERhdGFTb3VyY2UoKTsKICAgICBXZWJEYXRhU291cmNlQ291bnQtLTsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAK
IFdlYkRhdGFTb3VyY2UqIFdlYkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFdlYkRvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
YXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VN
YW5hZ2VyLmNwcAppbmRleCA2NzY3NzIwMzE1YzMuLjhmMzc2NTQxMjU2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xNjAsMTMgKzE2
MCwxMyBAQCBXZWJEYXRhYmFzZU1hbmFnZXIqIFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5z
dGFuY2UoKQogV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1h
bmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciJf
cyk7CiB9CiAKIFdlYkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFi
YXNlTWFuYWdlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VN
YW5hZ2VyIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTJkMGZhNzJjZDZm
Li4yNTZhMzU4ODA3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
Y3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVu
dExvYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3Vt
ZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAg
ICAsIG1fZGV0YWNoZWREYXRhU291cmNlKDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVu
dExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBS
ZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExv
YWRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEb2N1bWVudExvYWRlciJfcyk7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkgewogICAgICAgICBB
U1NFUlQoIW1fZGV0YWNoZWREYXRhU291cmNlKTsKICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUy
YTdlNzU2Li45OTQ2OTA0NTUxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9h
ZC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJEb3du
bG9hZDo6V2ViRG93bmxvYWQoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTYx
LDcgKzYxLDcgQEAgV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCiAgICAgTE9HKERvd25sb2Fk
LCAiV2ViRG93bmxvYWQgLSBEZXN0cm95aW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBj
YW5jZWwoKTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25s
b2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDE4
MTBhNjY4NTgxOC4uZmM2NGI5YmM5OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZENGTmV0LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIEhSRVNVTFQgV2ViRG93bmxv
YWQ6OmNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50
aWNhdGlvCiAgICAgfQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYSBVUkwgb3IgZGVzY3Jp
cHRpb24gZm9yIHRoaXMgZXJyb3IgY29kZT8KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmlu
ZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0
aW9uLCBVUkwoKSwgIiIpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVy
cm9yRG9tYWluKSwgV2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgp
LCBlbXB0eVN0cmluZygpKTsKICAgICBDT01QdHI8V2ViRXJyb3I+IHdlYkVycm9yKEFkb3B0Q09N
LCBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFuY2UoZXJyb3IpKTsKICAgICBtX2RlbGVnYXRlLT5kaWRG
YWlsV2l0aEVycm9yKHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEcm9wU291cmNlLmNwcAppbmRleCA2YmFiZjkwYjg5ZmEuLjViMWM1ZGZjN2U4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKQEAgLTUzLDEzICs1
MywxMyBAQCBXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRHJvcFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291
cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJv
cFNvdXJjZSJfcyk7CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmlu
ZGV4IDhhZmJhMGY2ZDUzYS4uYzYxZjE3MmQ0N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBX
ZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0
UmVzdWx0JiByZXN1bHQpCiAgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+
KHJlc3VsdCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnOjp+
V2ViRWxlbWVudFByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJF
bGVtZW50UHJvcGVydHlCYWcqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
Y29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3Iu
Y3BwCmluZGV4IDE5ZGUzNzFiZWExYy4uNzE2MTIxOTIzM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRXJyb3IuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRXJyb3I6OldlYkVycm9yKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQogICAgICwg
bV9lcnJvcihlcnJvcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9y
Il9zKTsKIH0KIAogV2ViRXJyb3I6On5XZWJFcnJvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yKiBXZWJFcnJvcjo6
Y3JlYXRlSW5zdGFuY2UoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyog
dXNlckluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNTk0OGIwZWM1
YjgwLi4wN2JkNDZmYzk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewogICAgIFdlYkZyYW1lQ291
bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIl9zKTsKIH0KIAog
V2ViRnJhbWU6On5XZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAgV2ViRnJhbWU6On5XZWJG
cmFtZSgpCiAgICAgZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0tOwogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZSogV2Vi
RnJhbWU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdlYkZyYW1l
Ojpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBC
U1RSIG1pbWVUeQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3Ry
aW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGVT
dHJpbmcgPSAidGV4dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1s
Il9zOwogCiAgICAgU3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0
cmluZ0xlbih0ZXh0RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIEhSRVNV
TFQgV2ViRnJhbWU6OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZVBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDIuLjk0NDY4YmI3M2QwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ci5jcHAKQEAgLTM5LDEzICszOSwxMyBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoV1RG
TW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyOjp+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwog
fQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjcmVh
dGVJbnN0YW5jZShSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IGRh
NGMyMjc3OTZiNy4uNjg5MmY3NzFhZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcApAQCAtNDIsMTMgKzQy
LDEzIEBAIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIoUmVmUHRyPEdlb2xvY2F0aW9uPiYmCiAgICAgLCBtX2dlb2xvY2F0aW9uKFdURk1v
dmUoZ2VvbG9jYXRpb24pKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6fldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogLy8gSVVua25vd24g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcAppbmRleCA5MjRjNDhiMTNjNDEuLmZmMWZkOTBjNDM3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAg
LTM2LDEzICszNiwxMyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9z
aXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9z
aXRpb24iX3MpOwogfQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50
ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAK
aW5kZXggNDZhYWFlOTdkN2JiLi44NmEzY2I2ZGFhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBX
ZWJIVE1MUmVwcmVzZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVw
cmVzZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQpAQCAtNTQsNyArNTQsNyBAQCBX
ZWJIVE1MUmVwcmVzZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQogCiAgICAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJI
VE1MUmVwcmVzZW50YXRpb24qIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2Uo
V2ViRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRl
eCAzZjFlYjZkNzM4YmQuLjUwYThlNWY2YmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBDT01QdHI8SVByb3Bl
cnR5QmFnPiBjcmVhdGVVc2VySW5mb0Zyb21IaXN0b3J5SXRlbShCU1RSIG5vdGlmaWNhdGkKIFdl
Ykhpc3Rvcnk6OldlYkhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJIaXN0b3J5Il9zKTsKIAogICAgIG1fcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpOwogfQpAQCAtOTcsNyArOTcsNyBAQCBXZWJIaXN0
b3J5OjpXZWJIaXN0b3J5KCkKIFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSJfcyk7CiB9CiAKIFdlYkhp
c3RvcnkqIFdlYkhpc3Rvcnk6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnlJdGVtLmNwcAppbmRleCBmYjg4ZTM5ZTdiNTYuLjhkZDliZGFhYTI4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNTMsNyAr
NTMsNyBAQCBXZWJIaXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhpc3RvcnlJdGVt
PiYmIGhpc3RvcnlJdGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5
SXRlbS5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRl
bSgpCkBAIC02Miw3ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQog
ICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7CiAK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlz
dG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVt
Il9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCBmNjIxOWE2
NmRhYTkuLjQ0N2Q5MmEzYTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0
b3IuY3BwCkBAIC01MSwxMyArNTEsMTMgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2Vi
VmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWMKICAgICBB
U1NFUlRfQVJHKGluc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5z
cGVjdG9yOjp+V2ViSW5zcGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudCogV2ViSW5zcGVjdG9yOjpmcm9udGVuZENsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCmluZGV4IGM4ZTRiZThhYzIx
Yi4uNzU4NjYyNzJkNWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJK
YXZhU2NyaXB0Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJK
YXZhU2NyaXB0Q29sbGVjdG9yLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxlY3Rv
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkphdmFTY3JpcHRDb2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkph
dmFTY3JpcHRDb2xsZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjp+V2Vi
SmF2YVNjcmlwdENvbGxlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiX3MpOwogfQogCiBXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3Rv
cnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApp
bmRleCBjZTg2MjBmZDRiZDcuLjZlZTA3MjUzMmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAgV2ViS2l0
Q2xhc3NGYWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiAgICAg
V2ViQ29yZTo6cG9wdWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBXZWJLaXRD
bGFzc0ZhY3Rvcnk6On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dE1lc3NhZ2VMb29wLmNwcAppbmRleCA5MzdhNjY2OWU5MDguLmU2OWMwYzgwODk4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApAQCAtMzQsMTMg
KzM0LDEzIEBACiBXZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdl
TG9vcCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiX3Mp
OwogfQogCiBXZWJLaXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2Fn
ZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29w
Il9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxvb3AqIFdlYktpdE1lc3NhZ2VMb29wOjpjcmVhdGVJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0
aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3Bw
CmluZGV4IDEyNjNiYzBjMTFmOS4uZjUxNTFjYmUwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIGludCBXZWJG
cmFtZVZpZXdDb3VudDsKIFdlYktpdFN0YXRpc3RpY3M6OldlYktpdFN0YXRpc3RpY3MoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0
aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIl9z
KTsKIH0KIAogV2ViS2l0U3RhdGlzdGljczo6fldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0
aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIl9z
KTsKIH0KIAogV2ViS2l0U3RhdGlzdGljcyogV2ViS2l0U3RhdGlzdGljczo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3Qu
Y3BwCmluZGV4IDVjOTEyNTc3MjUyNi4uMjQ0MTA2Njg4Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBA
IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0YWJs
ZSkKICAgICA6IG1faXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogV2Vi
TXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgp
CkBAIC05Myw3ICs5Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6Y3JlYXRlSW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6fldlYk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0K
IAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNi4uNmE5MzNhYmI1Zjg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC03Miwx
MyArNzIsMTMgQEAgV2ViTmF2aWdhdGlvbkRhdGE6OldlYk5hdmlnYXRpb25EYXRhKGNvbnN0IFN0
cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2UKIAogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJO
YXZpZ2F0aW9uRGF0YTo6fldlYk5hdmlnYXRpb25EYXRhKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAog
V2ViTmF2aWdhdGlvbkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVhdGVJbnN0YW5jZShjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlYlVSTFJlcXVlc3QqIHJlcXVl
c3QsIElXZWJVUkxSZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIGNv
bnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTm90aWZpY2F0aW9uLmNwcAppbmRleCBmNTNiYjcyNjM1M2YuLjk0OTI1NmVlODAyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC00Myw3
ICs0Myw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKEJTVFIgbmFtZSwgSVVu
a25vd24qIGFuT2JqZWN0LCBJUHJvcGVydHlCYWcqIHVzCiAgICAgICAgIG1fdXNlckluZm8tPkFk
ZFJlZigpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYk5vdGlmaWNhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZp
Y2F0aW9uIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKQEAg
LTU2LDcgKzU2LDcgQEAgV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKICAgICAg
ICAgbV91c2VySW5mby0+UmVsZWFzZSgpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9u
KiBXZWJOb3RpZmljYXRpb246OmNyZWF0ZUluc3RhbmNlKEJTVFIgbmFtZSAvKj0wKi8sIElVbmtu
b3duKiBhbk9iamVjdCAvKj0wKi8sIElQcm9wZXJ0eUJhZyogdXNlckluZm8gLyo9MCovKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5k
ZXggOTI1MzJkYmRjYTQxLi42Y2Q4ODQyZTdhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdl
Yk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFr
ZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7
CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5v
dGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90
aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3Rp
ZmljYXRpb25DZW50ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWMuLmZiMTczZGQ1YzFlNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTQ3LDEzICsx
NDcsMTMgQEAgV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFBy
ZWZlcmVuY2VzKCkKIFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdl
YlByZWZlcmVuY2VzOjp+V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJl
bmNlcyogV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlJlc291cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBA
IFdlYlJlc291cmNlOjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYg
dXJsLCBjb25zdCBXVEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3Vy
Y2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAog
V2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNv
dXJjZTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYw
NzgxZjQxMjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5j
cHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3Qo
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
Y3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVj
dCJfcyk7CiB9CiAKIFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9i
amVjdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9z
KTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0V29ybGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIGlubGluZSBXZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBw
ZXJXb3JsZD4mJiB3b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhp
cyk7CiAKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
U2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxk
Il9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1
Niw3IEBAIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygp
LnJlbW92ZShtX3dvcmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2Vi
U2NyaXB0V29ybGQ6OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00
OSwxMyArNDksMTMgQEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJp
dHlPcmlnaW4pCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlY3VyaXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
ZWN1cml0eU9yaWdpbiJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlP
cmlnaW4oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApp
bmRleCA4YmI4MGEyZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6
ZWRKU1ZhbHVlKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5X
ZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxX
ZWJTZXJpYWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYy
MDdiNTZhN2Y2Ny4uMDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlRleHRSZW5kZXJlci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdl
YlRleHRSZW5kZXJlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0
UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRl
eHRSZW5kZXJlciJfcyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJl
bmRlcmVyIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNl
KF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwCmluZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAs
IG1fc2VuZGVyKHNlbmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAog
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6
Y3JlYXRlSW5zdGFuY2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVk
NjkzYy4uNTA5OWJhMGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00
MiwxMyArNDIsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9j
bGllbnQpOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFk
MTA2OTk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVu
dGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5j
cHAKQEAgLTM3LDEzICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFs
KGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVu
dGlhbCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQ3JlZGVudGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3Jl
ZGVudGlhbCJfcyk7CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
VVJMQ3JlZGVudGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3Jl
ZGVudGlhbCJfcyk7CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TFByb3RlY3Rpb25TcGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90
ZWN0aW9uU3BhY2UuY3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAg
LTM3LDEzICszNywxMyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25T
cGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0
aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFBy
b3RlY3Rpb25TcGFjZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFj
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNl
Il9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6
OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNl
LmNwcAppbmRleCBhNWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGlj
IFN0cmluZyBsb2NhbGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVz
Q29kZSkKIFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJl
c3BvbnNlOjp+V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSog
V2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSog
aW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVz
cG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAg
aW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0
dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwg
U3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcAppbmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBA
IC0zNSwxMyArMzUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsr
Z0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJM
UGF0dGVybiJfcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250
ZW50VVJMUGF0dGVybigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRy
PFdlYlVzZXJDb250ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1
NTkzNC4uZTU1YTI0MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAt
NDQ2LDcgKzQ0Niw3IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXci
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3
Ojp+V2ViVmlldygpCkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAg
ICAgV2ViVmlld0NvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlZpZXciX3MpOwogfQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0x
OTk1LDExICsxOTk1LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJh
bSwgTFBBUkFNIC8qbFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFy
YW0pKSB7CiAgICAgICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAg
ICAgICAgY2FzZSBVbmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCku
Y29tbWFuZCgiVW5kbyJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRl
KCk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJv
b2wgV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYm
IGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
aW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAog
ICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsK
ICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQg
bW9kZSB0byBkZWNpZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVj
dXRlZCB2aWEgRWRpdG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAg
SFJFU1VMVCBXZWJWaWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5
IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVy
biBTX09LOwogfQogCkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChf
SW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFu
ZCgiQ3V0Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyAr
NDc0Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2Vu
ZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNv
bW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUo
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBX
ZWJWaWV3Ojpjb3B5VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9L
VVJMKHVybCksICIiKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJM
KHVybCksIGVtcHR5U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcg
KzQ3NzMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8q
c2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIkRlbGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhl
Y3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhl
NzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3Bw
CkBAIC05MCwxMSArOTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRl
OjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUo
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJX
b3JrZXJzUHJpdmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1By
aXZhdGUiX3MpOwogfQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
V29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtl
cnNQcml2YXRlIl9zKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAK
QEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAg
ICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JT
ZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JT
ZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgi
bG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1
Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFD
T01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUo
KSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2lj
KQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMn
cyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1h
a2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
ICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJs
b2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0y
Il9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJU
X0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgw
OGIzMGMyMzhjMy4uZmE5M2RjNDhkMThhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyAr
MjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0
aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7
CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0
aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51
bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3
NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElz
QXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAg
ICBBU0NJSUxpdGVyYWwganMgPSBBU0NJSUxpdGVyYWw6Om51bGwoKTsKICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7
CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChu
ZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNl
XCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZl
bnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2go
Jy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNo
ZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0g
fSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8
c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAg
ICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lS
ZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFy
KiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50
LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIg
YXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2
ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxp
Y2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwi
LCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwK
KyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwg
anMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZv
aWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2Vi
VmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1
aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+
YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0
bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMg
fSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0
NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcElu
aXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAg
ICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2
ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011
dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5w
b3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQ
cm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBA
QCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JF
U09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0
ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2Ny
aXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxz
KSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBA
IC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFs
dWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2
NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0
VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAor
ICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwK
KyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9
KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4g
V2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRl
ZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2
aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9y
aWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVu
dGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5
R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRN
ZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBS
IlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RS
RVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwx
MiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVT
VFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24s
IFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAg
IHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAg
Y29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25Q
ZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0g
UiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9D
RE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJv
c2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4w
LjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMg
Y29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+
PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJL
aXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRl
eHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAg
ICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsg
ZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGlj
IHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdl
YkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7
Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRl
bnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigi
aW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpA
QCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJD
b250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24g
bG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJl
Z2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVu
cmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyht
c2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJT
V1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+
IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6
ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VX
b3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwg
eyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29y
a2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZp
Y2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVz
c2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxs
byBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNz
YWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFw
cC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdp
c3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBi
ZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUlu
Q2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7
ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVu
dC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAi
c2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3Ms
IHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAi
Q29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXIt
UG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5
LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQ
cm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhU
VFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0g
ICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0
L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9
IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJD
b250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNU
KFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZP
TyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAg
ICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45
ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENv
bnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250
ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgx
MDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFp
blB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
Z1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1z
dGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmln
YXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3Rk
OjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0
aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmco
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewog
ICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1v
ZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2Rl
LCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2Vi
VmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dT
aXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4
cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBz
aG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJL
aXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewog
ICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdl
bnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9
KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3As
IHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5T
U3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJh
MGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysr
IGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1
cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZh
bHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJp
bmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0
U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhh
bXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwog
CiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484802"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456493</attachid>
            <date>2022-04-02 20:25:09 -0700</date>
            <delta_ts>2022-04-02 20:47:16 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>280752</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4YzkzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC03OCw3ICs3OCw3IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
QVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1
c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBndGtUeXBl
KCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEi
X3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXgg
ZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2Vu
dC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNl
ckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBz
dGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmco
KSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VY
UE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxp
dGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVt
TWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0NWZjMDY0MzM5NC4uOGI3ZTc0
MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VM
RU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUi
LCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5h
dGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUs
IG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRl
UGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRp
b1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9T
aW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAg
IEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdM
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcApp
bmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBj
b25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQogewogI2lmIE9TKFVOSVgp
CiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lzVHlwZTo6TW9iaWxlKQotICAg
ICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAgICByZXR1cm4gImxpa2UgQW5k
cm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIHVuYW1lKCZuYW1l
KTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpbwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0aW9u
VmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1IjsKKyAgICAg
ICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1Il9zOwogICAgICAgICB1
c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAnICsgYXBwbGljYXRpb25O
YW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAK
aW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKQEAgLTE4Niwx
MyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJTb3VyY2Uo
Y29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAgICAgaWYgKCF2YWxpZGF0ZVN1
Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxvZyA9IHNoOjpHZXRJbmZvTG9n
KGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkKLSAgICAgICAgICAgIHNoYWRl
clZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAgICAgIHNoYWRlclZhbGlkYXRp
b25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENvZGUgPSBzaDo6R2V0T2JqZWN0
Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVuZ3RoKCkpCi0gICAgICAgIHRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3RyKCk7CisgICAgICAgIHRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2RlLmNfc3RyKCkgfTsKICAgICAK
ICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRS
SUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRpb24gPSA1
X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiAvLyBU
aGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3csIHBvcnRl
ZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVy
YWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBTaW5jZSB0
aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBp
bml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUgY29udGV4
dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3
NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAg
LTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2ls
IGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3Vs
ZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wK
ICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0
ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsK
ICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0lt
cGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIHBy
aW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNmb3JtM0Qm
IHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5z
Zm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3Jt
Lm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIz
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQpLCAi
OyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpLCAnICcs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMiksICcgJywgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAnICcsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1zdGF0aWMgdm9pZCBwcmludENv
bG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dDb2xvclJlZiBj
b2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3ko
Y29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgpKQpAQCAtNzYyLDEwICs3NjIs
MTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAKICAgICAvLyBQcmludCBiYWNr
Z3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAx
LCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJi
YWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxh
dGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJDb2xvciBpZiBuZWVkZWQKLSAg
ICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciIsIENBQ0ZMYXll
ckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9y
KGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywgQ0FDRkxheWVyR2V0Qm9yZGVy
Q29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbWFza3NUb0Jv
dW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBsYXllci0+
bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5k
ZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPAog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1
YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwogCiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoZW5jb2Rl
ZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5MWVmOWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5n
IGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAg
ICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEt
PmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5
TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJl
dHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkg
PT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkp
KQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAgICByZXR1cm4gInNhbnMtc2Vy
aWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVz
SW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAg
ICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1l
c0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1
cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWls
eSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkp
KQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7
CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEt
PmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJr
aXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsK
ICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
CiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZkOWY3OGU3ZDIxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRp
b25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5p
cXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNh
cHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAg
Y29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAog
ICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJzZUdzdFN0
cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiB7
CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJlVmFsdWVUb0pTT04odmFsdWUp
KSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNPTjo6T2JqZWN0
Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVlKGdfcXVhcmtfdG9fc3RyaW5n
KGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBvYmplY3Qt
PnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpIH0sIGpzb25WYWx1
ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAppbmRleCAyZDljMGU5ZTQ1Mzgu
LmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
ci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lz
dHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlm
IChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmll
cjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZh
Y3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9yaWVzKSkgewogICAgICAgICAg
ICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihm
YWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xB
U1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9n
ZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAg
ICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAg
ICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikpIHsKICAgICAgICAgICAgICAg
ICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFj
dG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6Vmlk
ZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJl
Q2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFp
bmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAm
JiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBp
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9t
cDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEi
KSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlw
ZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1
ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlv
bjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQp
IHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21w
ZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRp
by94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTI0Niw3ICsxMjQ2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAgIGNvbnN0IGNoYXIqIHJvbGUg
PSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6ICJtdXNpYyI7CisgICAgYXV0
byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyJfcyA6ICJtdXNpYyJf
czsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luayhy
b2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwogICAgIGlmICghYXVkaW9TaW5r
KQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZ3N0X21lc3NhZ2Vf
cGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKICAg
ICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+
bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgbV9lcnJv
ck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5n
IHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdT
VF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNfTk9UX0ZPVU5EKQpAQCAtMTg4
OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1l
c3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxzZSBpZiAoZ3N0X3N0cnVjdHVy
ZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkgewogICAgICAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBIVFRQIGhlYWRlcnM6ICUiIEdT
VF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHVy
aSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJ1cmkiKSkgewotICAgICAg
ICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsIHsgU3Ry
aW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdpbnMuYWRkKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBpZiAodXJsICE9IG1fdXJsKSB7
CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBn
Y2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0
YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBpZiAodGl0bGUpIHsKLSAgICAg
ICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAgICAgICBjdWUtPnNldENvbnRl
bnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAgICAgZ19mcmVlKHRpdGxlKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZlcihHc3RFbGVtZW50KiBlbGVt
ZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10ZW1wbGF0ZSIsIG5ld0Rvd25s
b2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxp
bmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBsYXRlIGZyb20gJyVzJyB0byAn
JXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQo
KSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoID0gbmV3RG93bmxvYWRUZW1w
bGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoIHsgbmV3RG93bmxv
YWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxvYWRGaWxlcyhuZXdEb3dubG9h
ZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0KIApAQCAtMjE3OSw3ICsyMTc5
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvd25sb2FkQnVmZmVyRmls
ZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGRv
d25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdl
dCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwog
Ci0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5n
ZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFN0cmlu
Zzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5H
KCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24i
LCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ3MCwx
MSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRM
b2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0byB0YWtlIHRoZSBiYXNlIG9m
IHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5kIHRoZSB2YWx1ZSBvZiBuZXct
bG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0gZ3N0X3VyaV9pc192YWxpZChu
ZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJh
c2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBT
dHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBw
bGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgImN1
cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51bGxwdHIpOwotICAgICAgICBV
UkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsKKyAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0gfTsKIAogICAgICAgICBpZiAo
cGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlw
ZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGlyZWN0aW9uLiIpOwpAQCAtMjcw
MSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdT
VFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVsZW1lbnRJZCA9IG1fcGxheWVy
LT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1wdHkoKSkKLSAgICAgICAgZWxl
bWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1lbnRJZCA9ICJtZWRpYS1wbGF5
ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRpYVNvdXJjZSgpID8gIk1TRS0i
IDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVkaWFzdHJlYW0tIiA6ICIiOwog
CkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UoR3N0TWVzcwogICAgICAgICAg
ICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAgICAgIGdzdF9ldmVudF9wYXJz
ZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0ZW1JZCwgJmRhdGEsIG51bGxw
dHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2ZW50S2V5U3lzdGVtSWQsIGRh
dGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMu
YWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5k
bGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAgIGNvbnN0IGNoYXIqIGV2ZW50
S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVyKiBpbml0RGF0YSA9IG51bGxw
dHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQsICZldmVudEtleVN5c3Rl
bVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsKKyAgICBpbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVtVVVJRCB9LCBpbml0RGF0
YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OndhaXRpbmdGb3JL
ZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQg
cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcg
ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsg
fQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGRj
YTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmlu
ZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1Rf
VEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90
YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNv
XzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29u
dmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFn
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAg
ICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFy
KiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYg
KGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIo
KSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwg
dGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgp
OworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0
YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDkuLmQ3
YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJl
YW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2lu
Z1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ3N0X3BhZF9hZGRfcHJv
YmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8q
IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJldHVybiB7CiAgICAgICAg
IGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZpZGVvRnJhbWVNZXRhZGF0YShH
U1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAgICAgR1NUX1BBRF9QUk9CRV9J
TkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAgICAgbWV0YS0+cHJpdi0+cHJv
Y2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSksIHN0ZDo6
bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkp
OworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KFN0cmluZyB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9n
ZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKICAgICAgICAgcmV0dXJuIEdT
VF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0X25hbWUoZWxlbWVudCksIGdf
ZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2lu
Z1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIGlmICghbWV0YSkK
ICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwogCi0gICAgICAgIGF1dG8qIGVs
ZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpOworICAgICAgICBT
dHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfTsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5nZXQoZWxl
bWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KGVsZW1l
bnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFt
cCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDMzNjg1ZTIzMzk1Li5kNjQw
NGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDc1NGIzZmY0ODM5
MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4
dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAg
ICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5h
bWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0g
c3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVx
dWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBm
aWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2
NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1
ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9z
aXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9S
TUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1l
bWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVS
TCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5n
IHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMs
NyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2Vi
U3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBS
ZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5n
ZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1l
dGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAg
QWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2
NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2Vy
dmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAg
ICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgp
LnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJz
LmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Qu
c2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkg
ewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4
MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0
X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgp
KTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJh
bmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgp
IH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMt
PnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lz
dGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIg
OiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIp
OworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29u
bmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAg
ICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktp
dFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5
cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0g
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRh
LCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJ
Y3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3Jj
KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5y
ZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3
ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXli
aW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJp
bmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3Rh
dGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
QXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0NzlkNmJiNTI3Li4xYWYwZTU1
NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0zMjAsNyArMzIw
LDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBlbmRQaXBlbGluZTo6U3RyZWFt
VHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFs
TWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFkQ2Fwcyk7CiAgICAgYXV0byYg
Z3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyTVNFOjpzaW5nbGV0
b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIG9yaWdpbmFsTWVk
aWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQo
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgU3RyaW5n
IHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3RyZWFtVHlwZSA9IFN0cmVhbVR5
cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShkZW11eGVyU3JjUGFk
Q2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIHByZXNlbnRhdGlv
blNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11eGVyU3JjUGFkQ2FwcykudmFs
dWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMyYjJjNmVmYi4uMmNlYzY4NDY2
ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBl
JiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKIHsKLSAgICBhdXRvIG1z
ZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5
KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1h
a2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8v
Il9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxvYWRpbmcgJXMiLCBtc2VCbG9i
VVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVjYjMzLi45MTk2M2QzMjkw
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBi
b29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5H
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50
ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9m
cmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQ
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMi
KSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAg
ICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5z
dGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90
ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
ZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
QVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAK
ICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0
aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9y
Z2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsx
MjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9y
IEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8v
IEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBh
bmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlm
IChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8
fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0
IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsKICNp
ZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3Qi
X3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9z
KTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25z
R0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7
CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3Bp
YyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
X3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExB
VEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAg
Ly8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikK
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5
Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAog
ICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRf
U0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAg
ZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFz
aE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291
cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFw
LmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNv
dXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRy
eSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVy
biAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNs
YXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4
IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0
Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1f
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FS
UkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBS
T0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsK
ICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAg
ICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKSkgewogICAgICAgICAgICAg
bV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwog
ICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlz
SW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0g
OjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJl
c3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAg
aWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
biB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVw
dGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwog
ICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5
YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIg
c3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAg
Ly8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUg
T3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5Q
aXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93
cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1
ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZh
bGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2
YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0K
IAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8g
VXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdM
X0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5h
bERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjNhZTYyYmY2ZWVi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUg
c3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBh
Y2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRl
cy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1
dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAvLyBSZXNpemUgcmVndWxhciBG
Qk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAtMjQwLDExICsyNDAsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBj
b250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIp
KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigi
R0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykpIHsKICAgICAgICAgYXR0
cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMo
YXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2ZGFhLi5iMWY0YzY0N2E3NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhpcyBleHRlbnNpb24gdG8gcmVu
ZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0gICAgUkVMRUFTRV9BU1NFUlQo
c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiX3MpKTsKICAgICBHTF9SZXF1
ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsKIAogICAgIHZhbGlkYXRlQXR0
cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAgICAgICAgIG1fbGF5ZXIuc2V0
QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuaW1h
dGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhp
cywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAgY2xpZW50KCkubm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2FuaW1hdGlvblN0YXJ0VGltZSk7
CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3YTFjMjcyNWQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFRleHR1
cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlcigpCiAgICAgLCBtX2xh
c3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAgIFN0cmluZyBzaG93RlBTRW52
aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOworICAgIFN0cmluZyBzaG93RlBT
RW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpIH07CiAgICAgYm9vbCBvayA9
IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNob3dGUFNFbnZpcm9ubWVudC50
b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRlcnZhbCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRl
eCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTE0NTMsNyArMTQ1Myw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIAog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVk
KCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBtX2xh
c3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKIH0KIAog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9u
VGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wSW5uZXJM
YXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDb29yZGlu
YQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBBZGRpdGlvbmFsUHJvcGVydGll
cyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5ZXJUcmVlQXNUZXh0T3B0aW9u
cz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAmIExheWVyVHJlZUFzVGV4dE9w
dGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0
U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMp
OworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiX3Ms
IG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApp
bmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGVudW0gQ2xp
cGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4
dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1v
dmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiUFJJTUFSWSIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJQUklNQVJZ
Il9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCmluZGV4
IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcApAQCAtNzc5LDEw
MSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVy
Rm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNhc2UgR0RLX0tFWV9NZW51Ogog
ICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19LRVlfQWx0X1I6Ci0gICAgICAg
IHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7CiAgICAgY2FzZSBHREtfS0VZ
X0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgcmV0dXJuICJDbGVhciJf
czsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0dXJuICJEb3duIjsKKyAgICAg
ICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgIGNhc2UgR0RLX0tFWV9F
bmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAg
ICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0VudGVyOgogICAgIGNhc2UgR0RL
X0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJuOgotICAgICAgICByZXR1cm4g
IkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAgICBjYXNlIEdES19LRVlfRXhl
Y3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAgICAgcmV0dXJuICJFeGVjdXRl
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAg
IHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgotICAgICAgICByZXR1cm4gIkYy
IjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdES19LRVlfRjM6Ci0gICAgICAg
IHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgIGNhc2UgR0RLX0tFWV9G
NDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgcmV0dXJuICJGNSJf
czsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVybiAiRjYiOworICAgICAgICBy
ZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAgICAgICAgcmV0dXJuICJGNyI7
CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y4OgotICAgICAgICBy
ZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAgICBjYXNlIEdES19LRVlfRjk6
Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAgICAgICAgcmV0dXJuICJGMTAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0dXJuICJGMTEiOworICAgICAg
ICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEyOgotICAgICAgICByZXR1cm4g
IkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTM6Ci0g
ICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICByZXR1cm4gIkYxNCJf
czsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1cm4gIkYxNSI7CisgICAgICAg
IHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6Ci0gICAgICAgIHJldHVybiAi
RjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNzoKLSAg
ICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYxNyJfczsKICAgICBjYXNlIEdE
S19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAgICAgIHJldHVybiAiRjE4Il9z
OwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAg
cmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoKLSAgICAgICAgcmV0dXJuICJG
MjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNlIEdES19LRVlfRjIxOgotICAg
ICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgIGNhc2UgR0RL
X0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgcmV0dXJuICJGMjIiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICBy
ZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0OgotICAgICAgICByZXR1cm4gIkYy
NCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9IZWxwOgotICAg
ICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgIHJldHVybiAiSG9t
ZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAgICByZXR1cm4gIkluc2VydCI7
CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9MZWZ0OgotICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgY2FzZSBH
REtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgICAgIHJl
dHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfVXA6Ci0gICAgICAgIHJl
dHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAiX3M7CiAgICAgY2FzZSBHREtf
S0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgcmV0dXJuICJQYXVz
ZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVlbjoKICAgICBjYXNlIEdES19L
RVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICByZXR1cm4g
IlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdodDoKLSAgICAgICAgcmV0dXJu
ICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1Nl
bGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAgICByZXR1cm4gIlNlbGVjdCJf
czsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVybiAiVXAiOworICAgICAgICBy
ZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMg
VSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAgICAgIHJldHVybiAiVSswMDdG
IjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2FzZSBHREtfS0VZX0JhY2tTcGFj
ZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICByZXR1cm4gIlUrMDAwOCJfczsK
ICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNhc2UgR0RLX0tFWV8zMjcwX0Jh
Y2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAgcmV0dXJuICJVKzAwMDkiOwor
ICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmljb2RlKGdka19rZXl2YWxfdG9f
dXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJ
bnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7
Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJh
ZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFz
c2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBV
SUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NO
YW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewog
ICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQot
ICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJl
dHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJp
bmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
CkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVy
KiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChw
bGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2
ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lv
bk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0
cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAxODg3
ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRl
eHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4dCgpKTsKKyAgICB0ZXh0LnRl
eHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Il9zLCBuYW1lKCks
IGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRG
aWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKCJ0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKCJ0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25zdCBQYXN0ZWJvYXJkVVJMJikK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0
cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVTdHJpbmcoInRleHQvcGxhaW47
Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0
YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExp
YldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBAIFN0cmluZyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUp
CiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9MOgogICAgIGNh
c2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAgICByZXR1cm4g
IkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAgICAgIHJldHVybiAiQ2xlYXIi
OworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Eb3duOgotICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8v
ICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAgcmV0dXJuICJFbmQiOworICAg
ICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgIGNhc2UgV1BFX0tF
WV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVyOgogICAgIGNhc2UgV1BFX0tF
WV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICByZXR1cm4gIkVudGVy
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAgICByZXR1cm4gIkV4ZWN1dGUi
OworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxOgotICAg
ICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICByZXR1cm4gIkYyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIHJldHVybiAi
RjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAg
ICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6Ci0gICAgICAgIHJldHVybiAi
RjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GNjoKLSAgICAg
ICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0dXJuICJGNyJfczsKICAgICBj
YXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOworICAgICAgICByZXR1cm4gIkY4
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAg
IHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoKLSAgICAgICAgcmV0dXJuICJG
MTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjExOgotICAg
ICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgIGNhc2UgV1BF
X0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgcmV0dXJuICJGMTIiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICBy
ZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0OgotICAgICAgICByZXR1cm4gIkYx
NCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTU6Ci0gICAg
ICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAgY2FzZSBXUEVf
S0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICByZXR1cm4gIkYxNiJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIHJl
dHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0gICAgICAgIHJldHVybiAiRjE4
IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxOToKLSAgICAg
ICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIHJldHVybiAiRjIwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgcmV0
dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAgICAgICAgcmV0dXJuICJGMjIi
OworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjIzOgotICAgICAg
ICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgIHJl
dHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToKLSAgICAgICAgcmV0dXJuICJI
b21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNhc2UgV1BFX0tFWV9JbnNlcnQ6
Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgIHJl
dHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9Eb3duOgotICAgICAgICByZXR1
cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICBjYXNlIFdQ
RV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAiOworICAgICAgICByZXR1cm4g
IlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0gICAgICAgIHJldHVybiAiUGF1
c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNhc2UgV1BFX0tFWV8zMjcwX1By
aW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAgICAgY2FzZSBXUEVf
S0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJSaWdo
dCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAgICByZXR1cm4gIlNlbGVjdCI7
CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9VcDoKLSAgICAg
ICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5k
YXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgY2FzZSBXUEVfS0VZX0RlbGV0
ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsK
ICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICByZXR1cm4gIlUrMDAwOCI7Cisg
ICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9JU09fTGVmdF9UYWI6
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBjYXNlIFdQRV9LRVlfVGFiOgot
ICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVybiAiVSswMDA5Il9zOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJmLi40ZmE4MmJiZGUxNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNjMsNyAr
MTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3Jk
ZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBhdXRvIHNlbGVjdGVkVHJhY2tz
ID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyhtX3N0cmVhbSk7CiAgICAgYXV0
byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAg
ICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCIgOiAi
YXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAgICBHU1RfREVCVUcoIkNyZWF0
aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0
YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwpAQCAt
MjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgICAgIGlmIChjb2Rl
Y3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFpbnMoIm9wdXMi
X3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiOworICAgICAg
ICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7CiAgICAgICAgIGVsc2UgaWYg
KGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgo
Im1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5
cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQyMzc5ZjMzYjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKQEAgLTg1LDE0
ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIG1pbWVIZWFkZXIgPSBh
ZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVlTWFwIGtleVZhbHVlUGFpcnMg
PSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0
b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10
eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3Ig
PSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7CiAgICAgaWYgKG1pbWVQYXJh
bWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewogICAgICAgICBTdHJpbmcg
Y29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVuZE9mUGFydEJvdW5kYXJ5Owog
ICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpj
cmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7CiAgICAgICAgICAgICBjb250
ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgpOwogICAgICAgICAgICAgY2hh
cnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0g
ICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRlclZh
bHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJz
ZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSIpOworICAgICAg
ICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZv
ck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJzZWRD
b250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSJfcyk7CiAgICAgICAg
IH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOwogICAg
ICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBAIC0xMDksMTEgKzEwOSwxMSBA
QCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIG1pbWVQYXJhbWV0
ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2Rp
bmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJj
b250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVy
YXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRl
bnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0g
a2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7CisgICAgbWltZVBhcmFtZXRl
cnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC1sb2NhdGlvbiJfcyk7CiAg
ICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKICAg
ICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBtaW1lUGFyYW1ldGVyc0l0ZXJh
dG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYzYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6
OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdl
dERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJy
b3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBt
X2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3Vz
dG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWlu
Q0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAg
ICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4g
PT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAg
IGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2Rv
bWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09T
U3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9t
YWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsK
KyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UK
ICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291
cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRj
aChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgot
ICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFp
biA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NG
U3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0g
ICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9t
YWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1Jl
cEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5
c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBG
aWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Cisg
ICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURl
dmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAg
ICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
W25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVE
ZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWRE
ZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVmNjg4
MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3JpcHRp
b24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyht
X3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlfY2Vy
dF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNhdGVJ
bmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFjLi42
YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRv
U3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVz
dFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4
IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBA
QCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJpbmcg
cGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwg
IXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1
cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmlu
ZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAiLyI7
CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBs
YXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUuLmE3
YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENhY2hl
RW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSog
am9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkpOwog
CiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFkZXJG
aWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgi
LmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7
Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29udGVu
dEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6fkN1
cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojpz
YXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyBo
ZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiKTsK
KyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZpZWxk
LmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7Cisg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhlYWRl
ckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVy
RmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDNi
ZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4
NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVu
ZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQg
PSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4
RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBt
YWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDUu
LjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxI
YW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMp
CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAg
ICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAv
LyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5
IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1h
a2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5k
KCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0g
bWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVz
dEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIp
KTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50
ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRl
cihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVh
ZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7Cisg
ICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxI
YW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1Jl
cXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdS
ZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAg
ICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0
LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0MmRiYzk2
Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3VybFJl
cXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1ZXN0
KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIKLSAg
ICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1fY3Vy
bEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8gZWxl
bWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFlbGVt
ZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNlbmRE
YXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdlIHdh
bnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgogICAg
IGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAgICAg
bV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1
bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5z
ZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZvclB1
dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdlKHN0
YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4uYjNh
YjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEz
MCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVj
ZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5n
KCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxp
ZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9L
Il9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0YXRp
YyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBk
ZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAgY2hhciogY29va2llSmFyUGF0
aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAgICBpZiAoY29va2llSmFyUGF0
aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAgICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAjZWxzZQog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
NDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgZGVm
YXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUwOWQ3NGRj
OS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8o
Y29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNzbCkK
IHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNvbnN0
IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRfY3Vy
cmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0X25h
bWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5j
cHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBwc2xf
cmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRhIG9y
IG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hhciog
dG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4pKQot
ICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7
IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmlu
ZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGN1cmxF
cnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFpbjsKIAog
ICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmlu
ZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25z
dCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsKK0FT
Q0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9t
YWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQgZXJy
b3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNo
b3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5l
d1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRy
KTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAxMWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNvdXJjZVJl
c3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiAK
ICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX0hUVFBf
VkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOworICAgICAg
ICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4x
Iik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQVmVyc2lv
bigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3
MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1
ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAg
ICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVz
KGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7
IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxT
b3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpKTsK
LSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
b3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09IGRvbWFpbikgeworICAgICAg
ICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KFN0cmluZyB7
IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9KSA9PSBkb21haW4pIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4YTAzZmRmMDIuLjM0YTU3ZTVj
MmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihj
b25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
blBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhT
T1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFpbGluZ1VSTCwgcmVhc29uUGhy
YXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2RlLCBmYWlsaW5nVVJMLCByZWFz
b25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihT
b3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAgLTYxLDIyICs2MSwyMiBAQCBS
ZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3IoU291cE1lc3Nh
Z2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwogI2lmIFVTRShTT1VQMikKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1Jf
RE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
U3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RPTUFJTikgfSwgbWVz
c2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VSTChzb3VwX21lc3NhZ2VfZ2V0
X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2FnZS0+cmVhc29uX3BocmFzZSkp
OwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhtZXNzYWdlKSwKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1lc3NhZ2UpLAogICAgICAgICBz
b3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpmcm9tVVRGOChzb3VwX21lc3Nh
Z2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRpZgogfQogCiBSZXNvdXJjZUVy
cm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBH
RXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3Ry
aW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGluZ1VSTCwgU3RyaW5nOjpmcm9t
VVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7
IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCBmYWlsaW5n
VVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CiB9CiAKIFJlc291cmNlRXJy
b3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCB1bnNpZ25l
ZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiB7Ci0gICAgUmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKEdfVExTX0VSUk9SKSwgR19U
TFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1bmFjY2VwdGFibGVUTFNDZXJ0
aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19x
dWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VSUk9SX0JBRF9DRVJUSUZJQ0FU
RSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKSk7CiAgICAgcmVzb3Vy
Y2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICByZXNvdXJjZUVycm9yLnNldENl
cnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVzb3VyY2VFcnJvcjsKQEAgLTg4
LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoY29u
c3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcgZXJyb3JzIGZyb20gdGhhdCBm
aWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNlIHRoZSBzYW1lIHZhbHVlIGFz
IGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQgdGltZW91dEVycm9yID0gLTEw
MDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJvckRvbWFpbiA9ICJXZWJLaXRO
ZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1l
b3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91dCIsIFJlc291cmNlRXJyb3I6
OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHRpbWVvdXRFcnJvciA9
IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJvckRvbWFpbiA9ICJXZWJLaXRO
ZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW4sIHRp
bWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3Jt
SXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
U291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYzMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJj
ZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgog
ICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhz
b3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291cF9tZXNzYWdlX2dldF9yZWFz
b25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0YXR1c1RleHQoU3RyaW5nIHsg
c291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSB9KTsKIAogICAgIG1f
Y2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVyX2NlcnRpZmljYXRlKHNvdXBN
ZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2FnZV9nZXRfdGxzX3BlZXJfY2Vy
dGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkgKzY2LDkgQEAgUmVzb3VyY2VS
ZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0
IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgY29uc3QgY2hhciog
b2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShyZXNwb25zZUhlYWRl
cnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRDb250ZW50VHlwZS5pc051bGwo
KSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCAmJiBzbmlm
ZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAgICBjb250ZW50VHlwZSA9IHNu
aWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsg
c25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UKLSAgICAgICAgY29udGVudFR5
cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgb2ZmaWNp
YWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0dHBTdGF0
dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWltZVR5cGUo
TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0cmluZygp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhl
bi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1YzUxMTgyLi5hMmYwYzk1NDcy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEyICs2NSwxMyBAQCBzdGF0aWMg
U3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlGb3JEaWN0aW9uYXJpZXMoY29u
c3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3RyaW5nLCBWZWN0b3I8U3RyaW5n
Pj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsKKyAgICBhdXRvIGRpcmVjdG9y
eVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9yeVBhdGgpOworICAgIGZvciAo
YXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGhT
dHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRyYWN0TG9jYWxlRnJvbURpY3Rp
b25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Cisg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAgICAgICBjaGFyIG5vcm1hbGl6
ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0aChGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0NGU0MzZiNjVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC00MzQs
OCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKICAgICBT
dHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwogICAgIHN3aXRjaCAobmVnYXRp
dmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFyZW50aGVzaXM6Ci0gICAgICAg
IG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9ICIpIjsKKyAg
ICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAgbmVnYXRpdmVTdWZmaXggPSAi
KSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2ZUZvcm1hdFNpZ25TcGFjZVBy
ZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2ZVNpZ24gKyAiICI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAppbmRleCBhYWU2Yzk5ZGQw
NTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZl
bnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZp
ZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRj
aCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4g
IkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05U
Uk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAi
Q29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAi
U2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19D
QVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1
cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktf
UldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2lu
Il9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7
CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0g
ICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwog
ICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVy
biAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIi
CiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7Cisg
ICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRl
Il9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAg
ICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAg
cmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZL
X0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9z
OwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAg
ICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0
dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2
OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAg
ICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAg
ICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0Yx
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9z
OwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAg
IHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNl
IFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAg
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAg
ICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToK
LSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJl
dHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZL
X0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0
Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOwor
ICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAg
ICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAg
ICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAg
ICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAg
ICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAg
ICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJuICJQcmludFNj
cmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JP
TEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNj
cm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNl
bGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19V
UDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsK
ICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAg
ICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAg
ICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5n
c1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgdXBsb2FkRmlsZVRleHQo
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQiOworICAgIHJl
dHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0KCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAgICByZXR1cm4gImFsbCBm
aWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGI2YjA3NjM3
Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQsMzQgQEAgU3RyaW5nIE1J
TUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQog
ICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlwZU1hcDsKICAgICBpZiAo
bWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3aXRoIGluaXRpYWwgdmFs
dWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQvcGxhaW4iKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRmIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIiwg
InRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCIsICJ0ZXh0L3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hzbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3htbCIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGljYXRpb24veC13ZWJhcmNo
aXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImltYWdlL3N2Zyt4bWwiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiLCAiaW1h
Z2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiLCAiaW1hZ2UvdGlmZiIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9pY28iKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCIs
ICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyIsICJh
cHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEi
LCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiX3MsICJ0ZXh0
L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiX3MsICJhcHBsaWNhdGlv
bi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9zLCAiYXBwbGljYXRpb24v
cG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIl9zLCAidGV4dC9j
c3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3MsICJ0ZXh0L2h0bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQvaHRtbCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRpb24vcnNzK3htbCJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywgImFwcGxpY2F0aW9uL3gt
d2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIl9zLCAiaW1hZ2Uv
c3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiJfcywgImltYWdlL3N2
Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJfcywgImltYWdlL2pwZWci
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJpbWFnZS9qcGVnIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9wbmciX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIl9z
LCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiX3MsICJ0ZXh0
L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIl9zLCAiYXBw
bGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEi
X3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhs
Il9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0ID0g
bWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsy
NDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5
cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVU
QyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNm
Rm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgi
dGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRX
Rm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQo
KS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAg
IHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAg
LTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JC
aW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4
dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsK
LSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0
bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwog
fQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0
cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBp
ZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERh
dGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBp
ZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBA
IFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAg
ICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDog
Z2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
SW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0
aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3Rv
cjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1
cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxU
b01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAg
IG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAg
aWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwg
Jm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2Jq
ZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcg
dXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVS
TDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5
c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAg
IFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVT
dHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0
U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQg
PSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8v
IHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3Rl
IGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1h
cmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBk
YXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51
cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRh
ID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERh
dGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJl
ZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAg
ICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xp
cGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlw
Ym9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMg
dGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRp
bi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9
IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4
dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkg
fTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9z
ZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4
dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJv
bVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAg
ICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0
cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlT
dHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0u
dHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3Rl
bUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUyZGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwyNSArODUsMjUgQEAgc3Rh
dGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2FzZSBXaW5kb3dzQ0UxOgog
ICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6Ci0gICAgICAgIHJldHVy
biAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBDRSJfczsKICAgICBjYXNl
IFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAuTkVUIjsKKyAgICAgICAg
cmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5kb3dzM18xOgotICAgICAg
ICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDMuMSJfczsK
ICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1IjsKKyAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93czk4OgotICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiX3M7CiAgICAg
Y2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIl9zOwogICAgIGNhc2Ug
V2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7CisgICAgICAgIHJldHVybiAi
V2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
Y29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRvd3NOVDMpID8gIldpbmRv
d3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWlseU5hbWUgKyBTdHJpbmc6
Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5vcik7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3IpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0YXRpYyBXT1JEIHByb2Nlc3Nv
ckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVjdHVyZVRva2VuRm9yVUFTdHJp
bmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJldHVybiAiOyBXT1c2NCI7Cisg
ICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJl
KCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAgICAgICAgcmV0dXJuICI7IFdp
bjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9JQTY0KQotICAg
ICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElB
NjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAppbmRleCBjZmJm
ZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCkBAIC00NywxNyArNDcsMTcg
QEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlwZSwgNz4gb3BlblhSQnV0dG9u
VHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJpbmcoT3BlblhSQnV0dG9uVHlw
ZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpU
b3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpU
aHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25U
eXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJfczsKKyAgICBjYXNlIE9wZW5Y
UkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJfczsKKyAgICBjYXNlIE9wZW5Y
UkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJfczsKIAogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApAQCAtODAsMTEgKzgwLDExIEBA
IGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAyPiBvcGVuWFJBeGlzVHlwZXMg
ewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5YUkF4aXNUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VG91Y2hwYWQ6
IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRodW1ic3RpY2s6
IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VG91Y2hwYWQ6
IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VGh1bWJzdGlj
azogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2MzcyYmIzNTZlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKQEAgLTEy
NywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNzVG9TdHJpbmcoWFJIYW5kZWRu
ZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVzcykgewogICAgIGNhc2UgWFJI
YW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAgICAgICByZXR1cm4g
ImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4g
InJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3Bv
cnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3Jk
KCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dv
cmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9y
VGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApp
bmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChS
ZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBp
ZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJy
b3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmpl
Y3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVz
c2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygi
bWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclBy
b21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVz
dWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJy
b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vz
c2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAg
ICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVy
bCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygi
dXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6
OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1
LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgi
eCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIs
IHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywg
eC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5
LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3Ms
IFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYm
IGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0
aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0Iiwg
aGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0
aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUo
ImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdD
b250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3
LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1l
bnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVV
cGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAg
ICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVu
dC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9h
ZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07
IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAg
ICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0
SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3
ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRl
RWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0Vk
aXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIg
ICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIg
ICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246
OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAg
fSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9
Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBT
dHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFy
c2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAg
ICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFj
dGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1v
dmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZv
Y3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1
c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7
IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1l
bnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVF
bGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBT
ZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5z
ZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5n
dGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2
ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJv
dyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBu
b3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAg
ICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhj
cmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1
MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShj
b25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUi
X3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3Ms
IGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNv
b2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJw
YXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmco
KSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2Vj
dXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRw
T25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkp
OwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVT
aXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1l
U2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJu
IGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1
dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQp
CiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5w
dXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2Up
CitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291
cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAg
ICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOwor
ICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9p
bnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQ
b2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgot
ICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9z
OwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAi
VG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2lu
dGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0
dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0
dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAg
ICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJW
aWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAg
ICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBj
YXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVu
dCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmlu
ZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQog
ICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZh
ciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmlu
ZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0
RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsK
ICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50
IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAg
ICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9
IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9Owog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQg
V2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAg
ICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcg
PSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVj
dCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlk
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAg
ICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Iikp
IHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQ
cm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmlu
ZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAg
ICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVl
ID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0
byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24i
X3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRy
aXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmls
aXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFu
KCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0
cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlm
eSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2Fw
YWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9y
bWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5
Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3ki
X3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRl
eCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBh
YmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0
Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1
ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5n
ZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFk
ZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRp
ZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRh
cmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGll
cy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFy
Z2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJp
bGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYg
dGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRD
YXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFs
dWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBj
YXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFh
NDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZl
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhU
VFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAog
ICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgx
PkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+
QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAg
ICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2Ri
YTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgs
NyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25z
dCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0
ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAg
ICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Iik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRp
b24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlU
ZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAg
IC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7Cisg
ICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFp
bHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdl
Q29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJl
VG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUx
ODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSAr
MjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBw
cm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAx
LjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsK
KyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgot
ICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAg
ICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEz
Li5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7CiAgICAgaWYgKG1fY3VycmVu
dFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAy
KQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKG1fY3VycmVu
dFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JFRElSRUNUUywgIlRvbyBtYW55
IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRF
cnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRVU19UT09fTUFOWV9SRURJUkVD
VFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0gICAgICAgIGRpZEZhaWwoUmVz
b3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBTT1VQX1NF
U1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkpOworICAgICAgICBkaWRGYWls
KFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9TRVNTSU9OX0VS
Uk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJlbnRS
ZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkpOwog
I2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTksNyArOTU5LDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVjdGlvbigpCiAgICAgaWYgKCFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIp
KSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdl
IHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVk
aXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1f
c291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8fCAhcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtX3NvdXBNZXNz
YWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9z
KTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CiAgICAgICAgICAg
ICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgICAgIH0KQEAgLTEwMzcsNyAr
MTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0
cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAgICAgaWYgKHRhc2stPm1fc291
cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3I6OmdlbmVy
aWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAg
ICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAgICAgdGFzay0+ZGlkRmFpbChS
ZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29k
ZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5n
IHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2st
Pm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0
U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lucHV0U3RyZWFtKTsKICAgICBt
X2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAgICAgYXV0byogaGVhZGVycyA9
IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVycyhtX211bHRpcGFydElucHV0
U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKKyAgICBTdHJpbmcgY29udGVu
dFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0
LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKICAgICAg
ICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVw
ZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBlbHNlCiAgICAgICAg
IG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRlKG1fZG93bmxvYWREZXN0aW5h
dGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVsbHB0ciwgJmVycm9yLm91dFB0
cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAgICAgZGlkRmFpbERvd25sb2Fk
KGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOwor
ICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9u
c2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQoKSkpOwogICAgIG91dHB1dFN0
cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25sb2FkSW50ZXJtZWRpYXRlRmls
ZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkgewotICAgICAgICBkaWRGYWls
RG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNz
YWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3Io
bV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdf
T1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93bmxvYWRDYWxsYmFjayhHT3V0
cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKICAg
ICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRwdXRTdHJlYW0sIHJlc3VsdCwg
JmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAg
IHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IodGFzay0+bV9y
ZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFzay0+ZGlkRmFpbERvd25sb2Fk
KGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkV3JpdGVE
b3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAgICAgQVNTRVJUKG1fZG93bmxv
YWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9k
b3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBtX2Nh
bmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0g
ICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25z
ZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVz
dGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdl
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4LDEwICsxNjg4LDEwIEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQog
ewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0LnVybCgpKTsKICAgICBpZiAo
Z19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkp
IHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4dC9odG1sIik7CisgICAgICAg
IG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9IGVsc2UgewotICAgICAgICBj
b25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGlu
Zm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2ZpbGVfaW5mb19nZXRfY29udGVu
dF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgICAgICBtX3Jlc3BvbnNlLnNl
dFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcx
OSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNr
KEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0g
YWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZh
aWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3It
PmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5n
IHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2st
Pm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkp
OwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVh
bSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpl
bnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmlsZSwgR0FzeW5jUmVzdWwKICAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0
b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1lcmF0ZV9jaGlsZHJlbl9maW5p
c2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZXJyb3IpCi0gICAg
ICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+
ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291
cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJy
b3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVy
cm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUod2Vi
a2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9m
aXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRl
eCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0KEdSZWZQdHI8U291cFdlYnNv
Y2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVycHJldF9jYXN0PEdDYWxsYmFj
az4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwgcmVpbnRlcnByZXRfY2FzdDxH
Q2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIG1fY2hhbm5lbC5kaWRD
b25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3Byb3RvY29sKG1fY29ubmVjdGlv
bi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBtX2NoYW5uZWwuZGlkQ29ubmVj
dChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9wcm90b2NvbChtX2Nvbm5l
Y3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKIAogICAgIG1fY2hhbm5lbC5k
aWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpKTsKICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV9oYW5kc2hha2VNZXNzYWdl
LmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggYTliZWM1ODcz
ZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwyNSArNTQsMjIgQEAgc3RhdGlj
IFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmplY3QoV0tSZW1vdGVPYmpl
Y3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJlLCBjb25zdCBTdHJpbmcmIGxv
Y2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqd2lyZSwg
TlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3aXJlKQorICAgIGlmIChbbG9j
YWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAg
IGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxv
Y2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsKLQotICAgICAgICBpZiAo
bG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWdu
ZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAgICAgIGlmIChzdHJjaHIoIkJj
IiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10odW5pY2hhciBjKSAtPiB1bmlj
aGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5n
ZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6IGM7CisgICAgfTsKKyAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBj
aGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRl
eDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3RhdGljIE5TSW52b2NhdGlvbiAq
ZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIpCiAgICAgaWYg
KCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5h
cmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9jYXRpb24gaGFkIG5vIHR5cGUg
c2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9kU2lnbmF0dXJlID0gdHlwZVNp
Z25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtp
bnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKLSAgICBp
ZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUocmVtb3RlTWV0aG9kU2ln
bmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9k
U2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZzsKKyAg
ICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUodHlwZVNpZ25hdHVy
ZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkxvY2FsIGFuZCByZW1v
dGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlIGZvciBtZXRob2QgXCIlc1wi
Iiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAiKG5vIHNlbGVjdG9yKSJdOwog
CiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDlj
MGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcg
QEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkK
ICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0KIAotc3RhdGljIFN0cmluZyBy
ZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJ
bnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkK
IHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRob2Q6CiAgICAgY29uc3QgY2hh
ciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1ldGhvZFR5cGVFbmNvZGluZyhw
cm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3LDEyICsxOTcsMTIgQEAgc3Rh
dGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNl
bGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRob2RUeXBlRW5jb2RpbmcpOwog
ICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUgKnRhcmdldE1ldGhvZFNpZ25h
dHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5
cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNpZ25hdHVyZSk7CiAgICAgaWYg
KCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJl
Rm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0y
NDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVt
b3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtO
U01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tT
aWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0gICAgICAgIFN0cmluZyBleHBl
Y3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3Rv
Y29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAgIE5TU3RyaW5nICp3aXJlQmxv
Y2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpy
ZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOworICAg
ICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1
cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCi0gICAg
ICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICgh
ZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0
aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiBjb3VsZCBub3Qg
ZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6
Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDog
RmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJXMgIT0gJXMiLCB3aXJl
QmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRv
IHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0gJUAiLCB3aXJlQmxvY2tTaWdu
YXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI5OCw3ICsyOTgs
NyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52
b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9OwogCiAgICAgICAgIFJlZlB0
cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6
OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtl
U3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2Vy
XShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9f
TlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dpcmVCbG9ja1NpZ25hdHVyZSBV
VEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNo
ZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAgICAgICAgICAgYXV0byBlbmNv
ZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBhbGxvY10gaW5pdF0pOwogICAg
ICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRpb24gZm9yS2V5Omludm9jYXRp
b25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVS
SVJlcXVlc3QuY3BwCmluZGV4IDI1NTcyNmYzZTI2ZS4uMjJhM2I3YzVkYjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJ
UmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHVy
aSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHVyaSB9
IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z3RrL0RyYWdTb3VyY2VHdGs0LmNwcAppbmRleCAwOWZlYjE0YmUwMTYuLjJhN2NiZjlmNDFmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3Rr
NC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3Rr
NC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25E
YXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlm
IChtX3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdC
eXRlcz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEtPmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVz
KCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zv
cl9ieXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOwor
ICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0
ZXMoUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdl
dCgpKSk7CiAgICAgfQogCiAgICAgYXV0byogc3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZh
Y2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIy
MjUuLjFmNTIyZGU5NmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRHJvcFRhcmdldDo6RHJv
cFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlf
dGFyZ2V0cyhsaXN0LmdldCgpLCBEcm9wVGFyZ2V0VHlwZTo6VVJJTGlzdCk7CiAgICAgZ3RrX3Rh
cmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygi
X05FVFNDQVBFX1VSTCIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6TmV0c2NhcGVVUkwpOwogICAgIGd0
a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJp
bmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBEcm9wVGFyZ2V0
VHlwZTo6U21hcnRQYXN0ZSk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBn
ZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIERyb3BUYXJnZXRUeXBlOjpDdXN0
b20pOwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0KG1fd2ViVmlldywgc3RhdGljX2Nhc3Q8R3RrRGVz
dERlZmF1bHRzPigwKSwgbnVsbHB0ciwgMCwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0Fj
dGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5L
KSk7CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3QobV93ZWJWaWV3LCBsaXN0Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRh
cmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrNC5jcHAKaW5kZXggYWJiYWNhMjljNzQxLi43NDc5MTQyYjlmMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAg
IGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVy
LCAidGV4dC91cmktbGlzdCIpOwogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRf
bWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiX05FVFNDQVBFX1VSTCIpOwogICAgIGdka19jb250
ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiYXBwbGlj
YXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIik7Ci0gICAgZ2RrX2NvbnRlbnRfZm9ybWF0
c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpndGtUeXBlKCkpOworICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWlt
ZV90eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNo
YXJhY3RlcnMoKSk7CiAgICAgYXV0byogdGFyZ2V0ID0gZ3RrX2Ryb3BfdGFyZ2V0X2FzeW5jX25l
dyhnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfZnJlZV90b19mb3JtYXRzKGZvcm1hdHNCdWls
ZGVyKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZ
IHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ19zaWduYWxfY29u
bmVjdCh0YXJnZXQsICJhY2NlcHQiLCBHX0NBTExCQUNLKCtbXShHdGtEcm9wVGFyZ2V0QXN5bmMq
LCBHZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fybmlu
Z0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fy
bmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fybmlu
Z0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNC
YXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1h
bHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlk
ZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAi
aHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJl
dHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZh
cmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRt
bD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93
c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMs
OCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1
bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5n
OwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJv
dmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29t
L2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29n
bGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICBy
ZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJp
Il9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVw
b3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNv
Y29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9s
bGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5
c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0g
ICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5m
bywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0
ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJf
cXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250
cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVp
bnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQy
NDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBz
ZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0
aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxl
LndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBlOGI5
YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3
cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBpZiAoc2Vs
ZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGljYXRpb24v
dm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OlNtYXJ0
UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAgICAgICAg
Z3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0
cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwgQ2xpcGJv
YXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0
LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRhcmdldFR5
cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1RhcmdldEVu
dHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0LmdldCgpLCAm
bnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3Jp
dGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAgICAgICBj
YXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBpZiAoZGF0
YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICBh
dXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAgICAgICAg
ICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50
ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUo
KSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBi
dWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9z
ZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4IDA3
YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6
OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAgICAgaWYg
KHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVz
PiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7
CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9i
eXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMo
KSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1wdHkoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3
Mjk0OTQxY2FhMmIuLmZiZTAyZWM4ZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTEsNyArMzg1MSw3IEBAIHZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlv
bkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQg
aXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6
OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBk
b21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIg
c2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAg
V0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3Jp
bmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAg
CiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBs
YXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAot
ICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJL
ZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAg
ICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAor
ICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToK
LSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSsw
MDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygp
KTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAg
ICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0Nv
bW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIs
ICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAg
ICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUi
LCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAg
IlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBA
IC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29u
c3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3Vt
ZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZv
clVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2Vy
QWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4g
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04
Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZp
ZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAg
ICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Yg
d2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVT
aWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4K
LSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
ciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBp
ZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4
IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVy
eVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4i
LCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXco
KS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAg
ICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1
bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVs
bHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tT
cGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBT
dHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVs
bGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1t
YXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBp
bnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVk
NmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0
RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKill
bmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVF
bmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSkt
PmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1
Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50
V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQo
W3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVl
KTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWls
eSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4u
YzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3Np
YmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmos
IG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3Vu
dDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVC
YXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNj
ZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdO
RCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAK
QEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFy
eVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFn
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMw
MmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRE
b3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1
bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5E
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAg
SGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7
CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAgICAgICAoKmkpLT5S
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURl
bGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00Mywx
MyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVs
dFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7
CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1
bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVs
dFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0
UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBN
ZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1v
cnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1l
bW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdi
Mzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0
aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWci
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsK
IH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlv
blByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Q
cm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBS
ZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXgg
OGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGlj
YXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9u
Q2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNo
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBs
aWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBT
dHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBs
aWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2Rl
YmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02Miwx
MyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNo
aXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0K
IAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3Qo
UmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2Fy
ZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0Zvcndh
cmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3Qi
X3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAt
NjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQog
ICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0Lmdl
dCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0Zv
cndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tG
b3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3
MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApA
QCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6Oldl
YkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsK
IH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3Mu
Y3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3Rp
Y3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0
YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNz
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNv
cmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0
aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3Jl
U3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRw
dHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAg
ICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBj
dXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1
cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52
YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0s
IGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFk
b3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXAp
KTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcg
KzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBl
Q291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNP
YmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3Vu
dE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVn
aW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNl
dChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNl
dChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRy
PElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNy
ZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVO
YW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0
aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiog
c3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9i
YWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9u
ZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRk
KCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMu
YWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmll
bGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQo
IkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2Ny
aXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1v
cnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5
dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZl
ZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJf
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5j
b21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0
ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3Rp
Y3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJf
cywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVh
cEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOwor
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlz
dGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBA
IC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFu
ZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRv
bUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVs
ZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJm
YWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0
S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3
LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBl
bXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMg
b24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAg
ICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0
IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAg
ICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0
cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzku
LmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1
bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2Vi
RGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291
cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNl
KCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBX
ZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
Njc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJh
c2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFi
YXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRh
YmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0z
NSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0
YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3Vt
ZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9h
ZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExv
YWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIi
X3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVk
RGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1
MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2Fk
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsK
IH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRv
d25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0g
RGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdl
YkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRi
OWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5j
cHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVy
cm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21h
aW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsK
KyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVS
TEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7
CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0
ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlz
LCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJj
ZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNv
dXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdl
YlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3Vy
Y2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQog
CiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2Eu
LmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxl
bWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVt
ZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5
QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQog
ICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJv
cGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFn
KiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9y
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcx
YmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApA
QCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9y
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVy
cm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAg
V2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0
ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0
YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAg
ICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkp
OwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRt
bCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsKIAogICAgIFN0cmlu
ZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29k
aW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxl
Y3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4
ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
Il9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19P
SzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyAr
MzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihS
ZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBv
bGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9s
aWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJm
NzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxH
ZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5k
ZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAg
Q09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNy
ZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9z
aXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAog
SFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdi
Yi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
VE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlv
bkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2Vi
SFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlv
bkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9u
KiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41
MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04
OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNl
ckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0
b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7
CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJl
ZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgp
CiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5
OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9y
eUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkK
ICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMp
OwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhp
c3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIs
NyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhp
c3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2Ez
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMg
KzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdl
YlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0
ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3Bl
Y3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5z
cGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rv
cjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJK
YXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkph
dmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVj
dG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9y
Il9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0
b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3
Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xh
c3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2Vi
S2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRl
SklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2Vi
S2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdl
TG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAK
aW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0
TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVz
c2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktp
dE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzEx
ZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3Rh
dGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBX
ZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0
YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0
YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3
NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0
YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0
KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBA
QCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0
YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRh
YmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRp
b25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNw
cAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5h
dmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5X
ZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRh
KiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9u
c2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVu
dFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3Rp
ZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwg
SVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24i
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAK
IFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJl
bGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
Yk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9u
OjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9
MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4u
NmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZp
Y2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmlj
YXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJf
cyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZl
cmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQ
cmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldl
YlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVu
Y2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2Vi
UmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2Vi
UmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
UmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQs
MTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJT
Y3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtu
b3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNw
cAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2Ny
aXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQp
CiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xh
c3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRX
b3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5n
ZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNj
cmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFu
ZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdl
YlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9y
aWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3Mp
OwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2lu
Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5
Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJp
YWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFs
dWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFs
dWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1
ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
CkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNy
ZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRl
cmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwog
fQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAK
IEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1
OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMg
KzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAK
IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
Q3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQog
CiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQog
CiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApp
bmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAg
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rp
b25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5X
ZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVS
TFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNk
YmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVk
U2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNw
b25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJl
c3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpj
cmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdl
YlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFz
IHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygp
LCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBp
bnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXgg
NDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQog
CiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQog
ewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2Vi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBX
ZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAt
NDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0t
OwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAog
V2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBA
QCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJh
bSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBj
YXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoK
LSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3Mp
LmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVu
dC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0g
ZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50
KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0
cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktp
dCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhv
dyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBz
aG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
NDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24q
IC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxU
IFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChf
SW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7Cisg
ICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3Io
KS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VM
VCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUi
KS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQ
cml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDEx
IEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2Uo
KQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAog
V2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNw
cAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywx
NSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VS
VF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3Mp
KTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3Mp
KTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0g
ICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAi
KSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAg
ICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsx
MzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNl
ZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24g
b2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFT
U0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNl
dC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIi
X3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVz
dHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNk
YzQ4ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBw
UHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWlu
U1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAt
MjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQog
PC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBS
ZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0
aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0Fw
cEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpz
ID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9
IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9u
c2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
ZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBC
bG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7
dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3Bv
bnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2Ny
aXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRB
bGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJl
c3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQu
aHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykp
IH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2Zl
dGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdl
YlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChm
ZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFs
ZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVy
dCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQt
VHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZl
cicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmll
dyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0
KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9y
dDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwog
CiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAg
ICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAg
IHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2Vy
dmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZv
aWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7
CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAg
ICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAg
ICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cu
anMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAg
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4
LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3RO
b25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4
cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+
CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2co
J0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZh
bHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5
bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBA
IGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2Vu
dEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBp
bml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3Rh
dGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlh
dGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4u
aHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2Fk
IFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlv
bi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9u
Lm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVu
dGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0p
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0
PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVx
dWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVT
VFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJl
Q29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5C
eXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9y
ZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVu
ZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxi
b2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdh
Y2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3
LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1l
PgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1l
VGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0p
RE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRh
dGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7
ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsg
ZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRy
LCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFw
cEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0
QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20u
YXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFs
aXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFs
aXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZh
Y3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9u
QXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBA
QCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIg
Kil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciog
bWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAs
OSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRo
ZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVT
T1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4
NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4o
ZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7
CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5
OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxs
b3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJf
cywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50
LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJl
Y29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25l
ID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRv
IGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBm
cm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91
bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjog
U2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9z
OwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgi
L21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAg
ICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBt
YWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dl
YnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBA
IC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2Vy
dmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAg
aXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24g
c3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3Mi
X3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0
KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNl
YTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4
MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNz
U3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAg
ICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0
bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0s
ICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAor
ICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
InRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUt
b3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nl
c3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAg
dXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGlu
YXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9z
cy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisg
ICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
dGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1v
cmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpp
bmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlv
blBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAg
ICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJh
dGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1
cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAt
MTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUo
c3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFp
blB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
Z1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBk
ZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0g
Q0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1
bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlv
bgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0
cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBD
R1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8
Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tD
b250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBD
R1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdh
dGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRv
cHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0z
NzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250
ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6
emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsg
fSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250
ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5p
bF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmlu
Z3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApA
QCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9u
TmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFs
bHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0
IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihX
S0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4
Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0
aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50
ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Vz
ZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEv
VG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50
OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJp
bmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBs
ZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9Owog
ICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAg
VVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVz
dGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484801"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456494</attachid>
            <date>2022-04-02 20:47:16 -0700</date>
            <delta_ts>2022-04-02 21:01:22 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>281490</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA5
ZGNlYWZjNWI4M2MuLjIxYzE2MzEwNTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi5lYTI1Mjcz
MmNhZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWUgPSBBU0NJ
SUxpdGVyYWw6Om51bGwoKTsKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2Fz
ZSBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkOgogICAgIGNhc2UgQVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbWFnZU92
ZXJsYXlDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVybGF5Q2hhbmdlZCI7Cisg
ICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYUGFnZVNjcm9sbGVkOgotICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVk
IjsKKyAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCJfczsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBBWFNlbGVjdGVkU3RhdGVDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYU2VsZWN0
ZWRDZWxsc0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRDZWxsc0NoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZFRleHRDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYTGl2ZVJl
Z2lvbkNoYW5nZWQ6CiAgICAgY2FzZSBBWExpdmVSZWdpb25DcmVhdGVkOgotICAgICAgICBuYW1l
ID0gIkFYTGl2ZVJlZ2lvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYTGl2ZVJlZ2lvbkNo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgbmFt
ZSA9ICJBWEludmFsaWRTdGF0dXNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOgotICAgICAg
ICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEV4cGFuZGVkQ2hhbmdlZDoKLSAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhFeHBhbmRl
ZENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDdXJyZW50U3RhdGVDaGFu
Z2VkOgotICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IEFYU29ydERpcmVjdGlvbkNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9u
Q2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC05OCwxNSArOTgs
MTYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3Jl
T2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW8KICAgICAvLyBpT1Mgbm90aWZpY2F0aW9ucyBt
dXN0IHVsdGltYXRlbHkgY2FsbCBVSUtpdCBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
LgogICAgIC8vIEJ1dCBXZWJDb3JlIGlzIG5vdCBsaW5rZWQgd2l0aCBVSUtpdC4gU28gYSB3b3Jr
YXJvdW5kIGlzIHRvIG92ZXJyaWRlIHRoZSB3cmFwcGVyJ3MKICAgICAvLyBwb3N0Tm90aWZpY2F0
aW9uIG1ldGhvZCBpbiB0aGUgc3lzdGVtIFdlYktpdEFjY2Vzc2liaWxpdHkgYnVuZGxlIHRoYXQg
ZG9lcyBsaW5rIFVJS2l0LgotICAgIFN0cmluZyBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0
aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7Ci0gICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUu
aXNFbXB0eSgpKQorICAgIGF1dG8gbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRm
b3JtTmFtZShub3RpZmljYXRpb24pOworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBhdXRvIG5zTm90aWZpY2F0aW9uTmFtZSA9IG5v
dGlmaWNhdGlvbk5hbWUuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkg
cG9zdE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgLy8gVG8g
c2ltdWxhdGUgQVggbm90aWZpY2F0aW9ucyBmb3IgTGF5b3V0VGVzdHMgb24gdGhlIHNpbXVsYXRv
ciwgY2FsbAogICAgIC8vIHRoZSB3cmFwcGVyJ3MgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbi4KLSAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICBbb2JqZWN0LT53cmFwcGVyKCkgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpuc05vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogfQogCiB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBWENvcmVPYmplY3QqIG9iamVjdCwgY29uc3QgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQmLCBj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KaW5kZXggNzkxOTBjMTk1Yjc3Li41MzhiNzg1ZDY5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wp
YWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nlc3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVj
dGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFn
ZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcg
bm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFt
ZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNhdGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAg
ICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRv
IG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVO
U1N0cmluZygpOworICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5h
bWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9pbnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2li
aWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAgICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJBWFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0i
LCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnldOwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5
UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMi
IDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlm
aWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRl
c3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0
IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8gb3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQg
c2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDIuLjY0YjhjYWU3NjQzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1Njks
NyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldv
cmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5T
KQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsK
KyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05U
Uk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDog
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIp
OwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25v
cmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxLi44MmZhNzVmOTY3MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEZpbGVQYXRoKGNvbnN0IFN0
cmluZyYgcGF0aCwgUHJlc2VudGF0aW9uU2l6ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgYXV0byBtYXJrdXAgPSB1cmxUb01hcmt1cChVUkwoeyB9LCBwYXRoKSwgcGF0aCk7
Ci0gICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVu
dCgpLCBtYXJrdXAsICJmaWxlOi8vIiwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KSk7CisgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1
bWVudCgpLCBtYXJrdXAsICJmaWxlOi8vIl9zLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNv
bnRlbnQpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3Mv
RWRpdG9ySU9TLm1tCmluZGV4IDkwMGVkNWZmODRiOS4uMzFlZmMyODMwNTNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRp
dG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRp
bmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFs
IG5ld1ZhbHVlID0gQVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgVGV4dEFsaWduTW9kZSB0ZXh0
QWxpZ24gPSAqdmFsdWU7CiAgICAgc3dpdGNoICh0ZXh0QWxpZ24pIHsKICAgICBjYXNlIFRleHRB
bGlnbk1vZGU6OlN0YXJ0OgpAQCAtMTAwLDIxICsxMDAsMjEgQEAgdm9pZCBFZGl0b3I6OnNldFRl
eHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlv
biBkaXIKICAgICAgICAgICAgIC8vIG5vLW9wCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBXcml0aW5nRGlyZWN0aW9uOjpMZWZ0VG9SaWdodDoKLSAgICAgICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OlJpZ2h0VG9MZWZ0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICAgICAgbmV3VmFsdWUgPSAicmln
aHQiX3M7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6V2ViS2l0TGVmdDoKLSAgICAgICAgbmV3VmFsdWUgPSAicmlnaHQiOworICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpSaWdodDoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdFJpZ2h0OgotICAgICAgICBu
ZXdWYWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgbmV3VmFsdWUgPSAibGVmdCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpDZW50ZXI6CiAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBFZGl0b3I6OnNl
dFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVj
dGlvbiBkaXIKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKCFuZXdWYWx1ZSkKKyAg
ICBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEVsZW1lbnQq
IGZvY3VzZWRFbGVtZW50ID0gbV9kb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpOwpAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgRWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMoKQogICAgIGF1
dG8gZGVmYXVsdFN0eWxlID0gZWRpdGluZ1N0eWxlLT5zdHlsZSgpLT5tdXRhYmxlQ29weSgpOwog
ICAgIAogICAgIC8vIFRleHQgd2lkZ2V0cyBpbXBsZW1lbnQgYmFja2dyb3VuZCBjb2xvciB2aWEg
dGhlIFVJVmlldyBwcm9wZXJ0eS4gVGhlaXIgYm9keSBlbGVtZW50IHdpbGwgbm90IGhhdmUgb25l
LgotICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiKTsKKyAgICBkZWZhdWx0U3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjApIl9zKTsKICAgICAKICAgICAvLyBSZW1vdmUgcHJvcGVydGllcyB0aGF0IHRoZSB1c2VyIGNh
biBtb2RpZnksIGxpa2UgZm9udC13ZWlnaHQuIAogICAgIC8vIEFsc28gcmVtb3ZlIGZvbnQtZmFt
aWx5LCBwZXIgSEkgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGli
d3BlL0VkaXRvckxpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwCmluZGV4IGI5NzhlMmU4ZjhlOC4uNDkxNDkwNTc5ZTZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcgKzQ2
LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21Q
YXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYgZnJh
bWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5yZWFk
U3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFya3Vw
ID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7CiAg
ICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCks
IG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKIAog
ICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsKICAg
ICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdl
LCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykpOwog
ICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKaW5kZXggNGI2ZDBlNWI0NDQ3Li4wMTgyOGVmNzIzZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVj
dCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJp
bmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJl
dHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjLi4zZDI3ZTg2NjQ5ODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIE9mZnNj
cmVlbkNhbnZhcyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE9mZnNjcmVlbkNhbnZhcz4sIHB1
YmxpYyBDYW52YXNCCiBwdWJsaWM6CiAKICAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGVPcHRpb25zIHsK
LSAgICAgICAgU3RyaW5nIHR5cGUgPSAiaW1hZ2UvcG5nIjsKKyAgICAgICAgU3RyaW5nIHR5cGUg
PSAiaW1hZ2UvcG5nIl9zOwogICAgICAgICBkb3VibGUgcXVhbGl0eSA9IDEuMDsKICAgICB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IDRk
ZmRlNjYzZThiYi4uNTBhZDVjYmM5NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzLi5hYTI0ZjUzMzU4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxH
RXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYo
c3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJv
ci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVy
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiks
IGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNl
KCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+
KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5p
cXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250
ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7
Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlw
ZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+
KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgp
KSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQo
KSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlN
RVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBs
b25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0
cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5
cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNl
LnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBs
b2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4
Y2U5YTE0ZmEuLmQ3MWMzZjc4NGIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rp
b24sIGNvCiAgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ1Bhc3RlQXNQbGFpblRleHQ6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRp
dG9yKCkuY29tbWFuZCgiUGFzdGVBc1BsYWluVGV4dCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0RlbGV0ZToKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLnBlcmZvcm1EZWxldGUoKTsKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rp
b24gYWN0aW9uLCBjbwogICAgICAgICBpbnNlcnRVbmljb2RlQ2hhcmFjdGVyKHplcm9XaWR0aE5v
bkpvaW5lciwgKmZyYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdTZWxlY3RBbGw6Ci0gICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RB
bGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJbnNlcnRFbW9qaToKICAgICAgICAgbV9jbGllbnQuaW5zZXJ0RW1vamkoKmZyYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggNTEyM2JiMmQw
YzA0Li5kNDg0MWRmM2RmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQ
YWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVu
dChQYWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAg
RmxvYXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVND
SUlMaXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lv
bj4gYWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmlu
ZyBrZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAg
ICBBU0NJSUxpdGVyYWwga2V5IHsgQVNDSUlMaXRlcmFsOjpudWxsKCkgfTsKKyAgICAgICAgQVND
SUlMaXRlcmFsIG5hbWUgeyBBU0NJSUxpdGVyYWw6Om51bGwoKSB9OworICAgICAgICBib29sIHZh
bHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVkVmVjdG9yPFNldHRpbmc+IG1f
c2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVjdCBJbnRlcmFjdGlvblJlZ2lv
bk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICB9Owog
fQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKGNvbnN0
IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNl
dHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChjb25zdCBhdXRvJiBzZXR0aW5n
IDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBzZXR0aW5nLmtleSkKQEAgLTQy
Niw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgCiAgICAgY29udGV4dC5j
bGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
KSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMiX3MpKSB7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBjb250ZXh0LnNldFN0cm9rZUNv
bG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBAQCB2b2lkIEludGVyYWN0aW9u
UmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lvbigpOwogCi0gICAgaWYgKHJl
Z2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgIGlmIChyZWdpb24g
fHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICBhdXRvIGdyYWRp
ZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAgICAgICBHcmFkaWVudDo6UmFk
aWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFkaWVudERhdGEucG9pbnQwID0g
bV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBAIC00NTEsMTAgKzQ1MSwxMCBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0byBtYWtlR3JhZGllbnQgPSBb
Jl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVu
dERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKFdU
Rk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0IgeyB9
LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7Ci0gICAgICAgICAg
ICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIpICYmIHZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygi
d2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkgewogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9w
KHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhB
bHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4xKSB9KTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCIpIHx8ICF2YWx1
ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykp
IHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihD
b2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxw
aGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2LDE4ICs0NjYsMTggQEAgdm9p
ZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgY29uc3Rl
eHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAgYm9vbCBzaG91bGRDbGlwID0g
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wgc2hvdWxkQ2xpcCA9IHZhbHVl
Rm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQYXRoPiBjbGlwUGF0aHM7CiAK
ICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBjbGlwUGF0aHMgPSBwYXRoc0Zv
clJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGll
bnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBib29sIHNob3VsZFVzZUJhY2tk
cm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVGb3JTZXR0aW5n
KCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKTsKIAogICAgICAgICBpZiAo
c2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAgICAgaWYgKHNob3VsZENsaXAp
IHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5z
aW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMg
PSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKICAgICAgICAg
ICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0ZShncmFk
aWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9sYXRpb25NZXRob2Q6OlNSR0Ig
eyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQgfSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3Io
Q29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAgICAg
ICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6YmxhY2sp
LmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYsMTIgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNMaWdodEJhY2tncm91bmQg
PSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAgIGlmICghc2hvdWxkVXNlQmFj
a2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciJfcykpCiAg
ICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24tPmhhc0xpZ2h0QmFja2dyb3Vu
ZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0g
dmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1Jl
Y3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbEdyYWRpZW50KG1ha2VHcmFk
aWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShyYWRpdXMpKSk7CiAgICAgICAg
ICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAgICAgICAgIH0KQEAgLTUyMiw5
ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdl
T3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAgICAgc3RkOjpvcHRpb25hbDxD
dXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciIp
KQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3Zl
ciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAg
Y3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBhdXRvIGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3Np
dGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogICAg
IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0gZXZlbnRJbkNvbnRlbnRzQ29v
cmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXkoKTsKIAotICAgIGlmIChldmVu
dC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygp
ICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQ
bGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9y
U2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1t
CmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBib29s
IFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAogdm9p
ZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAgICBz
ZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05BTF9I
QU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBUX1NJ
TVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNo
byBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0gICAg
c2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRG
aXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2VyaWZG
b250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRGb250
RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklFRF9I
QU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04iX3Ms
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZpeGVk
Rm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlmRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZGb250
RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4YzkzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC03OCw3ICs3OCw3IEBA
IHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
QVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1
c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBndGtUeXBl
KCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEi
X3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXgg
ZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2Vu
dC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGVudW0gY2xhc3MgVXNl
ckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBz
dGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uID0gZW1wdHlTdHJpbmco
KSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1bHQpOwogCi1XRUJDT1JFX0VY
UE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJDT1JFX0VYUE9SVCBBU0NJSUxp
dGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3lzdGVt
TWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwogI2Vsc2UKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRp
b25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVy
L0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0NWZjMDY0MzM5NC4uOGI3ZTc0
MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VM
RU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUi
LCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5h
dGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUs
IG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRl
UGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRp
b1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9T
aW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAg
IEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdM
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcApp
bmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBj
b25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQogewogI2lmIE9TKFVOSVgp
CiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lzVHlwZTo6TW9iaWxlKQotICAg
ICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAgICByZXR1cm4gImxpa2UgQW5k
cm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIHVuYW1lKCZuYW1l
KTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3Ry
aW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpbwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0aW9u
VmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1IjsKKyAgICAg
ICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1Il9zOwogICAgICAgICB1
c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAnICsgYXBwbGljYXRpb25O
YW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAK
aW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKQEAgLTE4Niwx
MyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJTb3VyY2Uo
Y29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAgICAgaWYgKCF2YWxpZGF0ZVN1
Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxvZyA9IHNoOjpHZXRJbmZvTG9n
KGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkKLSAgICAgICAgICAgIHNoYWRl
clZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAgICAgIHNoYWRlclZhbGlkYXRp
b25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENvZGUgPSBzaDo6R2V0T2JqZWN0
Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVuZ3RoKCkpCi0gICAgICAgIHRy
YW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3RyKCk7CisgICAgICAgIHRyYW5z
bGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2RlLmNfc3RyKCkgfTsKICAgICAK
ICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURFUl9TWU1CT0xfVFlQRV9BVFRS
SUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYyY2ZkNzVkZjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2Vk
X2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRpb24gPSA1
X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJl
YWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiAvLyBU
aGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3csIHBvcnRl
ZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVE
ZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9p
ZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVy
YWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBTaW5jZSB0
aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBp
bml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUgY29udGV4
dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3
NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAg
LTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2ls
IGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3Vs
ZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wK
ICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0
ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsK
ICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0lt
cGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdo
dCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NH
THNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dM
dm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2YzNTQ4ZGEwZmZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIHBy
aW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IENBVHJhbnNmb3JtM0Qm
IHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5z
Zm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3Jt
Lm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIz
KSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjQpLCAi
OyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzEpLCAnICcs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMiksICcgJywgRm9y
bWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMzKSwgJyAnLCBGb3JtYXR0
ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQpLCAiOyAiLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAnICcsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1zdGF0aWMgdm9pZCBwcmludENv
bG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBsYWJlbCwgQ0dDb2xvclJlZiBj
b2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5kQ2xhbXBUb1NSR0JBTG9zc3ko
Y29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgpKQpAQCAtNzYyLDEwICs3NjIs
MTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25z
dCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAKICAgICAvLyBQcmludCBiYWNr
Z3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAx
LCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJi
YWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxh
dGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJDb2xvciBpZiBuZWVkZWQKLSAg
ICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciIsIENBQ0ZMYXll
ckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9y
KGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywgQ0FDRkxheWVyR2V0Qm9yZGVy
Q29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgbWFza3NUb0Jv
dW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tzVG9Cb3VuZHMgPSBsYXllci0+
bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKaW5k
ZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJv
QmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXJDYWlyb0Jh
Y2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPAog
ewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1
YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwogCiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoZW5jb2Rl
ZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hl
RnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5MWVmOWY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVl
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5n
IGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAg
ICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEt
PmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5
TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJl
dHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkg
PT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkp
KQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAgICByZXR1cm4gInNhbnMtc2Vy
aWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVz
SW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAg
ICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1l
c0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1
cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWls
eSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkp
KQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7
CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEt
PmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJr
aXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsK
ICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
CiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2
YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZkOWY3OGU3ZDIxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRp
b25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5p
cXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNh
cHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAg
Y29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAog
ICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24u
Y3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVy
Q29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJzZUdzdFN0
cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiB7
CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJlVmFsdWVUb0pTT04odmFsdWUp
KSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNPTjo6T2JqZWN0
Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVlKGdfcXVhcmtfdG9fc3RyaW5n
KGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBvYmplY3Qt
PnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpIH0sIGpzb25WYWx1
ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAppbmRleCAyZDljMGU5ZTQ1Mzgu
LmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
ci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lz
dHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlm
IChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmll
cjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZh
Y3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9yaWVzKSkgewogICAgICAgICAg
ICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihm
YWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1l
bnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xB
U1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9n
ZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAg
ICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAg
ICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikpIHsKICAgICAgICAgICAgICAg
ICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFj
dG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6Vmlk
ZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJl
Q2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFp
bmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAm
JiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBp
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9t
cDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVj
TWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdI
YXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEi
KSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29k
ZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5p
c1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0
cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2Fu
bmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9t
cDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlw
ZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1
ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlv
bjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQp
IHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21w
ZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRp
by94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTI0Niw3ICsxMjQ2LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWRpbmdGYWlsZWQoTWVkaWFQ
bGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAgIGNvbnN0IGNoYXIqIHJvbGUg
PSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6ICJtdXNpYyI7CisgICAgYXV0
byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyJfcyA6ICJtdXNpYyJf
czsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luayhy
b2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwogICAgIGlmICghYXVkaW9TaW5r
KQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZ3N0X21lc3NhZ2Vf
cGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRlYnVnLm91dFB0cigpKTsKICAg
ICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcykiLCBlcnItPmNvZGUsIGVyci0+
bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgbV9lcnJv
ck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gU3RyaW5n
IHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBNZWRpYVBsYXllcjo6TmV0d29y
a1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnIuZ2V0KCksIEdT
VF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNfTk9UX0ZPVU5EKQpAQCAtMTg4
OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1l
c3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxzZSBpZiAoZ3N0X3N0cnVjdHVy
ZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkgewogICAgICAgICAgICAgR1NU
X0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBIVFRQIGhlYWRlcnM6ICUiIEdT
VF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaWYgKGNvbnN0IGNoYXIqIHVy
aSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJ1cmkiKSkgewotICAgICAg
ICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAgICAgICBVUkwgdXJsIHsgU3Ry
aW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdpbnMuYWRkKFNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBpZiAodXJsICE9IG1fdXJsKSB7
CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBlbnRyeQogICAgICAgICBn
Y2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyh0
YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBpZiAodGl0bGUpIHsKLSAgICAg
ICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAgICAgICBjdWUtPnNldENvbnRl
bnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAgICAgZ19mcmVlKHRpdGxlKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZlcihHc3RFbGVtZW50KiBlbGVt
ZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10ZW1wbGF0ZSIsIG5ld0Rvd25s
b2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9ERUJVR19PQkpFQ1QocGlwZWxp
bmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBsYXRlIGZyb20gJyVzJyB0byAn
JXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQo
KSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoID0gbmV3RG93bmxvYWRUZW1w
bGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRoIHsgbmV3RG93bmxv
YWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxvYWRGaWxlcyhuZXdEb3dubG9h
ZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0KIApAQCAtMjE3OSw3ICsyMTc5
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvd25sb2FkQnVmZmVyRmls
ZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IGRv
d25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5tX2Rvd25sb2FkQnVmZmVyLmdl
dCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0UHRyKCksIG51bGxwdHIpOwog
Ci0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRvd25sb2FkRmlsZS5n
ZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVGaWxlKFN0cmlu
Zzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAgICAgICAgIEdTVF9XQVJOSU5H
KCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUgJXMgYWZ0ZXIgY3JlYXRpb24i
LCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ3MCwx
MSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZE5leHRM
b2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0byB0YWtlIHRoZSBiYXNlIG9m
IHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5kIHRoZSB2YWx1ZSBvZiBuZXct
bG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0gZ3N0X3VyaV9pc192YWxpZChu
ZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJh
c2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBT
dHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBw
bGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9waXBlbGluZS5nZXQoKSwgImN1
cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51bGxwdHIpOwotICAgICAgICBV
UkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsKKyAgICAgICAgVVJMIHBsYXli
aW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0gfTsKIAogICAgICAgICBpZiAo
cGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QocGlw
ZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGlyZWN0aW9uLiIpOwpAQCAtMjcw
MSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUdT
VFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVsZW1lbnRJZCA9IG1fcGxheWVy
LT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1wdHkoKSkKLSAgICAgICAgZWxl
bWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1lbnRJZCA9ICJtZWRpYS1wbGF5
ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRpYVNvdXJjZSgpID8gIk1TRS0i
IDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVkaWFzdHJlYW0tIiA6ICIiOwog
CkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UoR3N0TWVzcwogICAgICAgICAg
ICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAgICAgIGdzdF9ldmVudF9wYXJz
ZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0ZW1JZCwgJmRhdGEsIG51bGxw
dHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2ZW50S2V5U3lzdGVtSWQsIGRh
dGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxlZFByb3RlY3Rpb25FdmVudHMu
YWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5k
bGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAgIGNvbnN0IGNoYXIqIGV2ZW50
S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVyKiBpbml0RGF0YSA9IG51bGxw
dHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQsICZldmVudEtleVN5c3Rl
bVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsKKyAgICBpbml0aWFsaXphdGlv
bkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lzdGVtVVVJRCB9LCBpbml0RGF0
YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OndhaXRpbmdGb3JL
ZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
CmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQg
cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcg
ZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsg
fQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
ICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25z
dCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGRj
YTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmlu
ZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1Rf
VEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90
YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNv
XzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29u
dmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFn
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAg
ICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFy
KiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYg
KGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIo
KSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwg
dGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgp
OworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0
YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDkuLmQ3
YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJl
YW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2lu
Z1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ3N0X3BhZF9hZGRfcHJv
YmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQqLCBHc3RQYWRQcm9iZUluZm8q
IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9iZVJldHVybiB7CiAgICAgICAg
IGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZpZGVvRnJhbWVNZXRhZGF0YShH
U1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAgICAgR1NUX1BBRF9QUk9CRV9J
TkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAgICAgbWV0YS0+cHJpdi0+cHJv
Y2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSksIHN0ZDo6
bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkp
OworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KFN0cmluZyB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1ha2VfcGFpcihnc3RfdXRpbF9n
ZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKICAgICAgICAgcmV0dXJuIEdT
VF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0X25hbWUoZWxlbWVudCksIGdf
ZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2lu
Z1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgICAgIGlmICghbWV0YSkK
ICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwogCi0gICAgICAgIGF1dG8qIGVs
ZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpOworICAgICAgICBT
dHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSkgfTsK
ICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5nZXQoZWxl
bWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KGVsZW1l
bnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFt
cCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNDMzNjg1ZTIzMzk1Li5kNjQw
NGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDc1NGIzZmY0ODM5
MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4
dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAg
ICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5h
bWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0g
c3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNl
dEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVx
dWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBm
aWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2
NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1
ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVH
X09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9z
aXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9S
TUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1l
bWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVS
TCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5n
IHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMs
NyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2Vi
U3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBS
ZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5n
ZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0
KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1l
dGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAg
QWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2
NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2Vy
dmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAg
ICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgp
LnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJz
LmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Qu
c2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0
SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5y
ZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkg
ewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4
MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMq
IHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0
X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9E
RUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgp
KTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJh
bmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgp
IH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMt
PnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lz
dGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIg
OiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVz
dC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIp
OworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29u
bmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAg
ICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktp
dFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5
cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0g
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRh
LCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJ
Y3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3Jj
KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5y
ZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3
ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXli
aW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJp
bmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3Rh
dGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
QXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0NzlkNmJiNTI3Li4xYWYwZTU1
NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCkBAIC0zMjAsNyArMzIw
LDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBlbmRQaXBlbGluZTo6U3RyZWFt
VHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNvbnN0IGNoYXIqIG9yaWdpbmFs
TWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFkQ2Fwcyk7CiAgICAgYXV0byYg
Z3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyTVNFOjpzaW5nbGV0
b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIG9yaWdpbmFsTWVk
aWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQo
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgU3RyaW5n
IHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3RyZWFtVHlwZSA9IFN0cmVhbVR5
cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZlVHlwZShkZW11eGVyU3JjUGFk
Q2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAgICAgICAgIHByZXNlbnRhdGlv
blNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11eGVyU3JjUGFkQ2FwcykudmFs
dWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMyYjJjNmVmYi4uMmNlYzY4NDY2
ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBl
JiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKIHsKLSAgICBhdXRvIG1z
ZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5
KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1h
a2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8v
Il9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxvYWRpbmcgJXMiLCBtc2VCbG9i
VVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVjYjMzLi45MTk2M2QzMjkw
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBi
b29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBT
dHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5H
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50
ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9m
cmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQ
TEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAg
ICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVm
ZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMi
KSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAg
ICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5z
dGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3
X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIp
Ci0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90
ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
ZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
QVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAK
ICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0
aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9y
Z2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsx
MjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9y
IEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8v
IEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBh
bmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlm
IChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8
fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0
IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9h
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsKICNp
ZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3Qi
X3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9z
KTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25z
R0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7
CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3Bp
YyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMi
X3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExB
VEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAg
Ly8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikK
IGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkK
IHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3Vw
cG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNDg5
Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAog
ICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0NvbnRleHRHTDo6RlJBR01FTlRf
U0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZUEVfRlJBR01FTlQ7CiAgICAg
ZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCisgICAgICAg
IHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgogCiAgICAgSGFz
aE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291
cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFw
LmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9jb250ZXh0LT5tX3NoYWRlclNv
dXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRy
eSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyArMjAzLDcgQEAgU3RyaW5nIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFBs
YXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWQpCi0gICAgICAgIHJldHVy
biAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICByZXR1cm4gdHJhbnNs
YXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCmluZGV4
IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xF
Uy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0
Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1f
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FS
UkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBS
T0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsK
ICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAg
ICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKSkgewogICAgICAgICAgICAg
bV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwog
ICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlz
SW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0g
OjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJl
c3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0cygpOwogfQogCi12b2lkIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBw
YWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCiAgICAg
aWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAgIGVuc3VyZUV4dGVuc2lvbkVu
YWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICAgICAgU3RyaW5nIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
biB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAgICAgICAgLy8gRm9yY2UgZGVw
dGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0cnMuZGVwdGggPSB0cnVlOwog
ICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5
YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAgIC8vIGluIHBhcnRpY3VsYXIg
c3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdoaWNoIGNvdWxkIG9yCiAgICAg
Ly8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUg
T3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9pZCB2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgIHZvaWQg
dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKIAogICAgIHZvaWQgcmVhZG5Q
aXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6ZWkgd2lkdGgsIEdDR0xzaXpl
aSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIGJ1ZlNp
emUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVtbnMsIEdDR0xzaXplaSogcm93
cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxCdWZmZXJPYmplY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcAppbmRleCBjMzViMmYwZjE1
ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
QmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZh
bGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2
YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0K
IAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8g
VXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAg
ICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdM
X0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5h
bERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcuLjNhZTYyYmY2ZWVi
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcApAQCAtMTA0LDcg
KzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0
IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxvdyB0aGUgbG9naWMgd2hlcmUg
c3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90LgogICAgIC8vIFNlZSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgotICAgIGJvb2wgc3VwcG9ydFBh
Y2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRl
cy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1
dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAvLyBSZXNpemUgcmVndWxhciBG
Qk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpAQCAtMjQwLDExICsyNDAsMTEg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1hZ2UyRChHQ0dMZW51bSB0YXJn
ZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBj
b250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSIp
KSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigi
R0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJfcykpIHsKICAgICAgICAgYXR0
cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0Q29udGV4dEF0dHJpYnV0ZXMo
YXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2ZGFhLi5iMWY0YzY0N2E3NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJl
TWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAgQVNTRVJUX1VOVVNFRChzdWNj
ZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhpcyBleHRlbnNpb24gdG8gcmVu
ZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0gICAgUkVMRUFTRV9BU1NFUlQo
c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiX3MpKTsKICAgICBHTF9SZXF1
ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsKIAogICAgIHZhbGlkYXRlQXR0
cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKaW5k
ZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAgICAgICAgIG1fbGF5ZXIuc2V0
QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuaW1h
dGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhp
cywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAgY2xpZW50KCkubm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2FuaW1hdGlvblN0YXJ0VGltZSk7
CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3YTFjMjcyNWQzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0zNCw3ICszNCw3IEBAIFRleHR1
cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlcigpCiAgICAgLCBtX2xh
c3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAgIFN0cmluZyBzaG93RlBTRW52
aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOworICAgIFN0cmluZyBzaG93RlBT
RW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpIH07CiAgICAgYm9vbCBvayA9
IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNob3dGUFNFbnZpcm9ubWVudC50
b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRlcnZhbCkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRl
eCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTE0NTMsNyArMTQ1Myw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1bWVBbmltYXRpb25zKCkKIAog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVk
KCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBtX2xh
c3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKIH0KIAog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQZW5kaW5nVGlsZUNyZWF0aW9u
VGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wSW5uZXJM
YXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBDb29yZGlu
YQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBBZGRpdGlvbmFsUHJvcGVydGll
cyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5ZXJUcmVlQXNUZXh0T3B0aW9u
cz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAmIExheWVyVHJlZUFzVGV4dE9w
dGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0
U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMp
OworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiX3Ms
IG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApp
bmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGVudW0gQ2xp
cGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2Fy
ZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4
dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1v
dmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJv
YXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsKIH0KIAogc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihzdGQ6
OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiUFJJTUFSWSIpOworICAg
IHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJQUklNQVJZ
Il9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCmluZGV4
IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcApAQCAtNzc5LDEw
MSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVy
Rm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNhc2UgR0RLX0tFWV9NZW51Ogog
ICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19LRVlfQWx0X1I6Ci0gICAgICAg
IHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7CiAgICAgY2FzZSBHREtfS0VZ
X0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAgcmV0dXJuICJDbGVhciJf
czsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0dXJuICJEb3duIjsKKyAgICAg
ICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgIGNhc2UgR0RLX0tFWV9F
bmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAg
ICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0VudGVyOgogICAgIGNhc2UgR0RL
X0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJuOgotICAgICAgICByZXR1cm4g
IkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAgICBjYXNlIEdES19LRVlfRXhl
Y3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAgICAgcmV0dXJuICJFeGVjdXRl
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAg
IHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgotICAgICAgICByZXR1cm4gIkYy
IjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdES19LRVlfRjM6Ci0gICAgICAg
IHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgIGNhc2UgR0RLX0tFWV9G
NDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAgICAgcmV0dXJuICJGNSJf
czsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVybiAiRjYiOworICAgICAgICBy
ZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAgICAgICAgcmV0dXJuICJGNyI7
CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y4OgotICAgICAgICBy
ZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAgICBjYXNlIEdES19LRVlfRjk6
Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAgICAgICAgcmV0dXJuICJGMTAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0dXJuICJGMTEiOworICAgICAg
ICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEyOgotICAgICAgICByZXR1cm4g
IkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTM6Ci0g
ICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAgICByZXR1cm4gIkYxNCJf
czsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1cm4gIkYxNSI7CisgICAgICAg
IHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6Ci0gICAgICAgIHJldHVybiAi
RjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNzoKLSAg
ICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYxNyJfczsKICAgICBjYXNlIEdE
S19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAgICAgIHJldHVybiAiRjE4Il9z
OwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAg
cmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoKLSAgICAgICAgcmV0dXJuICJG
MjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNlIEdES19LRVlfRjIxOgotICAg
ICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgIGNhc2UgR0RL
X0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgcmV0dXJuICJGMjIiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICBy
ZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0OgotICAgICAgICByZXR1cm4gIkYy
NCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9IZWxwOgotICAg
ICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgICAgIHJldHVybiAiSG9t
ZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAgICByZXR1cm4gIkluc2VydCI7
CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9MZWZ0OgotICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgY2FzZSBH
REtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgICAgIHJl
dHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfVXA6Ci0gICAgICAgIHJl
dHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAiX3M7CiAgICAgY2FzZSBHREtf
S0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgcmV0dXJuICJQYXVz
ZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVlbjoKICAgICBjYXNlIEdES19L
RVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICByZXR1cm4g
IlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdodDoKLSAgICAgICAgcmV0dXJu
ICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1Nl
bGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAgICByZXR1cm4gIlNlbGVjdCJf
czsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVybiAiVXAiOworICAgICAgICBy
ZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMg
VSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAgICAgIHJldHVybiAiVSswMDdG
IjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2FzZSBHREtfS0VZX0JhY2tTcGFj
ZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICByZXR1cm4gIlUrMDAwOCJfczsK
ICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNhc2UgR0RLX0tFWV8zMjcwX0Jh
Y2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAgcmV0dXJuICJVKzAwMDkiOwor
ICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmljb2RlKGdka19rZXl2YWxfdG9f
dXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTguLmU5NTc4MjkyYjFlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2UoRHJhZ0ltYWdlLCBjb25zdCBJ
bnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCgpCiB7
Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiOworICAgIHJldHVybiAiZHJh
ZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2Fy
ZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0M2RlODM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFz
c2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBV
SUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NO
YW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewog
ICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQot
ICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJl
dHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJp
bmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1t
CkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6On5WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVy
KiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigpOwogICAgIGlmIChw
bGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQbGF5YmFja0FjdGl2
ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBsYXliYWNrU2Vzc2lv
bk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCBlbXB0eVN0
cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAgICAgICAgbV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAppbmRleCAxODg3
ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFBh
c3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6
Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRl
eHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4dCgpKTsKKyAgICB0ZXh0LnRl
eHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJp
bmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Il9zLCBuYW1lKCks
IGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVf
dD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRG
aWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKCJ0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKCJ0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25zdCBQYXN0ZWJvYXJkVVJMJikK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0
cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVTdHJpbmcoInRleHQvcGxhaW47
Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlQ3VzdG9tRGF0
YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExp
YldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1OGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBAIFN0cmluZyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUp
CiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9MOgogICAgIGNh
c2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAgICByZXR1cm4g
IkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAgICAgIHJldHVybiAiQ2xlYXIi
OworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Eb3duOgotICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8v
ICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAgcmV0dXJuICJFbmQiOworICAg
ICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgIGNhc2UgV1BFX0tF
WV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVyOgogICAgIGNhc2UgV1BFX0tF
WV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICByZXR1cm4gIkVudGVy
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAgICByZXR1cm4gIkV4ZWN1dGUi
OworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxOgotICAg
ICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICByZXR1cm4gIkYyIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIHJldHVybiAi
RjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAg
ICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6Ci0gICAgICAgIHJldHVybiAi
RjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GNjoKLSAgICAg
ICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0dXJuICJGNyJfczsKICAgICBj
YXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOworICAgICAgICByZXR1cm4gIkY4
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAg
IHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoKLSAgICAgICAgcmV0dXJuICJG
MTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjExOgotICAg
ICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgIGNhc2UgV1BF
X0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgcmV0dXJuICJGMTIiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICBy
ZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0OgotICAgICAgICByZXR1cm4gIkYx
NCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTU6Ci0gICAg
ICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAgY2FzZSBXUEVf
S0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICByZXR1cm4gIkYxNiJfczsK
ICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIHJl
dHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0gICAgICAgIHJldHVybiAiRjE4
IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxOToKLSAgICAg
ICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJfczsKICAgICBjYXNlIFdQRV9L
RVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIHJldHVybiAiRjIwIl9zOwog
ICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgcmV0
dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAgICAgICAgcmV0dXJuICJGMjIi
OworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjIzOgotICAgICAg
ICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgIHJl
dHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToKLSAgICAgICAgcmV0dXJuICJI
b21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNhc2UgV1BFX0tFWV9JbnNlcnQ6
Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgIHJl
dHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9Eb3duOgotICAgICAgICByZXR1
cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICBjYXNlIFdQ
RV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAiOworICAgICAgICByZXR1cm4g
IlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0gICAgICAgIHJldHVybiAiUGF1
c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNhc2UgV1BFX0tFWV8zMjcwX1By
aW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAgICAgY2FzZSBXUEVf
S0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJSaWdo
dCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAgICByZXR1cm4gIlNlbGVjdCI7
CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9VcDoKLSAgICAg
ICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5k
YXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgY2FzZSBXUEVfS0VZX0RlbGV0
ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsK
ICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICByZXR1cm4gIlUrMDAwOCI7Cisg
ICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9JU09fTGVmdF9UYWI6
CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBjYXNlIFdQRV9LRVlfVGFiOgot
ICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVybiAiVSswMDA5Il9zOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJmLi40ZmE4MmJiZGUxNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xNjMsNyAr
MTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3Jk
ZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBhdXRvIHNlbGVjdGVkVHJhY2tz
ID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyhtX3N0cmVhbSk7CiAgICAgYXV0
byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAg
ICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCIgOiAi
YXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAgICBHU1RfREVCVUcoIkNyZWF0
aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFzY2lpKCkuZGF0
YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5cGUpOwpAQCAt
MjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9maWxlPiBNZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgICAgIGlmIChjb2Rl
Y3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFpbnMoIm9wdXMi
X3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiOworICAgICAg
ICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7CiAgICAgICAgIGVsc2UgaWYg
KGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0YXJ0c1dpdGgo
Im1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvbnRhaW5lclR5
cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQyMzc5ZjMzYjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKQEAgLTg1LDE0
ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBhdXRvIG1pbWVIZWFkZXIgPSBh
ZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVlTWFwIGtleVZhbHVlUGFpcnMg
PSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0
b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10
eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3Ig
PSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7CiAgICAgaWYgKG1pbWVQYXJh
bWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkgewogICAgICAgICBTdHJpbmcg
Y29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVuZE9mUGFydEJvdW5kYXJ5Owog
ICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBhcnNlZENvbnRlbnRUeXBlOjpj
cmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7CiAgICAgICAgICAgICBjb250
ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgpOwogICAgICAgICAgICAgY2hh
cnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0g
ICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRlclZh
bHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJz
ZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSIpOworICAgICAg
ICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZv
ck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0Qm91bmRhcnkgPSBwYXJzZWRD
b250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3VuZGFyeSJfcyk7CiAgICAgICAg
IH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOwogICAg
ICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBAIC0xMDksMTEgKzEwOSwxMSBA
QCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIG1pbWVQYXJhbWV0
ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2Rp
bmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJj
b250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVy
YXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRl
bnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNmZXJFbmNvZGluZyhtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0g
a2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7CisgICAgbWltZVBhcmFtZXRl
cnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC1sb2NhdGlvbiJfcyk7CiAg
ICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKICAg
ICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBtaW1lUGFyYW1ldGVyc0l0ZXJh
dG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVjNzA1Zi4uMmRjMjcxNjYzYTMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6
OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdl
dERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJy
b3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBt
X2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3Vz
dG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWlu
Q0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAg
ICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4g
PT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAg
IGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2Rv
bWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09T
U3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9t
YWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsK
KyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UK
ICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291
cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRj
aChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgot
ICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFp
biA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NG
U3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9y
RG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0g
ICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9t
YWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNv
dXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllLi42Y2YwNDkxODE1
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0byBmc1Jl
cEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwuZmlsZVN5
c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQoZnNSZXBG
aWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRoKCk7Cisg
ICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8gZmlsZURl
dmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAgICAgICAg
ICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAgICAgICAg
W25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOmZpbGVE
ZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhwZWN0ZWRE
ZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUwZWVmNjg4
MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86Omlzb2xhdGVkQ29weSgpIGNv
bnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3JpcHRp
b24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZyht
X3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgWDUwOV92ZXJpZnlfY2Vy
dF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsKIH0KIAogQ2VydGlmaWNhdGVJ
bmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VDZXJ0aWZpY2F0ZShjb25zdCB1
aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5kZXggNjEzNjUzMWI1YjFjLi42
YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRv
U3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVz
dFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3Ry
YWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4
IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBA
QCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJpbmcg
cGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkgfHwg
IXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICByZXR1
cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNlRmlu
ZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAiLyI7
CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygwLCBs
YXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTUuLmE3
YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgQ3VybENhY2hl
RW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJsLCBSZXNvdXJjZUhhbmRsZSog
am9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFtZSh1cmwubGF0aW4xKCkpOwog
CiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9oZWFkZXJG
aWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZCgi
LmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFtZSk7
Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCIpOworICAgIG1fY29udGVu
dEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBDdXJsQ2FjaGVFbnRyeTo6fkN1
cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29sIEN1cmxDYWNoZUVudHJ5Ojpz
YXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAg
IEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CiAgICAgICAgIFN0cmluZyBo
ZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiKTsK
KyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAgICAgICAgIGhlYWRlckZpZWxk
LmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIik7Cisg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAgICAgICBDU3RyaW5nIGhlYWRl
ckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAgICAgICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0aW4xLmRhdGEoKSwgaGVhZGVy
RmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hlZFJlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDNi
ZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4
NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVu
ZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQg
PSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxD
YWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4
RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBt
YWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDUu
LjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxI
YW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMp
CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAg
ICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAv
LyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5
IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1h
a2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5k
KCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0g
bWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVz
dEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIp
KTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50
ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRl
cihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVh
ZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7Cisg
ICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxI
YW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1Jl
cXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdS
ZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAg
ICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0
LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggMmJhZjk0MmRiYzk2
Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3VybFJl
cXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1ZXN0
KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIKLSAg
ICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1fY3Vy
bEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8gZWxl
bWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFlbGVt
ZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNlbmRE
YXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdlIHdh
bnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgogICAg
IGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAgICAg
bV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1
bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5z
ZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZvclB1
dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdlKHN0
YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3Vy
Y2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNy4uYjNh
YjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEz
MCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVj
ZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3VybENh
Y2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5n
KCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxp
ZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1
c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0
KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9L
Il9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRmODlkOTczZWM5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHN0YXRp
YyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBk
ZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAgY2hhciogY29va2llSmFyUGF0
aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAgICBpZiAoY29va2llSmFyUGF0
aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAgICAgIHJldHVybiBTdHJpbmc6
OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIHJldHVy
biBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoRmlsZVN5c3RlbTo6bG9jYWxV
c2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRGaWxlTmFtZSk7CiAjZWxzZQog
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTky
NDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgZGVm
YXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCmluZGV4IDM2MTUwOWQ3NGRj
OS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8o
Y29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNzbCkK
IHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNvbnN0
IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRfY3Vy
cmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0X25h
bWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5j
cHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAK
QEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBwc2xf
cmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRhIG9y
IG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hhciog
dG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4pKQot
ICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7
IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmlu
ZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTU4LDcgKzU4LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGN1cmxF
cnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cmxFcnJvckRvbWFpbjsKIAog
ICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCmlu
ZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25z
dCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsKK0FT
Q0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9t
YWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQgZXJy
b3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxl
Q3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJkMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRs
ZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNo
b3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5l
d1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRy
KTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3ZC4uNWJmOGQ2ODAxMWMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4OSwxMyBAQCBSZXNvdXJjZVJl
c3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNwb25zZSYgcmVzcG9uc2UpCiAK
ICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAgICAgY2FzZSBDVVJMX0hUVFBf
VkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMCIpOworICAgICAg
ICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4x
Iik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJfcyk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAgICAgICBzZXRIVFRQVmVyc2lv
bigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05PTkU6CiAgICAgZGVmYXVsdDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVBy
ZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2NWEyOWU2MzYuLmMyMGVjOGU3
MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1
ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAg
ICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVz
KGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7
IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxT
b3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpKTsK
LSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChz
b3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09IGRvbWFpbikgeworICAgICAg
ICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KFN0cmluZyB7
IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9KSA9PSBkb21haW4pIHsKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4YTAzZmRmMDIuLjM0YTU3ZTVj
MmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jl
c291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihj
b25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
blBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhT
T1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFpbGluZ1VSTCwgcmVhc29uUGhy
YXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2RlLCBmYWlsaW5nVVJMLCByZWFz
b25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihT
b3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAgLTYxLDIyICs2MSwyMiBAQCBS
ZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3IoU291cE1lc3Nh
Z2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwogI2lmIFVTRShTT1VQMikKLSAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1Jf
RE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3Io
U3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RPTUFJTikgfSwgbWVz
c2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VSTChzb3VwX21lc3NhZ2VfZ2V0
X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2FnZS0+cmVhc29uX3BocmFzZSkp
OwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhtZXNzYWdlKSwKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1lc3NhZ2UpLAogICAgICAgICBz
b3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpmcm9tVVRGOChzb3VwX21lc3Nh
Z2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRpZgogfQogCiBSZXNvdXJjZUVy
cm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBH
RXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3Ry
aW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGluZ1VSTCwgU3RyaW5nOjpmcm9t
VVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7
IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCBmYWlsaW5n
VVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7CiB9CiAKIFJlc291cmNlRXJy
b3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCB1bnNpZ25l
ZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiB7Ci0gICAgUmVzb3Vy
Y2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKEdfVExTX0VSUk9SKSwgR19U
TFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1bmFjY2VwdGFibGVUTFNDZXJ0
aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19x
dWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VSUk9SX0JBRF9DRVJUSUZJQ0FU
RSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKSk7CiAgICAgcmVzb3Vy
Y2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICByZXNvdXJjZUVycm9yLnNldENl
cnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVzb3VyY2VFcnJvcjsKQEAgLTg4
LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IoY29u
c3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcgZXJyb3JzIGZyb20gdGhhdCBm
aWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNlIHRoZSBzYW1lIHZhbHVlIGFz
IGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQgdGltZW91dEVycm9yID0gLTEw
MDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJvckRvbWFpbiA9ICJXZWJLaXRO
ZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1l
b3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91dCIsIFJlc291cmNlRXJyb3I6
OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50IHRpbWVvdXRFcnJvciA9
IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJvckRvbWFpbiA9ICJXZWJLaXRO
ZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW4sIHRp
bWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQgb3V0Il9zLCBSZXNvdXJjZUVy
cm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3Jt
SXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
U291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYzMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJj
ZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgog
ICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhz
b3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291cF9tZXNzYWdlX2dldF9yZWFz
b25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0YXR1c1RleHQoU3RyaW5nIHsg
c291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSB9KTsKIAogICAgIG1f
Y2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVyX2NlcnRpZmljYXRlKHNvdXBN
ZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2FnZV9nZXRfdGxzX3BlZXJfY2Vy
dGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkgKzY2LDkgQEAgUmVzb3VyY2VS
ZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0
IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgY29uc3QgY2hhciog
b2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShyZXNwb25zZUhlYWRl
cnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRDb250ZW50VHlwZS5pc051bGwo
KSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCAmJiBzbmlm
ZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAgICBjb250ZW50VHlwZSA9IHNu
aWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsg
c25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UKLSAgICAgICAgY29udGVudFR5
cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgb2ZmaWNp
YWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0dHBTdGF0
dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWltZVR5cGUo
TUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0cmluZygp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhl
bi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1YzUxMTgyLi5hMmYwYzk1NDcy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhl
bmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5
cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEyICs2NSwxMyBAQCBzdGF0aWMg
U3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYg
ZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlGb3JEaWN0aW9uYXJpZXMoY29u
c3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3RyaW5nLCBWZWN0b3I8U3RyaW5n
Pj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVT
eXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsKKyAgICBhdXRvIGRpcmVjdG9y
eVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9yeVBhdGgpOworICAgIGZvciAo
YXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGhT
dHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRyYWN0TG9jYWxlRnJvbURpY3Rp
b25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Cisg
ICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAgICAgICBjaGFyIG5vcm1hbGl6
ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0aChGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQog
ICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93
aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0NGU0MzZiNjVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCkBAIC00MzQs
OCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVMb2NhbGVEYXRhKCkKICAgICBT
dHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwogICAgIHN3aXRjaCAobmVnYXRp
dmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFyZW50aGVzaXM6Ci0gICAgICAg
IG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9ICIpIjsKKyAg
ICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAgbmVnYXRpdmVTdWZmaXggPSAi
KSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2ZUZvcm1hdFNpZ25TcGFjZVBy
ZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2ZVNpZ24gKyAiICI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAppbmRleCBhYWU2Yzk5ZGQw
NTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZl
bnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZp
ZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRj
aCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4g
IkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05U
Uk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAi
Q29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAi
U2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19D
QVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1
cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktf
UldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2lu
Il9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7
CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0g
ICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwog
ICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVy
biAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIi
CiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7Cisg
ICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRl
Il9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAg
ICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAg
cmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZL
X0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9z
OwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAg
ICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0
dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2
OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAg
ICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJu
ICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAg
ICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0Yx
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9z
OwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAg
IHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNl
IFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsK
KyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAg
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAg
ICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToK
LSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwog
ICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJl
dHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZL
X0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0
Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOwor
ICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAg
ICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAg
ICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAg
ICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAg
ICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAg
ICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAg
ICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAg
ICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJuICJQcmludFNj
cmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmln
aHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JP
TEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNj
cm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNl
bGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19V
UDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsK
ICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAg
ICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAg
ICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5n
c1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQzMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgdXBsb2FkRmlsZVRleHQo
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQiOworICAgIHJl
dHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0KCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsKKyAgICByZXR1cm4gImFsbCBm
aWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGI2YjA3NjM3
Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCArNzQsMzQgQEAgU3RyaW5nIE1J
TUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQog
ICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1ldHlwZU1hcDsKICAgICBpZiAo
bWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmlsbCB3aXRoIGluaXRpYWwgdmFs
dWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRleHQvcGxhaW4iKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24vcGRmIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtIiwg
InRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCIsICJ0ZXh0L3htbCIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0L3hzbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiKTsKLSAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3htbCIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBwbGljYXRpb24veC13ZWJhcmNo
aXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwgImltYWdlL3N2Zyt4bWwiKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdlL3N2Zyt4bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiLCAiaW1h
Z2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiLCAiaW1hZ2UvdGlmZiIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFnZS9pY28iKTsKLSAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCIs
ICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyIsICJh
cHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEi
LCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0eHQiX3MsICJ0ZXh0
L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiX3MsICJhcHBsaWNhdGlv
bi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIl9zLCAiYXBwbGljYXRpb24v
cG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3NzIl9zLCAidGV4dC9j
c3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiX3MsICJ0ZXh0L2h0bWwiX3Mp
OworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRleHQvaHRtbCJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAg
bWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7Cisg
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGljYXRpb24vcnNzK3htbCJfcyk7
CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJfcywgImFwcGxpY2F0aW9uL3gt
d2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIl9zLCAiaW1hZ2Uv
c3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiJfcywgImltYWdlL3N2
Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZyJfcywgImltYWdlL2pwZWci
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3MsICJpbWFnZS9qcGVnIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFnZS9wbmciX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIl9z
LCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiX3MsICJ0ZXh0
L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIl9zLCAiYXBw
bGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJtNGEi
X3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhs
Il9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0ID0g
bWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1ZWQ5OTM2NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsy
NDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5
cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVU
QyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNm
Rm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgi
dGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRX
Rm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQo
KS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAg
IHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJv
YXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAg
LTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JC
aW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRU
eXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4
dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsK
LSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJv
YXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRk
KCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0
bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwog
fQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0
cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBp
ZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERh
dGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBp
ZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBA
IFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAg
ICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDog
Z2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5n
SW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0
aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJp
bmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3Rv
cjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1
cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxU
b01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAg
IG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAg
aWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwg
Jm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFs
KTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2Jq
ZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcg
dXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVS
TDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5
c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAg
IFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVT
dHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0
U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQg
PSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8v
IHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3Rl
IGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlw
Ym9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1h
cmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBk
YXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51
cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRh
ID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERh
dGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJl
ZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAg
ICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xp
cGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlw
Ym9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMg
dGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRp
bi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9
IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4
dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkg
fTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9z
ZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0
YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4
dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJv
bVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAg
ICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0
cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlT
dHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0u
dHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3Rl
bUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUyZGI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04NCwyNSArODUsMjUgQEAgc3Rh
dGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAgY2FzZSBXaW5kb3dzQ0UxOgog
ICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3NDRTM6Ci0gICAgICAgIHJldHVy
biAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93cyBDRSJfczsKICAgICBjYXNl
IFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSAuTkVUIjsKKyAgICAgICAg
cmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBXaW5kb3dzM18xOgotICAgICAg
ICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDMuMSJfczsK
ICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1IjsKKyAgICAg
ICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2luZG93czk4OgotICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiX3M7CiAgICAg
Y2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAi
OworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0LjkwIl9zOwogICAgIGNhc2Ug
V2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7CisgICAgICAgIHJldHVybiAi
V2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAg
Y29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdpbmRvd3NOVDMpID8gIldpbmRv
d3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZhbWlseU5hbWUgKyBTdHJpbmc6
Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlcihtaW5vcik7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlub3IpOwogfQogCiBzdGF0aWMg
Ym9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0YXRpYyBXT1JEIHByb2Nlc3Nv
ckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVjdHVyZVRva2VuRm9yVUFTdHJp
bmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJldHVybiAiOyBXT1c2NCI7Cisg
ICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJl
KCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAgICAgICAgcmV0dXJuICI7IFdp
bjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9JQTY0KQotICAg
ICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElB
NjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAppbmRleCBjZmJm
ZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCkBAIC00NywxNyArNDcsMTcg
QEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlwZSwgNz4gb3BlblhSQnV0dG9u
VHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJpbmcoT3BlblhSQnV0dG9uVHlw
ZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpU
b3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpU
aHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25U
eXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6
OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlw
ZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOworICAgIGNhc2UgT3BlblhSQnV0
dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJfczsKKyAgICBjYXNlIE9wZW5Y
UkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJfczsKKyAgICBjYXNlIE9wZW5Y
UkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJfczsKIAogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApAQCAtODAsMTEgKzgwLDExIEBA
IGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAyPiBvcGVuWFJBeGlzVHlwZXMg
ewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5YUkF4aXNUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VG91Y2hwYWQ6
IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRodW1ic3RpY2s6
IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VG91Y2hwYWQ6
IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VGh1bWJzdGlj
azogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0
cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
eHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2MzcyYmIzNTZlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKQEAgLTEy
NywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNzVG9TdHJpbmcoWFJIYW5kZWRu
ZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVzcykgewogICAgIGNhc2UgWFJI
YW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAgICAgICByZXR1cm4g
ImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4g
InJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAgICBkZWZhdWx0OgogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNl
dFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3Bv
cnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3Jk
KCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dv
cmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9y
VGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApp
bmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1
bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdChS
ZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlvbmFsPEVycm9yQ28KICAgICBp
ZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yID0gZXJy
b3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRvIGVycm9yID0gZXJyb3JPYmpl
Y3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygibWVz
c2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmplY3QtPmdldFN0cmluZygi
bWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJEcml2
ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFmNGQxMDU3ZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9T
ZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclBy
b21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0ph
dmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVz
dWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNl
LnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlz
U2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJy
b3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vz
c2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250
ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAg
ICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2Rl
OjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVy
bCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygi
dXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6
OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1
LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
eCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0
cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAg
ICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046
Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgi
eCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIs
IHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywg
eC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5
LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3Ms
IFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYm
IGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0Ojpj
cmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0
aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0Iiwg
aGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0
aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUo
ImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAg
ICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdD
b250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0
OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3
LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVs
ZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09O
OjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1l
bnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIg
aXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVV
cGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAg
ICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVu
dC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9h
ZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07
IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAg
ICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0
SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3
ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcm
IGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRl
RWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3Qg
Y2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0Vk
aXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIg
ICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIg
ICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246
OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lk
IChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAg
fSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9
Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3Bs
ZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQg
U2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBT
dHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFy
c2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAg
ICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFj
dGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1v
dmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZv
Y3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1
c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7
IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1l
bnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVF
bGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBT
ZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0
cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5z
ZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5n
dGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2
ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJv
dyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBu
b3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAg
ICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6
QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhj
cmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1
MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShj
b25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUi
X3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3Ms
IGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNv
b2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJw
YXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+
c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmco
KSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2Vj
dXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRw
T25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2Jq
ZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2ll
T2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkp
OwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVT
aXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1l
U2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJu
IGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1
dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQp
CiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5w
dXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2Up
CitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291
cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAg
ICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOwor
ICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9p
bnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQ
b2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgot
ICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9z
OwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAi
VG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2lu
dGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0
dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNv
dXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0
dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAg
ICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMg
QVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6
OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJW
aWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAg
ICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBj
YXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVu
dCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJp
dmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmlu
ZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJp
dmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVy
U2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihp
bnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQog
ICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZh
ciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmlu
ZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0
RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsK
ICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50
IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAg
ICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9
IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9Owog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQg
V2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAg
ICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVy
biBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcg
PSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9
OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVj
dCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlk
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAg
ICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Iikp
IHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQ
cm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmlu
ZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAg
ICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVl
ID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0
byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24i
X3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRy
aXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmls
aXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFu
KCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0
cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlm
eSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRs
ZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOwor
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5
OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6
Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxl
ZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAg
ICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2
aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2Fw
YWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9y
bWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5
Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAg
ICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJf
cywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3ki
X3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3Ry
aW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRl
eCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZl
ci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiArMzIsMTIgQEAgdm9pZCBDYXBh
YmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0IEpTT046Ok9iamVjdCYgbWF0
Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldEFkZHJWYWx1
ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5n
ZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRhcmdldEFk
ZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRp
ZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJnZXRBZGRyVmFsdWUpICYmIHRh
cmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAgICAgICAgIGNhcGFiaWxpdGll
cy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdGFy
Z2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAgIGlmIChtYXRjaGVkQ2FwYWJp
bGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRhcmdldFBvcnRWYWx1ZSkgJiYg
dGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkpCisgICAgaWYgKG1hdGNoZWRD
YXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0Il9zLCB0YXJnZXRQb3J0VmFs
dWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQogICAgICAgICBj
YXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRy
aXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXggNzliN2NhNGIyZDEzLi43MGFh
NDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZl
KFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhU
VFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAog
ICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgx
PkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+
QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAg
ICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNl
L1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhLi41N2Ri
YTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgs
NyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25z
dCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0
ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAg
ICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Iik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRp
b24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUz
LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlU
ZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAg
IC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7Cisg
ICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFp
bHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdl
Q29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJl
VG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXplKSkgewogICAgICAgICAvLyAi
Z2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAg
ICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUu
Il9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGUx
ODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0yNTAsOSAr
MjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90b2NvbChTU0xQcm90b2NvbCBw
cm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAgICAgICByZXR1cm4gIlRMUyAx
LjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAgICAgIHJldHVybiAiQWxsIjsK
KyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xVbmtub3duOgot
ICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1cm4gIlVua25vd24iX3M7CiAg
ICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAgZGVmYXVsdDoKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEz
Li5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7CiAgICAgaWYgKG1fY3VycmVu
dFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAy
KQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKG1fY3VycmVu
dFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JFRElSRUNUUywgIlRvbyBtYW55
IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRF
cnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRVU19UT09fTUFOWV9SRURJUkVD
VFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0gICAgICAgIGRpZEZhaWwoUmVz
b3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBTT1VQX1NF
U1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkpOworICAgICAgICBkaWRGYWls
KFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9TRVNTSU9OX0VS
Uk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJlbnRS
ZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkpOwog
I2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTksNyArOTU5LDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVjdGlvbigpCiAgICAgaWYgKCFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIp
KSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdl
IHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVk
aXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1f
c291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8fCAhcmVxdWVzdC51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJlY3RBc0dFVChtX3NvdXBNZXNz
YWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
TWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9z
KTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CiAgICAgICAgICAg
ICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgICAgIH0KQEAgLTEwMzcsNyAr
MTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0
cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAgICAgaWYgKHRhc2stPm1fc291
cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3I6OmdlbmVy
aWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAg
ICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAgICAgdGFzay0+ZGlkRmFpbChS
ZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29k
ZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5n
IHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2st
Pm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0
U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lucHV0U3RyZWFtKTsKICAgICBt
X2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAgICAgYXV0byogaGVhZGVycyA9
IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVycyhtX211bHRpcGFydElucHV0
U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVh
ZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKKyAgICBTdHJpbmcgY29udGVu
dFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0
LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKICAgICAg
ICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRy
YWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVw
ZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkKICAgICBlbHNlCiAgICAgICAg
IG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRlKG1fZG93bmxvYWREZXN0aW5h
dGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVsbHB0ciwgJmVycm9yLm91dFB0
cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAgICAgZGlkRmFpbERvd25sb2Fk
KGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOwor
ICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9u
c2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6
ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQoKSkpOwogICAgIG91dHB1dFN0
cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25sb2FkSW50ZXJtZWRpYXRlRmls
ZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkgewotICAgICAgICBkaWRGYWls
RG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNz
YWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3Io
bV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdf
T1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93bmxvYWRDYWxsYmFjayhHT3V0
cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKICAg
ICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRwdXRTdHJlYW0sIHJlc3VsdCwg
JmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAg
IHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IodGFzay0+bV9y
ZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFzay0+ZGlkRmFpbERvd25sb2Fk
KGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkV3JpdGVE
b3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAgICAgQVNTRVJUKG1fZG93bmxv
YWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9k
b3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBtX2Nh
bmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0g
ICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25z
ZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVz
dGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdl
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4LDEwICsxNjg4LDEwIEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQog
ewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0LnVybCgpKTsKICAgICBpZiAo
Z19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkp
IHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4dC9odG1sIik7CisgICAgICAg
IG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9IGVsc2UgewotICAgICAgICBj
b25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGlu
Zm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2ZpbGVfaW5mb19nZXRfY29udGVu
dF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1J
TUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgICAgICBtX3Jlc3BvbnNlLnNl
dFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBl
KSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcx
OSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNr
KEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0g
YWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZh
aWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3It
PmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5n
IHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2st
Pm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkp
OwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVh
bSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpl
bnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmlsZSwgR0FzeW5jUmVzdWwKICAg
ICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0
b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1lcmF0ZV9jaGlsZHJlbl9maW5p
c2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoZXJyb3IpCi0gICAg
ICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+
ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291
cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJy
b3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVy
cm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUod2Vi
a2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9m
aXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRl
eCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0KEdSZWZQdHI8U291cFdlYnNv
Y2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVycHJldF9jYXN0PEdDYWxsYmFj
az4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAgICBnX3NpZ25hbF9jb25uZWN0
X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwgcmVpbnRlcnByZXRfY2FzdDxH
Q2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAotICAgIG1fY2hhbm5lbC5kaWRD
b25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3Byb3RvY29sKG1fY29ubmVjdGlv
bi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBtX2NoYW5uZWwuZGlkQ29ubmVj
dChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9wcm90b2NvbChtX2Nvbm5l
Y3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKIAogICAgIG1fY2hhbm5lbC5k
aWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpKTsKICAg
ICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEobV9oYW5kc2hha2VNZXNzYWdl
LmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBlbmQKIAogbmFt
ZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0
aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggYTliZWM1ODcz
ZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwyNSArNTQsMjIgQEAgc3RhdGlj
IFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRPYmplY3QoV0tSZW1vdGVPYmpl
Y3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWJvb2wgbWV0aG9kU2ln
bmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJlLCBjb25zdCBTdHJpbmcmIGxv
Y2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqd2lyZSwg
TlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3aXJlKQorICAgIGlmIChbbG9j
YWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRTYW1lKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAg
IGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgpOwotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxv
Y2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtpXTsKLQotICAgICAgICBpZiAo
bG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWdu
ZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAgICAgIGlmIChzdHJjaHIoIkJj
IiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUpKQotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10odW5pY2hhciBjKSAtPiB1bmlj
aGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5n
ZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6IGM7CisgICAgfTsKKyAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBj
aGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRl
eDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3RhdGljIE5TSW52b2NhdGlvbiAq
ZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIgKmRlY29kZXIpCiAgICAgaWYg
KCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5h
cmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9jYXRpb24gaGFkIG5vIHR5cGUg
c2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9kU2lnbmF0dXJlID0gdHlwZVNp
Z25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtp
bnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcuVVRGOFN0cmluZzsKLSAgICBp
ZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUocmVtb3RlTWV0aG9kU2ln
bmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9k
U2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZzsKKyAg
ICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUodHlwZVNpZ25hdHVy
ZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkxvY2FsIGFuZCByZW1v
dGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxlIGZvciBtZXRob2QgXCIlc1wi
Iiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAiKG5vIHNlbGVjdG9yKSJdOwog
CiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDlj
MGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcg
QEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkK
ICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0KIAotc3RhdGljIFN0cmluZyBy
ZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJ
bnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkK
IHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRob2Q6CiAgICAgY29uc3QgY2hh
ciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1ldGhvZFR5cGVFbmNvZGluZyhw
cm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3LDEyICsxOTcsMTIgQEAgc3Rh
dGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNl
bGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRob2RUeXBlRW5jb2RpbmcpOwog
ICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUgKnRhcmdldE1ldGhvZFNpZ25h
dHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5
cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNpZ25hdHVyZSk7CiAgICAgaWYg
KCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJl
dHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJl
Rm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0y
NDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVt
b3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtO
U01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tT
aWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0gICAgICAgIFN0cmluZyBleHBl
Y3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3Rv
Y29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAgIE5TU3RyaW5nICp3aXJlQmxv
Y2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpy
ZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOworICAg
ICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1
cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOwogCi0gICAg
ICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgpKSB7CisgICAgICAgIGlmICgh
ZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAgTlNMb2coQCJfaW52b2tlTWV0
aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJlOiBjb3VsZCBub3Qg
ZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6
Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0
ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDog
RmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJXMgIT0gJXMiLCB3aXJl
QmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRv
IHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0gJUAiLCB3aXJlQmxvY2tTaWdu
YXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI5OCw3ICsyOTgs
NyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52
b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9OwogCiAgICAgICAgIFJlZlB0
cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6
OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtl
U3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2Vy
XShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAgaWQgcmVwbHlCbG9jayA9IF9f
TlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dpcmVCbG9ja1NpZ25hdHVyZSBV
VEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNo
ZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAgICAgICAgICAgYXV0byBlbmNv
ZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBhbGxvY10gaW5pdF0pOwogICAg
ICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRpb24gZm9yS2V5Omludm9jYXRp
b25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJL
aXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVS
SVJlcXVlc3QuY3BwCmluZGV4IDI1NTcyNmYzZTI2ZS4uMjJhM2I3YzVkYjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJ
UmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHVy
aSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHVyaSB9
IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBiMzdmM2NiMGRiMDcuLmJkOWM1MDA2
NzkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBXZWJLaXRDcmVkZW50aWFsKiB3
ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciogcGlu
LCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNF
X0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRl
KFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3Jl
Q3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJraXRD
cmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3RyaW5n
Ojpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVu
Y2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9EcmFnU291cmNlR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcAppbmRleCAwOWZlYjE0YmUwMTYuLjJhN2NiZjlmNDFmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmICht
X3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRl
cz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEtPmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7
Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9i
eXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAg
ICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMo
UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgp
KSk7CiAgICAgfQogCiAgICAgYXV0byogc3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2Uo
Z3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjUu
LjFmNTIyZGU5NmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRh
cmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFy
Z2V0cyhsaXN0LmdldCgpLCBEcm9wVGFyZ2V0VHlwZTo6VVJJTGlzdCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiX05F
VFNDQVBFX1VSTCIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6TmV0c2NhcGVVUkwpOwogICAgIGd0a190
YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmco
ImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBEcm9wVGFyZ2V0VHlw
ZTo6U21hcnRQYXN0ZSk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtf
YXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgp
KSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZChs
aXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9t
RGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIERyb3BUYXJnZXRUeXBlOjpDdXN0b20p
OwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0KG1fd2ViVmlldywgc3RhdGljX2Nhc3Q8R3RrRGVzdERl
ZmF1bHRzPigwKSwgbnVsbHB0ciwgMCwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlv
bj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7
CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3QobV93ZWJWaWV3LCBsaXN0LmdldCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdl
dEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAKaW5kZXggYWJiYWNhMjljNzQxLi43NDc5MTQyYjlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgIGdk
a19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAi
dGV4dC91cmktbGlzdCIpOwogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWlt
ZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiX05FVFNDQVBFX1VSTCIpOwogICAgIGdka19jb250ZW50
X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiYXBwbGljYXRp
b24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIik7Ci0gICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19i
dWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkpOworICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90
eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJh
Y3RlcnMoKSk7CiAgICAgYXV0byogdGFyZ2V0ID0gZ3RrX2Ryb3BfdGFyZ2V0X2FzeW5jX25ldyhn
ZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfZnJlZV90b19mb3JtYXRzKGZvcm1hdHNCdWlsZGVy
KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwg
R0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ19zaWduYWxfY29ubmVj
dCh0YXJnZXQsICJhY2NlcHQiLCBHX0NBTExCQUNLKCtbXShHdGtEcm9wVGFyZ2V0QXN5bmMqLCBH
ZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2Fybmlu
Z0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdh
cmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIg
aXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0
cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVy
biAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmki
OworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90
cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBA
QCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQg
KnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwog
I2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlk
ZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2Nv
bXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUu
Y29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1
cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9z
OworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0
X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVy
Q29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
OjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAg
cGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywg
Il9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1Q
cmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVp
Y2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9s
bGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2
NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQu
LmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNw
cApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAg
ICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9u
ZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBlOGI5YTA0
N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0
ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBpZiAoc2VsZWN0
aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChs
aXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGljYXRpb24vdm5k
LndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OlNtYXJ0UGFz
dGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAgICAgICAgZ3Rr
X3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmlu
ZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwgQ2xpcGJvYXJk
VGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0Lmdl
dCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1RhcmdldEVudHJ5
KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0LmdldCgpLCAmbnVt
YmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUo
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAgICAgICBjYXNl
IENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBpZiAoZGF0YS5z
ZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICBhdXRv
KiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAgICAgICAgICAg
ICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJu
X3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSks
IDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZm
ZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQo
c2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmluZGV4IDA3YWJi
NzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6Ondy
aXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAgICAgaWYgKHNl
bGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAgICAg
ICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVzKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7Cisg
ICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRl
cyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwg
Ynl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1wdHkoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3Mjk0
OTQxY2FhMmIuLmZiZTAyZWM4ZTNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTEsNyArMzg1MSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVu
SmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFy
YW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJv
dGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRl
dGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMg
bm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5
cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21h
aW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VC
UEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3Jpbmcg
dXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAg
ICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRm
b3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAg
ICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxU
aW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBs
YXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXla
Il9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZp
ZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5
IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAg
ICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQy
IiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
KyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6
S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAg
ICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJL
ZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAg
ImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAg
ICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3du
LCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4
NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUr
MDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00
MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3Qg
VVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50
LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVz
ZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdl
bnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3Rh
bmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xp
ZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3
ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIp
IHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAg
ICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2Vi
cHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWdu
aW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAg
ICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQu
VGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9
ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAo
IW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lk
ZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5
ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
QEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9j
dW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNl
dCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQo
ZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBk
b2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+
c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICBy
ZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVu
dC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0
ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApA
QCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVs
bGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJp
bmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVk
V29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJP
ZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQq
IGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmEx
OWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVm
ZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNv
ZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNv
ZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4u
ZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0
aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3By
ZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsK
LSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgi
QXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGlj
dG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJp
dmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4uYzI5
MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3Bw
CkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmosIG9i
aik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3VudDsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNl
Ojp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNjZXNz
aWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3
aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAg
LTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVBy
b3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJf
cyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMwMmY2
MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25s
b2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3du
bG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVs
dERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFz
aFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAg
ICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAgICAgICAoKmkpLT5SZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5
RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVn
YXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00MywxMyAr
NDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVsdFBv
bGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9
CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBv
bGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0UG9s
aWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1v
cnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlT
dHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9y
eVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3Jl
YXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2
ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0
eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9u
LCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0K
IAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblBy
b3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0
eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQ
dHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYy
NzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGljYXRp
b25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0
aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2Fj
aGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNoZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFw
cGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNh
dGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJp
bmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNy
ZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYo
KTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNh
dGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2RlYmM0
ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyAr
NjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4m
JiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAog
SFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09N
X091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAg
LTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVm
UHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExp
c3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRM
aXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3Mp
OwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUs
NyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAg
IGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgp
KTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJh
Y2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0Zvcndh
cmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3
YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNi
MDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApAQCAt
NDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6OldlYkNh
Y2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsKIH0K
IAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRp
c3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3Bw
CmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3Mo
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJD
b3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRp
c3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
Q29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVT
dGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNz
OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3Rh
dGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJf
b3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBI
YXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJy
ZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJl
bnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1
ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1
cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0
Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsK
ICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2
Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291
bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmpl
Y3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1h
cDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4o
KTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChj
dXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChT
dHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQ
cm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0
ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1l
c0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0
aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3Rh
dAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxN
ZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBs
b25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJG
YXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRk
KCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxk
cy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRz
LmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0
U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlT
dGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZN
Qnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21t
aXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMi
X3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3Mu
ZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywg
aGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZy
ZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAg
IGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGlj
cyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRl
eCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00
NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZy
b21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVs
ZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1l
bnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNl
KElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsK
LSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5
RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5p
bnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0
eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24g
dGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAgICAv
LyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJl
YWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAgICAg
ICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmlu
Zyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzkuLmY3
OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAK
QEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0
YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291cmNl
Ojp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNlKCk7
CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBXZWJE
YXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjc2
NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VN
YW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNl
TWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFz
ZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3
ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNv
dXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9j
dW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50
TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJz
dGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVy
PiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3Mp
OwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0
YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1MWMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1Myw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2FkKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93
bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsKIH0K
IAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25s
b2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gRGVz
dHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRv
d25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRiOWJj
OTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5l
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAK
QEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9y
IGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4p
LCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAg
ICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVy
cm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAg
ICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUlu
c3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3
ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5j
cHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJj
ZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZp
ZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2Ui
X3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBT
VERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2
MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50
UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFn
OjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAg
IDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVy
dHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJh
ZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBX
ZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVh
MWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAt
NDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9y
Ojp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2Vi
RnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUo
KQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBk
OwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5j
ZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNv
cmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBT
dHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwog
ICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7
CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBl
bmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5n
TmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RB
bGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwog
Ci0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1
dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9z
KS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5j
cHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzks
MTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQ
dHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5
TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZy
YW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcx
YWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9j
YXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9s
b2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9j
YXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXgg
OTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09N
UHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0
ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRp
b24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJH
ZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJF
U1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCBy
aWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4u
ODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1M
UmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9u
OjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNv
dW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRN
TFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRN
TFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9u
Ojp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNv
dW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBX
ZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4
ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3
ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlcklu
Zm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
SGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAK
ICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVy
ZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBX
ZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5Ojpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5j
cHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0
ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwog
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7
CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBA
QCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBw
ZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3Rv
cnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUx
LDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZp
ZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRX
ZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rv
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVj
dG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6
ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZh
U2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5j
cHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFT
Y3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9y
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9z
KTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvciog
V2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42
ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENs
YXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NG
YWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0
Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklU
T3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0
Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9v
cC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5k
ZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVz
c2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2Fn
ZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1l
c3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjku
LmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJL
aXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRp
c3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRp
c3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1
MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVz
dDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJs
ZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBX
ZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJs
ZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxl
VVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25E
YXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApp
bmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmln
YXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJO
YXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBX
ZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2Uq
IHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJl
ZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5j
cHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmlj
YXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVBy
b3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdl
Yk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5v
dGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVh
c2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5v
dGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpj
cmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCov
LCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNk
ODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmlj
YXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNh
dGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6
OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0
aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRp
b25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7
CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAK
aW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVu
Y2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVm
ZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlBy
ZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2Vz
OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAK
aW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVz
b3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJp
bmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVz
b3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVz
b3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Ny
aXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3Jp
cHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlw
dFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApp
bmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0
V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAg
ICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3ND
b3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlw
dFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3Js
ZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQo
KSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlw
dFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFy
ZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNw
cAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNl
Y3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlP
cmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdp
biIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwog
fQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmln
aW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9z
KTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43
ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlh
bGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxp
emVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAg
KytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRK
U1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1
ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUo
KQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
U2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+
IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNm
NzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBA
IC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0
ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVy
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQog
CiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhS
RVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4
OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2
LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3Jl
ZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMg
QEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBj
cmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBX
ZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBX
ZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRl
eCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2Vi
VVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlv
blNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25T
cGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJV
UkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJV
UkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFBy
b3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZh
NTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNw
b25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hv
cnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25z
ZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3Bv
bnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVh
dGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVS
TFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRo
ZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNl
ID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAw
LCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNl
KFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0
YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgx
MjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewog
ICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVz
ZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJW
aWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5
LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2Vi
VmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBi
b29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSov
KQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9y
TWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNl
IFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJT
ZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCku
Y29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAg
ICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgp
OworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4
ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJh
bWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVk
aXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50
eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZl
dmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmlu
ZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBk
b2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBj
b21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91
bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29w
eShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBt
X3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNv
bW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDcz
NCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8q
c2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgp
OwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9w
YWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1
dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5f
IEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3Io
KS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygp
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5l
eGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldv
cmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2
YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBA
IFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQog
V2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2Vi
V29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2su
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApp
bmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBAIC0xMTMsMTUgKzExMywxNSBA
QCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIH0KIAogICAgIEFTU0VSVF9F
USgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBk
ZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0wLTAiX3MpKTsK
IAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNT
RVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiKSk7CisgICAg
QVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0wLTAiX3MpKTsK
IAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0gICAgQVNT
RVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTAiKSk7Ci0gICAg
QVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0y
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dl
ci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBB
U1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwpAQCAtMTMwLDEyICsxMzAs
MTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICAvLyBUaGlzIHNlZW1z
IHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24gb2Yg
bGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtlX3R1cGxlLgogICAgIEFTU0VS
VF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAjZW5kaWYKLSAgICBBU1NFUlRf
RVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSIpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiIpKTsKLSAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSIpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTIt
MiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJfcykpOworICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIl9zKSk7CisgICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiX3Mp
KTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSgxMnUsIHRvdGFsRGVzdHJ1
Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMuLmZhOTNkYzQ4
ZDE4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
cHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJp
dmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dC
eXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0
LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9z
Y3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNw
b25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0
ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQg
cnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcElu
aXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzID0g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51
bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9i
KFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlw
ZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVy
dCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3Bv
bnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRt
bCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5q
cyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMg
fSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hl
ZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNX
Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNo
ZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3Jp
cHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZp
ZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgn
L2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsg
Ii9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgn
ZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsg
bWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlw
ZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAi
L2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicp
PC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElz
QXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsK
LSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2Io
Wyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBl
OiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAg
ICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAg
ICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwg
eyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0s
CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVy
UG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQg
c29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAg
ICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMi
X3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0s
IGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcg
KzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25B
cHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAK
IGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4
Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJD
RSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMg
KGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFz
eW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudElu
aXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0
aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGlj
IFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVk
VmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUu
Z2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAg
eyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRt
bCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdl
YlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5t
bQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
CkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0
aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwog
fQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0Pgog
CiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVz
dFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJF
U09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29u
dGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRl
cyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCku
d2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07
CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAog
Ci1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5
PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2Nl
bGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAu
MC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgog
PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBm
cmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9D
RE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlv
blBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIv
Il9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJh
bWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAg
fSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBu
dWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
aW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJ
Iik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBw
bGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXpl
TWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJD
b3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lU
ZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBw
Qm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAt
ICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1
c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFp
bkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSAr
ODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4o
ZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JF
U09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNX
UkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUs
MTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9
KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4
ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dz
U2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywg
eyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAog
ICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29y
ZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0g
ZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNv
bXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9t
IHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQg
ZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2Vy
dmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21h
aW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAg
aXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWlu
VW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNp
dGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05
NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2Vydmlj
ZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNE
b25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3Vj
Y2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIv
bWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgx
MDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3
LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dh
cCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwi
IH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJi
YXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAg
ICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRl
eHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3Jp
Z2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NT
d2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNp
bmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewot
ICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJj
ZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRp
b24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAg
ICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4
dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmln
aW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRl
eCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBh
bmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBS
ZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAg
eyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlv
biA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBs
dWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVK
U0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9Q
cmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5
LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3Rk
OjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2Vi
S2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0
cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dp
dGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZh
dWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dT
aXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRD
b250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxW
aWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0Nv
bnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1Np
emUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmll
d0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250
ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1Np
emUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlv
bkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHRO
UyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIs
NyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50
TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxl
ciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwg
eyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVs
ZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50
TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07
CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6
QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAt
NDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFt
ZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkg
c2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZh
bHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0Nv
bnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9z
IH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBv
bGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0g
W3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJB
Z2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9t
YWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldl
YktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3Vt
bWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90
PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcs
IDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNv
bXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAg
IAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJM
IGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGlu
Z1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456495</attachid>
            <date>2022-04-02 21:01:22 -0700</date>
            <delta_ts>2022-04-02 22:04:28 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>281371</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJl
ZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7
CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3Rz
KSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5z
cG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JF
RElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJj
ZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRV
U19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0g
ICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkp
OworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVE
SVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFu
eSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTks
NyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVj
dGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhv
ZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9u
IG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVz
c2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8
fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJl
Y3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAg
ICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAg
ICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
ZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAg
ICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5k
b21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTEx
MjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQ
YXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lu
cHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAg
ICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVy
cyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUg
PSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsK
KyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhl
YWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVu
Z3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBA
IC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkK
ICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRl
KG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAg
ICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQo
KSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25s
b2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9O
T05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkg
ewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVz
cG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7
CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93
bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXpl
IGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRw
dXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFz
ay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3Bv
bnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsx
NDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRp
YXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NP
UFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4
LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8o
R0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0
LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJ
TEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4
dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7
CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19n
ZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2Zp
bGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAg
ICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCku
aXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJl
YW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2Zp
bmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUo
V1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmls
ZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1Jl
ZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1l
cmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1
ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0
YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFz
ay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVt
ZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0
KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVy
cHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwg
cmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAot
ICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3By
b3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBt
X2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dl
dF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
IAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VN
ZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEo
bV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4
Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwy
NSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRP
YmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJl
LCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3
aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRT
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3
aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBj
aGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtp
XTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAv
LyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAg
ICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10o
dW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNo
YXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6
IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFw
Q2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dp
cmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3Rh
dGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIg
KmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9j
YXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9k
U2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1l
dGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcu
VVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNT
dHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1h
dDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxl
IGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAi
KG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVt
b3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0K
IAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJl
cGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUlu
dGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRo
b2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1l
dGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3
LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRo
b2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUg
KnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNp
Z25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6
KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2Nh
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVC
bG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVz
OnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0g
ICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVy
ZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAg
IE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgp
KSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9j
a1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9r
ZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0g
JUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktp
dDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9
OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBs
eUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVw
bHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dp
cmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVn
aXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAg
ICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBh
bGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRp
b24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4uZmYyMjFj
YTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0
X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVy
bCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2
ZWUxODlhNTQuLjBkYWE1YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBX
ZWJLaXRDcmVkZW50aWFsKiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bp
bihjb25zdCBnY2hhciogcGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVE
RU5USUFMX1BFUlNJU1RFTkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVU
RjgocGluKSwgdG9XZWJDb3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOwor
ICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1w
dHlTdHJpbmcoKSwgU3RyaW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVy
c2lzdGVuY2UocGVyc2lzdGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAppbmRleCAwOWZlYjE0YmUwMTYu
LjJhN2NiZjlmNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrNC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpi
ZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRp
b24+IG8KIAogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURhdGEoKSkgewogICAg
ICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEtPmN1c3RvbURhdGEo
KS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRf
cHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBi
eXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3Zp
ZGVyX25ld19mb3JfYnl0ZXMoUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0
ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byogc3VyZmFjZSA9IGd0a19u
YXRpdmVfZ2V0X3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2ViVmlldykpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApp
bmRleCBmNWFmMDkyYmIyMjUuLjFmNTIyZGU5NmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAg
RHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZF91cmlfdGFyZ2V0cyhsaXN0LmdldCgpLCBEcm9wVGFyZ2V0VHlwZTo6VVJJTGlz
dCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5f
c3RhdGljX3N0cmluZygiX05FVFNDQVBFX1VSTCIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6TmV0c2Nh
cGVVUkwpOwogICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50
ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIp
LCAwLCBEcm9wVGFyZ2V0VHlwZTo6U21hcnRQYXN0ZSk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3Vz
dG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgZ3Rr
X3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmlu
ZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIERyb3BU
YXJnZXRUeXBlOjpDdXN0b20pOwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0KG1fd2ViVmlldywgc3Rh
dGljX2Nhc3Q8R3RrRGVzdERlZmF1bHRzPigwKSwgbnVsbHB0ciwgMCwKICAgICAgICAgc3RhdGlj
X2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwg
R0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3QobV93
ZWJWaWV3LCBsaXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXggYWJiYWNhMjljNzQxLi43NDc5MTQyYjlmMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0
KiB3ZWJWaWV3KQogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBl
KGZvcm1hdHNCdWlsZGVyLCAidGV4dC91cmktbGlzdCIpOwogICAgIGdka19jb250ZW50X2Zvcm1h
dHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiX05FVFNDQVBFX1VSTCIp
OwogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNC
dWlsZGVyLCAiYXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIik7Ci0gICAgZ2Rr
X2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsIFBh
c3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpOworICAgIGdka19jb250ZW50X2Zvcm1hdHNf
YnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSk7CiAgICAgYXV0byogdGFyZ2V0ID0gZ3RrX2Ryb3Bf
dGFyZ2V0X2FzeW5jX25ldyhnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfZnJlZV90b19mb3Jt
YXRzKGZvcm1hdHNCdWlsZGVyKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4o
R0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJhY2NlcHQiLCBHX0NBTExCQUNLKCtbXShHdGtE
cm9wVGFyZ2V0QXN5bmMqLCBHZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1c2VyRGF0YSkgLT4g
Z2Jvb2xlYW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUz
YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3Np
bmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2Fm
ZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcg
bWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICBy
ZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYg
KFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0g
ICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1z
YWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFn
bm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5x
cS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29n
bGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0K
IApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNl
cnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJy
b3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFs
VG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3
dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJo
dHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZh
cmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4u
aHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9z
YWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250
cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29u
dHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3Rl
bVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmll
d0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9z
eXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOwor
ICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0lu
Zm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5
c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJn
ZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVp
bnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApp
bmRleCA1Y2FlODE5ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlz
UGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNl
TmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRp
ZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlw
Ym9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcAppbmRleCBlOGI5YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0
YSkKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3Rr
X3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmlu
ZygiYXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRh
cmdldFR5cGU6OlNtYXJ0UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURh
dGEoKSkKLSAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9p
bnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpKSwgMCwgQ2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENs
aXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwog
ICAgIEd0a1RhcmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlz
dChsaXN0LmdldCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lk
IENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEp
CiAgICAgICAgICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAg
ICAgICAgICBpZiAoZGF0YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAg
ICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0
YSgpOwotICAgICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlv
biwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3Rv
bURhdGE6Omd0a1R5cGUoKSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVm
ZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19z
ZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmlu
ZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSks
IDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZm
ZXItPnNpemUoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwCmluZGV4IDA3YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAg
dm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhKQogCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAg
IEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVh
dGVHQnl0ZXMoKTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRl
cl9uZXdfZm9yX2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCks
IGJ5dGVzLmdldCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJv
dmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlk
ZXJzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1Miw3IEBA
IHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBp
biBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4
Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
Iklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4u
Il9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2
YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5k
IGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQu
LjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6
Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAi
eiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAg
ICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInki
LCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTki
X3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpU
b2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3Ms
Ci0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywg
IktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImki
LAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9z
LCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3
MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xl
VW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAg
ICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5
VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZv
cm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFp
bCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1
cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOwor
ICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwg
IjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3
ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlv
bjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRo
ZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJL
aXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBv
biB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0g
ImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAj
ZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hv
c3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5
TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAg
IGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1
YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5
U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3Ms
IGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygp
LT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxp
bmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dl
c3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsK
KyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3Jh
bW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcg
QEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFt
ZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRl
ci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2lt
cGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3Qp
ZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0
RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsK
IAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQ
aWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0
b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7
CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVk
KGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4
IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFj
Y2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAg
QVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVC
YXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9
CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291
bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nl
c3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2Vi
OTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVBy
b3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAog
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlv
bmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAx
YTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25s
b2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVn
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93
bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQog
ICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
RGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdh
dGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlv
blR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0
UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURl
bGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2
MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1
LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1v
cnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0
eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBA
QCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0
aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFn
KiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFt
ZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAs
MTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBt
X3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2Vi
QXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlv
bkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4
MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7
Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRp
b25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Um
IHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2Fj
aGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4g
c3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1
Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldl
YkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJB
cmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEw
NC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJC
YWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QK
ICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQo
KSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJC
YWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9y
d2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNr
Rm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFj
a0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJk
TGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0Zvcndh
cmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNw
cAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBX
ZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwx
MyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6
V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldl
YkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3Mq
IFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAg
SFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVD
b3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5h
bWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAg
Zm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJl
bnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+
a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsg
Y3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlC
YWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5j
ZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3Vu
dHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFT
Y3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRl
cmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVj
dFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAg
dHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAg
dHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUp
OwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3Bl
cnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMu
Y29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVT
VUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8g
SVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVt
b3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmlu
ZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsK
LSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMp
KTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1C
eXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5
dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwot
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVs
ZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2
YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1l
bW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVk
Vk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29t
bWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFs
bG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1h
bGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFz
dE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFT
Y3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRG
cmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1Np
emUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
c3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7
CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywg
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRv
VGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkK
ICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVt
ZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1l
bnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9t
SW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2Vi
Vmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21t
YW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFj
dHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4K
ICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVj
YXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFu
ZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlu
cHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSks
ICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRl
eCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0
YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VD
b3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNl
Il9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYs
NyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5k
ZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBX
ZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExv
YWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAs
MTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3Rh
bmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5h
Z2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3Mp
OwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFz
ZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFu
YWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4u
MjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAg
LCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRM
b2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVm
PFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2Fk
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNT
RVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3
ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxv
YWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3
ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwg
IldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2Fu
Y2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9h
ZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEw
YTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2Fk
OjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGlj
YXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0
aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmco
V2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlv
biwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
ZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFp
bFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMs
MTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJj
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BT
b3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRl
eCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0Pihy
ZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldl
YkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxl
bWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNw
cAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1f
ZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJf
cyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVz
ZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4
MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdl
YkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZy
YW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmlu
Z0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3Ry
aW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJf
czsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJp
bmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1v
dmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRj
MjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0z
NiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Oldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmlu
ZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRN
TFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdl
YkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXgg
M2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0
eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJI
aXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9y
eTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0
b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4m
JiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0
ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0o
KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZk
YWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNT
RVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3Bl
Y3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIu
Ljc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkph
dmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5k
ZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENs
YXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdl
YkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xh
c3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRN
ZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICsz
NCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxv
b3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsK
IH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VM
b29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJf
cyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApp
bmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJh
bWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlz
dGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUp
CiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11
dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5h
dmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMg
KzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2
aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0
LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25z
dCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtu
b3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRS
ZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01
Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAg
IG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiog
V2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93
biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4
IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3Rp
ZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3
LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVm
ZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQ
cmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4
MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3Bw
CkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Ny
aXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
X3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmpl
Y3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMp
OwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNj
cmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJf
cyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5y
ZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNj
cmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDks
MTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3Jp
Z2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5k
ZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2Vi
U2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2Vi
U2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3
YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJU
ZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJl
bmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJU
ZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5k
ZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBt
X3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5
M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIs
MTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEw
Njk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRp
YWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0z
NywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJf
cyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBT
dHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0Nv
ZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNw
b25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdl
YlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGlu
c3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3Bv
bnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGlu
c3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRw
Oi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0
cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5
MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6
fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAg
IFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5
NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0s
IExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFt
KSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgp
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29s
IFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3
NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VS
TCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0
NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApA
QCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6
Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29y
a2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2
YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldv
cmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJz
UHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhi
MzBjMjM4YzMuLmRkYzE4NWQ5NmJjNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0
NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhT
dWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewog
ICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0
aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlv
bjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0g
Y2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYs
MjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0Fw
cEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAg
QVNDSUlMaXRlcmFsIGpzOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRy
OwogCiAgICAgc3dpdGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6
U3ludGhldGljOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxz
Y3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0
ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcg
QmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAi
c3ludGhldGljIHJlc3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXNwb25zZVR5
cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gn
LCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkg
fSk7IjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVu
dCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiX3M7
CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7
IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwK
LSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJv
bSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVz
IH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJf
cyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTM2
OSwxMyArMzY5LDEzIEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3c1dp
dGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRj
aGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9m
ZXRjaGVkLmh0bWwnKSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJm
ZXRjaGVkIGZyb20gc2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpz
IH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNo
ZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5T
V0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3Ms
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2Ny
aXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6
Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CkBAIC00NTIsMTIgKzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcElu
aXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0gICAg
c3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAo
ZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNj
cmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3Rl
eHQvaHRtbCd9KSkpOyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYu
YWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgo
bmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25z
ZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKIAogICAgIHsK
ICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAg
IHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sg
IkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAg
ICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cu
anMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fX0sIGpzIH0gfSwKICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAgICAgIHNlcnZlclBvcnQg
PSBzZXJ2ZXIxLnBvcnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNvZnRV
cGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogCiAgICAgewogICAgICAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICAgICAgeyAiLyIs
IHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVu
dC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgICAg
IHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7
IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9
IH0KICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwogCiAgICAgICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJo
dHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1NTgs
NyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5p
dGlhdGVkKQogCiAjaWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNX
Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8g
bWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5j
dGlvbiBsb2cobXNnKQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNlcHRp
b246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIi
U1dSRVNPVVJDRSgKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVu
dCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAgICAgZXZlbnQuc291cmNl
LnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBhc3luYyBm
dW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFs
TWVzc2FnZSkKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVk
Jyk7CiB9CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiAKIHN0YXRpYyBTdHJp
bmcgZXhwZWN0ZWRNZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFjeVJl
cG9ydCwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVl
KQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIv
bWFpbi5odG1sIiwgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsgIi9z
dy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9
LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3Ms
IHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsg
eyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2Ny
aXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAgLy8gTG9hZCBXZWJWaWV3
IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5k
ZXggY2RiOTEwNGFlYjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAt
MzE3LDcgKzMxNyw3IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZpcmVPcmllbnRhdGlvbkV2
ZW50c1JpZ2h0QXdheUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAgICAgRVhQRUNUX1dLX1NU
UkVRKEAicmVjZWl2ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogPHNjcmlwdD4KIAogZnVu
Y3Rpb24gbG9nKG1zZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0aW9uIHJlcXVlc3RQZXJt
aXNzaW9uKCkgewogfQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0UiOworKVRFU1RSRVNPVVJD
RSJfczsKIAogVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lvblNlY3VyZUNvbnRleHRD
aGVjaykKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi8iLCB7IG1haW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluQnl0ZXMgfSB9
CiAgICAgfSk7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNp
dGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAt
Mzk1LDIzICszOTUsMjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJl
cXVlc3REZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24KIH0KIEBlbmQKIAotc3Rh
dGljIGNvbnN0IGNoYXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT4KIDxp
ZnJhbWUgc3JjPSdodHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBhbGxvdz0nYWNjZWxlcm9t
ZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRwczovLzEyNy4wLjAuMTo5
MDkxO21hZ25ldG9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48L2lmcmFtZT4KIDwvYm9k
eT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBmcmFtZVRleHQgPSBS
IkRPQ0RPQ0RPQygKKylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZnJhbWVU
ZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RP
QyI7CispRE9DRE9DRE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNlT3JpZW50YXRpb25QZXJt
aXNzaW9uSW5JRnJhbWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIx
KHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAgICAgICAgeyAiLyJfcywg
eyBtYWluRnJhbWVUZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAKICAgICBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJhbWUiLCB7IGZyYW1lVGV4
dCB9IH0sCisgICAgICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQgfSB9LAogICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0
ciwgOTA5MSk7CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4
IDg1ZjdkODlkYmQ4MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBA
IC0xMzEsMTQgKzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVwSW5BcHBCcm93c2Vy
UHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSIpOwor
ICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5U
aHJlYWQoKTsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRl
c3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7CisgICAgV2ViQ29yZTo6
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElk
ZW50aWZpZXIiX3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5k
RG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1LDcgQEAgLSAodm9p
ZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNv
bnRlbnRDb250cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRl
cyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlNX
UkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODUwLDkgKzg1MCw5
IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0
aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09V
UkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwxNSArODc1LDE1IEBA
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9u
KHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
Ci1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAKIHNlbGYuYWRkRXZl
bnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50LnNvdXJjZS5wb3N0
TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwogfSk7CiAK
LSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBAIC04OTksOCArODk5
LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZp
Y2VXb3JrZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCi0gICAgICAg
IHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFp
bkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9
KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9y
QWxsT3JpZ2luc107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZhbHNl
OwogICAgIAogICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0
ZSBzdWNjZXNzZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3Jr
ZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFp
biI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VX
b3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiJfczsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
VW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblVucmVn
aXN0ZXJCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAg
IHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTY3LDcg
Kzk2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9
IGZhbHNlOwogCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3Mi
OworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIl9zOwogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4u
aHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYi4uNWJjZWE4MTA5M2Nm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nl
c3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgzMTcsOCArODMxNyw4IEBA
IFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29wUHJvY2Vzc1N3YXApCiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAotICAgICAgICB7ICIv
ZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7
ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9
IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKKyAgICAgICAg
eyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0
bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJf
cyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVTVChQcm9jZXNzU3dhcCwg
Q29udGVudE1vZGVJbkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAg
ICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRt
bCJfcywgeyAiZm9vIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMp
OwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0
bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7
ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRt
bCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9z
IH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOwog
CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzNj
OGRiYzViNzFlLi5mZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0KQEAgLTI0MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
RGVsZXRlT25lQ3JlZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUmVjb3Zl
ckFmdGVyQXV0aE5Qcm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9CisgICAgICAgIHsgIi8i
X3MsIHsgIkZPTyJfcyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9y
VGVzdGluZzpZRVNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVy
cmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250
ZW50TW9kZS5tbQppbmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZhYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KQEAgLTE2OSw3ICsx
NjksNyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0
aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQ
SSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitSZXRhaW5QdHI8Vmll
d0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0
TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENv
bnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9y
VXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1h
a2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChkZWZhdWx0Q29udGVu
dE1vZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb24KIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0Ns
YXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50
TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNp
emUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFz
cz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1v
ZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNp
emUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxl
Z2F0ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tD
b250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzcyLDcgKzM3
Miw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVkQ29udGVudE1vZGVB
dFZhcmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBh
ZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KHsgfSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBs
b2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6
V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAg
IFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96
aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSw3
ICs0MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hbWVGb3JE
ZXNrdG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNldCB0
aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwg
TW9iaWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50
TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCJfcyB9KTsK
ICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lE
ZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJW
aWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQg
Y29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5j
cHAKaW5kZXggMTIwNGNiNTI4YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvbWFpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQ
cm92aWRlcnMoKQogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgdWludDhfdD4gZXhh
bXBsZUNvbXBhY3RQb2ludGVyVHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44Qml0U3RyaW5nLCAyNTUg
fTsKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIGJvb2w+IGV4YW1wbGVDb21wYWN0
UG9pbnRlclR1cGxlU2ltcGxlQm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRydWUgfTsKICAgICAKLSAg
ICBVUkwgYVVSTCh7IH0sICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIpOworICAgIFVSTCBhVVJM
KCJodHRwczovL3d3dy5leGFtcGxlLmNvbSJfcyk7CiAKICAgICBicmVha0ZvclRlc3RpbmdTdW1t
YXJ5UHJvdmlkZXJzKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="484806"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456496</attachid>
            <date>2022-04-02 22:04:28 -0700</date>
            <delta_ts>2022-04-02 22:57:11 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>286250</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJl
ZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7
CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3Rz
KSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5z
cG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JF
RElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJj
ZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRV
U19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0g
ICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkp
OworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVE
SVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFu
eSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTks
NyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVj
dGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhv
ZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9u
IG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVz
c2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8
fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJl
Y3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAg
ICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAg
ICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
ZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAg
ICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5k
b21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTEx
MjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQ
YXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lu
cHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAg
ICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVy
cyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUg
PSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsK
KyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhl
YWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVu
Z3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBA
IC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkK
ICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRl
KG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAg
ICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQo
KSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25s
b2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9O
T05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkg
ewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVz
cG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7
CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93
bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXpl
IGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRw
dXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFz
ay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3Bv
bnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsx
NDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRp
YXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NP
UFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4
LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8o
R0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0
LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJ
TEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4
dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7
CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19n
ZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2Zp
bGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAg
ICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCku
aXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJl
YW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2Zp
bmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUo
V1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmls
ZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1Jl
ZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1l
cmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1
ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0
YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFz
ay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVt
ZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0
KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVy
cHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwg
cmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAot
ICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3By
b3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBt
X2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dl
dF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
IAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VN
ZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEo
bV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4
Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwy
NSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRP
YmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJl
LCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3
aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRT
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3
aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBj
aGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtp
XTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAv
LyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAg
ICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10o
dW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNo
YXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6
IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFw
Q2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dp
cmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3Rh
dGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIg
KmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9j
YXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9k
U2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1l
dGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcu
VVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNT
dHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1h
dDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxl
IGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAi
KG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVt
b3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0K
IAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJl
cGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUlu
dGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRo
b2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1l
dGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3
LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRo
b2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUg
KnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNp
Z25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6
KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2Nh
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVC
bG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVz
OnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0g
ICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVy
ZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAg
IE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgp
KSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9j
a1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9r
ZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0g
JUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktp
dDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9
OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBs
eUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVw
bHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dp
cmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVn
aXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAg
ICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBh
bGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRp
b24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4uZmYyMjFj
YTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0
X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVy
bCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3MzYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQwLDEyICs0
MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHByaW50ZXJO
b3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6
OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90IGZvdW5k
IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJy
b3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VS
TCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAKIFJlc291
cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JE
b21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxpbmdVUkws
IF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6
OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50OjpJbnZh
bGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFsaWQgcGFn
ZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCiAgICAg
aWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lvbi0+cHJp
di0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgpOworICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0cmluZyB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1YzliZDVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3Jl
ZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFsKiB3ZWJr
aXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciogcGluLCBX
ZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNFX0ZP
Ul9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdl
YkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3JlQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJraXRDcmVk
ZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3RyaW5nOjpm
cm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2Up
KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
YWdTb3VyY2VHdGs0LmNwcAppbmRleCAwOWZlYjE0YmUwMTYuLjJhN2NiZjlmNDFmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmIChtX3Nl
bGVjdGlvbkRhdGEtPmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4g
Ynl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEtPmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0g
ICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRl
cyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAg
ICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoUGFz
dGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7
CiAgICAgfQogCiAgICAgYXV0byogc3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2UoZ3Rr
X3dpZGdldF9nZXRfbmF0aXZlKG1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjUuLjFm
NTIyZGU5NmJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdl
dChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0
cyhsaXN0LmdldCgpLCBEcm9wVGFyZ2V0VHlwZTo6VVJJTGlzdCk7CiAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiX05FVFND
QVBFX1VSTCIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6TmV0c2NhcGVVUkwpOwogICAgIGd0a190YXJn
ZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFw
cGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6
U21hcnRQYXN0ZSk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRv
bV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwg
MCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0
LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIERyb3BUYXJnZXRUeXBlOjpDdXN0b20pOwog
ICAgIGd0a19kcmFnX2Rlc3Rfc2V0KG1fd2ViVmlldywgc3RhdGljX2Nhc3Q8R3RrRGVzdERlZmF1
bHRzPigwKSwgbnVsbHB0ciwgMCwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4o
R0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3QobV93ZWJWaWV3LCBsaXN0LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5j
cHAKaW5kZXggYWJiYWNhMjljNzQxLi43NDc5MTQyYjlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJnZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgIGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAidGV4
dC91cmktbGlzdCIpOwogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90
eXBlKGZvcm1hdHNCdWlsZGVyLCAiX05FVFNDQVBFX1VSTCIpOwogICAgIGdka19jb250ZW50X2Zv
cm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiYXBwbGljYXRpb24v
dm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIik7Ci0gICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWls
ZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpn
dGtUeXBlKCkpOworICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBl
KGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3Rl
cnMoKSk7CiAgICAgYXV0byogdGFyZ2V0ID0gZ3RrX2Ryb3BfdGFyZ2V0X2FzeW5jX25ldyhnZGtf
Y29udGVudF9mb3JtYXRzX2J1aWxkZXJfZnJlZV90b19mb3JtYXRzKGZvcm1hdHNCdWlsZGVyKSwK
ICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RL
X0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh0
YXJnZXQsICJhY2NlcHQiLCBHX0NBTExCQUNLKCtbXShHdGtEcm9wVGFyZ2V0QXN5bmMqLCBHZGtE
cm9wKiBnZGtEcm9wLCBncG9pbnRlciB1c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNT
QlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVE
ZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNF
cXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6
Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAi
aHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOwor
ICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9
c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9k
aWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBz
dGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vs
c2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJU
ZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBs
YWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29t
L3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOwor
ICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vy
cm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpm
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFn
ZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9h
cHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2
aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2ts
b29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
Ojp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90
IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9y
VUlQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dl
Ykluc3BlY3RvclVJUHJveHlXaW4uY3BwCmluZGV4IGY0MDBkNWU3MzcxOS4uMWExOTE1NTVmOWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYklu
c3BlY3RvclVJUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBX
ZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQ
YWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIGF1dG8gcHJlZmVy
ZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2Vi
S2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShT
dHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogI2lmIEVOQUJMRShERVZFTE9Q
RVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNw
ZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJl
ZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcg
KzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50
Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01N
YWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIp
OworICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRy
aWJ1dGlvbmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2Uw
YzQ0ZDVmYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
My5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6
U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2Fu
U21hcnRSZXBsYWNlKCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsu
c21hcnRwYXN0ZSIpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlz
dF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OkN1c3RvbSk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwog
CiAgICAgaW50IG51bWJlck9mVGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBn
dGtfdGFyZ2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0
cyk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRU
YXJnZXRUeXBlOjpDdXN0b206CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0
YS5oYXNDdXN0b21EYXRhKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0g
ZGF0YS5zZWxlY3Rpb25EYXRhLmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3Rr
X3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3Ry
aW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVy
cHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRm
ZDk2MTZjNWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRH
dGs0LmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3Jl
OjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRh
Lmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxl
Y3Rpb25EYXRhLmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVy
cy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92
aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6
UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgp
KSk7CiAgICAgfQogCiAgICAgaWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIz
NGRkYWE4Zi4uZTMxODg5ZjM0NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmlu
ZyBiYWNrZW5kQ29tbWFuZHNQYXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKHVybFJlZi5nZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihw
YXRoKSwgTUFYX1BBVEgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcx
YzIyODkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAs
NyArMjQwLDcgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3
aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCi0gICAgbV9wYWdlLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7Cisg
ICAgbV9wYWdlLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgog
CiAgICAgLy8gRklYTUU6IEluaXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRj
aGVzIFdlYktpdCB3aW4sIGJ1dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGYuLmEyZTFj
MTMxNTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTM4NTIsNyArMzg1Miw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJG
cmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYg
KGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxl
IHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1i
b3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9t
YWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAg
ICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBm
b3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xP
R19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSAr
NzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21t
YW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIs
IDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7Cisg
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAi
VSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0g
ICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktl
eVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIs
Ci0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3Ms
ICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJ
dGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAg
ICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1l
Ojpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRm
b3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9z
LAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAg
ICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUi
X3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBA
QCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91
bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJp
UGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRp
b25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRX
aXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5t
bQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0
IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigp
CiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9S
TShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0
IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBz
b3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciBy
ZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7
CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2Vi
S2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0
VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2
MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYs
NyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAg
ICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1l
bnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxw
dHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVy
eUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkg
PyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1l
ZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEw
N2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3
IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0
cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAog
aW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdW
aWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2Nh
dGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEz
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VE
YXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3Nl
dE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRv
UHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2Rpbmcg
VVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcg
KzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmlu
ZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3Bs
YXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2pp
Iik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1p
bHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0
dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIs
MTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iaiwgSFdORCB3aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmpl
Y3QtPnNldFdyYXBwZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJh
c2UoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNz
aWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0
ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5k
ZXggOWExZjAxMTIyMWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBA
QAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFy
eVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0
cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0
ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRE
b3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3du
bG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNw
cApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERv
d25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxv
YWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBt
X2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBl
OGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRl
ZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpE
ZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9z
KTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNo
YXJlZEluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmlu
ZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9y
eVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1v
cnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJl
YW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9
CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5
QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJh
Zy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9u
UHJvcGVydHlCYWcoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwg
bV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJv
cGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9
CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5z
dGFuY2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVt
ZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEw
MmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0
aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBw
bGljYXRpb25DYWNoZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBX
ZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2Fj
aGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUi
X3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVh
dGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25D
YWNoZVBhdGgoKQogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGlj
YXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlv
bkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5s
ZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJj
aGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkK
ICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9z
KTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNo
aXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
V2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJk
TGlzdD4mJiBiYWNrRm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNl
dChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNr
Rm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJC
YWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlz
dFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExp
c3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJf
cyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5X
ZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNo
ZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1
MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQog
CiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3Mi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsK
IH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5j
ZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNj
cmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJh
dG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywg
aW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RU
eXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5
cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5
cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsK
IAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0
eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNv
cHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQg
V2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRy
X29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVu
ZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0
ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBl
bmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1
cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50
LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJl
c3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVD
b3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBA
IC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0
aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1l
bW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNz
KCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2
ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29t
bWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxv
Y1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxs
b2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFs
bG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlw
dEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6
ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
KSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRz
LmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBm
aWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7
CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykp
OworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAg
IGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxk
cy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5
QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEu
LmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAg
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50
KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAg
ICAgICAgIElET01IVE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElu
cHV0RWxlbWVudCwgKHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAg
ICBTdHJpbmcgY29tbWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAg
ICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVu
dChrZSkgfTsKICAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJl
IGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxs
ZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0
byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNl
IHRvIHNlbmQgYW4gZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUt
PmRvUGxhdGZvcm1Db21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0
KGUtPmRvY3VtZW50KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVy
KQogewogICAgIFdlYkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRh
dGFTb3VyY2UoKQpAQCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJj
ZSgpCiAgICAgICAgIG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNv
dXJjZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVh
dGVJbnN0YW5jZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3
NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRh
YmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0
YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJE
YXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRv
Y3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExv
YWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3Mp
OwogfQogCiBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0
YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50
TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2Rh
dGFTb3VyY2UpIHsKICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAg
ICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6
On5XZWJEb3dubG9hZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxv
YWQoKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9h
ZCAoJXApIiwgdGhpcyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3du
bG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShf
SW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVz
b3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVz
ZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9y
IGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxl
ZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVy
cm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7
CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5
MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BT
b3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJj
ZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJE
cm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2Vi
RHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxl
bWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
CkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJv
cGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFr
ZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdl
YkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9w
ZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBA
IFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5
QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJF
cnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQog
CiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1l
KCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1
MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1l
Q291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9z
KTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyAr
NTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVT
dHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5
cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVU
eXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0
ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0x
MDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAo
IWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJi
NGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJh
bWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
OjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAg
ICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJf
cyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5m
ZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9z
aXRpb24oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
VE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVz
ZW50YXRpb24oKQogewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRh
dGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9u
Il9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9u
KCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJl
c2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNl
bnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50
YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRp
YyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0
ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAg
LTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2Vi
SGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUz
OWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJ
dGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3Rv
cnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRl
bTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1f
aGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0
b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3Bl
Y3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3Bl
Y3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3Rv
ckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0
ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3Bl
Y3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAog
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9y
LmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0
MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6
OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENv
bGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAt
NjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENM
U0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwog
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENs
YXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0
b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
S2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRD
bGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4
Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktp
dE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRN
ZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJL
aXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2
LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpX
ZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRT
dGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVS
TFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFi
bGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJM
UmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVx
dWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0
IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11
dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRh
YmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFk
MTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmln
YXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJO
YXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdl
CiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
TmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRp
b25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
Yk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZp
Z2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0
YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29s
IGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3
MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlm
aWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwog
ICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6
fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldl
Yk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRp
b24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7
CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShC
U1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcq
IHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAK
QEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlv
bkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0
ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJO
b3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJO
b3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlm
aWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJh
MjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJl
bmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJl
ZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJl
ZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJl
ZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2Vz
Il9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0
NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSog
ZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2Zy
YW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJj
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQog
CiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRP
YmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApp
bmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9i
amVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJT
Y3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMw
ZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdv
cmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlw
dFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCku
YWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2Ny
aXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdv
cmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0K
IAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5
MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpX
ZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBt
X3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0
eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVu
a25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAK
QEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6
ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdl
YlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0Ns
YXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFs
dWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRK
U1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4
dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMg
QEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdl
YlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVy
ZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJl
bmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdi
NjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQ
dHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6
On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5k
ZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVu
dGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAg
IDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFs
Ojp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFs
KiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQu
LjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
UHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNw
YWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlv
blNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSog
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIx
NSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZv
clN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9u
c2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9u
c2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9u
c2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsK
IH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7
CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAg
ICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJl
c3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7Cisg
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRw
Oi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYz
MzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291
bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0
dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkK
IAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdl
YlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6
Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4
ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAg
ICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVj
dXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0
QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVy
biBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAg
ICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQo
IlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29t
bWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBA
IC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXBy
ZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1
dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtl
eUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5v
dWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1
c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwK
QEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3Mp
LmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBT
X09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9J
bl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1h
bmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIs
NyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxs
aW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVf
KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAw
NDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2
YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZh
dGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6
On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNj
ZDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBA
IC0xMTA0LDcgKzExMDQsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0
KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVy
bCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50
UGF0aChwYXRoT3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lz
dGVtOjpwYXJlbnRQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hh
cl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBw
YXRoVG9Gb250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBA
IC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3Qg
Y2hhciogcGF0aE9yVXJsKQogCiAgICAgU3RyaW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAK
LSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAg
ICAgLy8gRmluZCB0aGUgbGF5b3V0IHRlc3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAg
IHNpemVfdCBsb2NhdGlvbiA9IHBhdGhUb0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXgg
NTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVT
VChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUs
IGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVs
dENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgx
dSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAg
ICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9F
USgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VS
VF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAg
ICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9F
USgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VS
VF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikp
OworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0w
Il9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJU
X0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBA
IFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBi
ZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJk
YXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEo
OXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0x
LTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAK
ICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JD
YWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5kZGMxODVkOTZiYzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJp
dmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lS
ZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNX
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsy
NjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0
PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VU
eXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDog
Ym9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0
ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0g
ICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqczsKICAgICBj
b25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9u
c2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwi
c3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7
IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0g
fSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9
fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0
KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikK
ICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBj
b25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBj
b25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwog
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdl
YlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAg
c3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQp
CiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMg
cmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihb
JzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6
ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9
IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVz
dElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAg
LTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVz
IH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0
MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVf
Q19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5
ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3Njcmlw
dD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciog
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYu
aW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJu
YWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5
UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAg
LTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQg
cmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBw
IGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQw
MjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERl
dmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Np
b25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50Iiwg
cmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMg
PSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIs
MTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3Jp
ZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcu
MC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7
Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9D
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0
bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAog
VEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1h
aW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIs
IG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIy
KHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJh
bWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdh
NWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVu
ZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQog
ewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092
ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJj
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRp
bmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6
Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZh
Y3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRB
dFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIq
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAo
ZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIg
cmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93
c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFp
bi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcg
KzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3Qg
dGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5
NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAg
ICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1h
aW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250
ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNl
Lmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNl
Lmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9z
LCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdp
bi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAg
ICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5
LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09O
VGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsg
ImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAg
ICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUt
b3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2Vi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYs
NyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNo
KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
LyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAg
fSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3
MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1By
ZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWlu
UHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5n
V2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRl
ZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dT
aXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9y
UHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6
Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJL
aXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3
IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3
Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50
TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9k
ZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1v
ZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0
Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENv
bnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsK
ICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVa
ZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEki
X3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdp
dGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNl
ckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBA
IlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJy
ZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9
CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9y
IHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAg
IGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUv
MTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAg
ICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRd
OwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxl
Il0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIv
VG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4u
Y2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFp
bi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3
ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0
UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxl
TWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJU
dXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wg
eyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6
Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5j
b20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484807"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456497</attachid>
            <date>2022-04-02 22:29:20 -0700</date>
            <delta_ts>2022-04-02 23:29:10 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>286967</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJl
ZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7
CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3Rz
KSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5z
cG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JF
RElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJj
ZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRV
U19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0g
ICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkp
OworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVE
SVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFu
eSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTks
NyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVj
dGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhv
ZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9u
IG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVz
c2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8
fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJl
Y3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAg
ICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAg
ICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
ZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAg
ICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5k
b21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTEx
MjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQ
YXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lu
cHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAg
ICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVy
cyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUg
PSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsK
KyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhl
YWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVu
Z3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBA
IC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkK
ICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRl
KG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAg
ICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQo
KSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25s
b2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9O
T05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkg
ewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVz
cG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7
CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93
bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXpl
IGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRw
dXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFz
ay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3Bv
bnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsx
NDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRp
YXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NP
UFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4
LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8o
R0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0
LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJ
TEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4
dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7
CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19n
ZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2Zp
bGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAg
ICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCku
aXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJl
YW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2Zp
bmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUo
V1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmls
ZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1Jl
ZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1l
cmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1
ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0
YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFz
ay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVt
ZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0
KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVy
cHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwg
cmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAot
ICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3By
b3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBt
X2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dl
dF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
IAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VN
ZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEo
bV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4
Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwy
NSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRP
YmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJl
LCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3
aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRT
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3
aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBj
aGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtp
XTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAv
LyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAg
ICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10o
dW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNo
YXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6
IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFw
Q2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dp
cmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3Rh
dGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIg
KmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9j
YXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9k
U2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1l
dGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcu
VVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNT
dHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1h
dDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxl
IGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAi
KG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVt
b3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0K
IAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJl
cGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUlu
dGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRo
b2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1l
dGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3
LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRo
b2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUg
KnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNp
Z25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6
KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2Nh
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVC
bG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVz
OnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0g
ICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVy
ZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAg
IE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgp
KSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9j
a1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9r
ZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0g
JUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktp
dDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9
OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBs
eUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVw
bHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dp
cmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVn
aXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAg
ICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBh
bGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRp
b24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4uZmYyMjFj
YTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0
X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVy
bCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3MzYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQwLDEyICs0
MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHByaW50ZXJO
b3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6
OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90IGZvdW5k
IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJy
b3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VS
TCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAKIFJlc291
cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JE
b21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxpbmdVUkws
IF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6
OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50OjpJbnZh
bGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFsaWQgcGFn
ZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCiAgICAg
aWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lvbi0+cHJp
di0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgpOworICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0cmluZyB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1YzliZDVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3Jl
ZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFsKiB3ZWJr
aXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciogcGluLCBX
ZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNFX0ZP
Ul9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdl
YkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3JlQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJraXRDcmVk
ZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3RyaW5nOjpm
cm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2Up
KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggOWZjNGQzMTk5MDM2Li43NTMy
ZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRQ
cm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJM
KHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBV
UkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwuaG9zdCgpID09ICJncHUiKSB7
CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAppbmRleCAw
OWZlYjE0YmUwMTYuLjJhN2NiZjlmNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBE
cmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURh
dGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEt
PmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQo
Z2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5
cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byogc3Vy
ZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2Vi
VmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjUuLjFmNTIyZGU5NmJhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAg
ICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0cyhsaXN0LmdldCgpLCBEcm9wVGFyZ2V0
VHlwZTo6VVJJTGlzdCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtf
YXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiX05FVFNDQVBFX1VSTCIpLCAwLCBEcm9wVGFyZ2V0
VHlwZTo6TmV0c2NhcGVVUkwpOwogICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsu
c21hcnRwYXN0ZSIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6U21hcnRQYXN0ZSk7Ci0gICAgZ3RrX3Rh
cmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3Rv
bSk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5f
c3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMo
KSksIDAsIERyb3BUYXJnZXRUeXBlOjpDdXN0b20pOwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0KG1f
d2ViVmlldywgc3RhdGljX2Nhc3Q8R3RrRGVzdERlZmF1bHRzPigwKSwgbnVsbHB0ciwgMCwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FD
VElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFy
Z2V0X2xpc3QobV93ZWJWaWV3LCBsaXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXggYWJiYWNhMjljNzQxLi43
NDc5MTQyYjlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJn
ZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9h
ZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAidGV4dC91cmktbGlzdCIpOwogICAgIGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiX05F
VFNDQVBFX1VSTCIpOwogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90
eXBlKGZvcm1hdHNCdWlsZGVyLCAiYXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3Rl
Iik7Ci0gICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0
c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpOworICAgIGdka19jb250
ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSk7CiAgICAgYXV0byogdGFyZ2V0
ID0gZ3RrX2Ryb3BfdGFyZ2V0X2FzeW5jX25ldyhnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJf
ZnJlZV90b19mb3JtYXRzKGZvcm1hdHNCdWlsZGVyKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2Rr
RHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElP
Tl9MSU5LKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJhY2NlcHQiLCBHX0NBTExC
QUNLKCtbXShHdGtEcm9wVGFyZ2V0QXN5bmMqLCBHZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1
c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBl
Yy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0
YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNl
bHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVy
VGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVj
ay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVi
cm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8v
d3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAi
aHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7
CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJy
b3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0
LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92
aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJu
ICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0g
ICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJy
b3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5j
b20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cu
Z29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1
ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBA
QCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2Vy
U3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25U
cmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9u
X3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lz
dGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwog
fQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0Fj
dGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRv
Y3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3Bw
CmluZGV4IGY0MDBkNWU3MzcxOS4uMWExOTE1NTVmOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQ
cm94eVdpbi5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3Rv
clVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5z
cGVjdGVkUGFnZSgpKTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAi
V2ViS2l0Mi4iX3MpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBk
ZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdp
dGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVu
dCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBs
ZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNoU2Vy
dmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAj
ZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsxNzUsNyBA
QCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlv
bkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBDbGlwYm9h
cmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0
b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAgIGd0a190
YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmco
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCAw
LCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9mVGFyZ2V0
czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9t
X2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1LDcgQEAg
dm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206CiAgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRhLmN1c3Rv
bURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxl
Y3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBn
dGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcgKzE4Niw3
IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAg
ICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURhdGEoKS0+
Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJv
dmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50
X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKHBy
b3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0NGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQYXRoKCkK
ICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5nZXQoKSwg
ZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmlldzo6V2Vi
VmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRv
d1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdlLT5zZXRV
UkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxTY2hlbWVI
YW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3JlYXRlKCpt
X3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IEluaXRpYWxp
emluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1dCBzZWVt
cyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1Miw3IEBA
IHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBp
biBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4
Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
Iklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4u
Il9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2
YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5k
IGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQu
LjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6
Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAi
eiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAg
ICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInki
LCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTki
X3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpU
b2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3Ms
Ci0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywg
IktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImki
LAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9z
LCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3
MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xl
VW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAg
ICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5
VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZv
cm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFp
bCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1
cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOwor
ICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwg
IjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3
ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlv
bjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRo
ZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJL
aXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBv
biB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0g
ImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAj
ZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hv
c3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5
TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAg
IGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1
YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5
U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3Ms
IGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygp
LT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxp
bmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dl
c3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsK
KyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3Jh
bW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcg
QEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFt
ZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRl
ci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2lt
cGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3Qp
ZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0
RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsK
IAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQ
aWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0
b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7
CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVk
KGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4
IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFj
Y2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAg
QVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVC
YXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9
CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291
bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nl
c3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2Vi
OTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVBy
b3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAog
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlv
bmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAx
YTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25s
b2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVn
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93
bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQog
ICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
RGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdh
dGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlv
blR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0
UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURl
bGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2
MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1
LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1v
cnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0
eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBA
QCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0
aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFn
KiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFt
ZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAs
MTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBt
X3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2Vi
QXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlv
bkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4
MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7
Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRp
b25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Um
IHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2Fj
aGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4g
c3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1
Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldl
YkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJB
cmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEw
NC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJC
YWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QK
ICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQo
KSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJC
YWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9y
d2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNr
Rm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFj
a0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJk
TGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0Zvcndh
cmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNw
cAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBX
ZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwx
MyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6
V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldl
YkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3Mq
IFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAg
SFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVD
b3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5h
bWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAg
Zm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJl
bnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+
a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsg
Y3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlC
YWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5j
ZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3Vu
dHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFT
Y3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRl
cmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVj
dFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAg
dHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAg
dHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUp
OwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3Bl
cnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMu
Y29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVT
VUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8g
SVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVt
b3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmlu
ZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsK
LSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMp
KTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1C
eXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5
dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwot
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVs
ZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2
YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1l
bW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVk
Vk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29t
bWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFs
bG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1h
bGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFz
dE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFT
Y3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRG
cmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1Np
emUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
c3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7
CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywg
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRv
VGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkK
ICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVt
ZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1l
bnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9t
SW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2Vi
Vmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21t
YW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFj
dHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4K
ICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVj
YXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFu
ZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlu
cHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSks
ICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRl
eCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0
YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VD
b3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNl
Il9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYs
NyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5k
ZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBX
ZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExv
YWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAs
MTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3Rh
bmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5h
Z2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3Mp
OwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFz
ZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFu
YWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4u
MjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAg
LCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRM
b2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVm
PFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2Fk
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNT
RVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3
ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxv
YWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3
ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwg
IldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2Fu
Y2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9h
ZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEw
YTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2Fk
OjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGlj
YXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0
aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmco
V2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlv
biwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
ZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFp
bFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMs
MTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJj
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BT
b3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRl
eCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0Pihy
ZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldl
YkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxl
bWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNw
cAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1f
ZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJf
cyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVz
ZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4
MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdl
YkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZy
YW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmlu
Z0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3Ry
aW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJf
czsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJp
bmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1v
dmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRj
MjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0z
NiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Oldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmlu
ZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRN
TFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdl
YkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXgg
M2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0
eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJI
aXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9y
eTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0
b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4m
JiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0
ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0o
KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZk
YWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNT
RVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3Bl
Y3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIu
Ljc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkph
dmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5k
ZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENs
YXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdl
YkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xh
c3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRN
ZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICsz
NCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxv
b3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsK
IH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VM
b29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJf
cyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApp
bmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJh
bWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlz
dGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUp
CiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11
dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5h
dmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMg
KzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2
aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0
LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25z
dCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtu
b3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRS
ZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01
Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAg
IG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiog
V2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93
biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4
IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3Rp
ZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3
LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVm
ZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQ
cmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4
MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3Bw
CkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Ny
aXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
X3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmpl
Y3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMp
OwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNj
cmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJf
cyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5y
ZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNj
cmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDks
MTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3Jp
Z2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5k
ZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2Vi
U2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2Vi
U2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3
YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJU
ZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJl
bmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJU
ZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5k
ZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBt
X3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5
M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIs
MTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEw
Njk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRp
YWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0z
NywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJf
cyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBT
dHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0Nv
ZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNw
b25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdl
YlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGlu
c3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3Bv
bnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGlu
c3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRw
Oi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0
cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5
MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6
fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAg
IFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5
NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0s
IExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFt
KSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgp
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29s
IFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3
NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VS
TCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0
NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApA
QCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6
Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29y
a2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2
YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldv
cmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJz
UHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNjZDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTA0LDcgKzExMDQsNyBAQCBzdGF0
aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5k
Rm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRv
Rm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoT3JVcmwpOworICAgIFN0
cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKFN0cmluZzo6
ZnJvbVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07
CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2sud2lkZUNo
YXJhY3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0
aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogCiAgICAg
U3RyaW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxh
eW91dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAgICAgLy8gRmluZCB0aGUgbGF5b3V0IHRl
c3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAgIHNpemVfdCBsb2NhdGlvbiA9IHBhdGhU
b0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3
OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
VGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBC
YXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwog
CiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFz
aywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMg
aW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtl
IHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0x
Il9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAg
ICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0K
aW5kZXggODA4YjMwYzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAg
LTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0
PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0
KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVT
T1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVk
IH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3
NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNl
VHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxs
cHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0
ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNw
b25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVz
cG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9z
Y3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3Rl
ZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIi
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBt
YWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIv
ZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8
L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxl
V2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZl
dGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
QWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFs
ZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJf
cywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAg
ICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2Vy
dmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRl
c3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQ
b3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcg
QmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0
aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7
CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0g
ICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cu
anMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpz
IH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAg
ICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBz
ZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMg
dm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAg
IHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAg
ICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9Cisg
ICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAg
ICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01
NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVz
dE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlw
dD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxv
ZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0
VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBh
c3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcg
QEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVT
ZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBw
IGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBz
dGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0
aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFp
bi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3
LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExv
YWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRp
b24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3Jp
ZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVY
UEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsx
XSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiBy
ZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylU
RVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1
cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFp
bkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+
PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9
J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8x
MjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJh
bWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4K
LSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVu
dGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAg
IHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwg
eyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwK
ICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxw
dHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcElu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAg
IFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBO
b25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3
IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5
dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1
MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dS
RVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUg
Kzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhl
bihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRh
KTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAt
ODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9
LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1s
Il9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRl
bnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9
IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRh
UmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQg
dG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdl
IGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1i
b3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
X3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0
KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
ICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAor
ICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
QEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAg
ICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlv
biBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2Vz
cyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhv
c3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjVi
Y2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDgg
KzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nl
c3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAg
ICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQv
aHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0g
fSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0s
CisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2Ft
ZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAg
ICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVy
MSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIv
c291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0
aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwK
KyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3Ms
ICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1l
LW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAg
ICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJl
ZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBA
IC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0
ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0
YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+
IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUg
PSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVm
YXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0
aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWlu
UHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0
cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAg
LTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENv
bnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3
aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVd
ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4o
eyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNv
bnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3Ry
aW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwog
CkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRp
b25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51
YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1
bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUx
NDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3
aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdl
bnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShb
dXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0g
YS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVp
bnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0
cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFt
cGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07
CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAg
ICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JU
ZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484809"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456498</attachid>
            <date>2022-04-02 22:58:40 -0700</date>
            <delta_ts>2022-04-03 10:34:45 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>291359</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJl
ZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7
CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3Rz
KSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5z
cG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JF
RElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJj
ZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRV
U19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0g
ICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkp
OworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVE
SVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFu
eSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTks
NyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVj
dGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhv
ZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9u
IG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVz
c2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8
fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJl
Y3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAg
ICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAg
ICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
ZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAg
ICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5k
b21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTEx
MjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQ
YXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lu
cHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAg
ICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVy
cyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUg
PSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsK
KyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhl
YWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVu
Z3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBA
IC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkK
ICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRl
KG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAg
ICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQo
KSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25s
b2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9O
T05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkg
ewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVz
cG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7
CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93
bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXpl
IGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRw
dXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFz
ay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3Bv
bnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsx
NDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRp
YXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NP
UFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4
LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8o
R0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0
LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJ
TEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4
dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7
CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19n
ZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2Zp
bGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAg
ICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCku
aXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJl
YW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2Zp
bmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUo
V1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmls
ZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1Jl
ZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1l
cmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1
ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0
YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFz
ay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVt
ZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0
KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVy
cHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwg
cmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAot
ICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3By
b3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBt
X2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dl
dF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
IAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VN
ZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEo
bV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4
Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwy
NSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRP
YmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJl
LCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3
aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRT
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3
aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBj
aGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtp
XTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAv
LyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAg
ICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10o
dW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNo
YXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6
IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFw
Q2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dp
cmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3Rh
dGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIg
KmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9j
YXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9k
U2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1l
dGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcu
VVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNT
dHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1h
dDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxl
IGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAi
KG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVt
b3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0K
IAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJl
cGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUlu
dGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRo
b2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1l
dGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3
LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRo
b2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUg
KnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNp
Z25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6
KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2Nh
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVC
bG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVz
OnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0g
ICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVy
ZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAg
IE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgp
KSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9j
a1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9r
ZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0g
JUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktp
dDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9
OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBs
eUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVw
bHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dp
cmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVn
aXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAg
ICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBh
bGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRp
b24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4uZmYyMjFj
YTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0
X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVy
bCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3MzYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQwLDEyICs0
MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHByaW50ZXJO
b3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6
OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90IGZvdW5k
IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJy
b3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VS
TCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAKIFJlc291
cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JE
b21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxpbmdVUkws
IF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6
OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50OjpJbnZh
bGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFsaWQgcGFn
ZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCiAgICAg
aWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lvbi0+cHJp
di0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgpOworICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0cmluZyB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1YzliZDVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3Jl
ZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFsKiB3ZWJr
aXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciogcGluLCBX
ZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNFX0ZP
Ul9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdl
YkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3JlQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJraXRDcmVk
ZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3RyaW5nOjpm
cm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2Up
KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggOWZjNGQzMTk5MDM2Li43NTMy
ZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCBXZWJLaXRQ
cm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihXZWJLaXRXZWJDb250ZXh0KiBj
b250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJL
aXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJM
KHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBV
UkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwuaG9zdCgpID09ICJncHUiKSB7
CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAppbmRleCAw
OWZlYjE0YmUwMTYuLjJhN2NiZjlmNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBE
cmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0
PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURh
dGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEt
PmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQo
Z2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5
cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byogc3Vy
ZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2Vi
VmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9w
VGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjUuLjFmNTIyZGU5NmJhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKQEAgLTUx
LDcgKzUxLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAg
ICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0cyhsaXN0LmdldCgpLCBEcm9wVGFyZ2V0
VHlwZTo6VVJJTGlzdCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtf
YXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiX05FVFNDQVBFX1VSTCIpLCAwLCBEcm9wVGFyZ2V0
VHlwZTo6TmV0c2NhcGVVUkwpOwogICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsu
c21hcnRwYXN0ZSIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6U21hcnRQYXN0ZSk7Ci0gICAgZ3RrX3Rh
cmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQ
YXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3Rv
bSk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5f
c3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMo
KSksIDAsIERyb3BUYXJnZXRUeXBlOjpDdXN0b20pOwogICAgIGd0a19kcmFnX2Rlc3Rfc2V0KG1f
d2ViVmlldywgc3RhdGljX2Nhc3Q8R3RrRGVzdERlZmF1bHRzPigwKSwgbnVsbHB0ciwgMCwKICAg
ICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FD
VElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXRfdGFy
Z2V0X2xpc3QobV93ZWJWaWV3LCBsaXN0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXggYWJiYWNhMjljNzQxLi43
NDc5MTQyYjlmMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
RHJvcFRhcmdldEd0azQuY3BwCkBAIC00OSw3ICs0OSw3IEBAIERyb3BUYXJnZXQ6OkRyb3BUYXJn
ZXQoR3RrV2lkZ2V0KiB3ZWJWaWV3KQogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9h
ZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAidGV4dC91cmktbGlzdCIpOwogICAgIGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCAiX05F
VFNDQVBFX1VSTCIpOwogICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90
eXBlKGZvcm1hdHNCdWlsZGVyLCAiYXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3Rl
Iik7Ci0gICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0
c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpOworICAgIGdka19jb250
ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJv
YXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSk7CiAgICAgYXV0byogdGFyZ2V0
ID0gZ3RrX2Ryb3BfdGFyZ2V0X2FzeW5jX25ldyhnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJf
ZnJlZV90b19mb3JtYXRzKGZvcm1hdHNCdWlsZGVyKSwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2Rr
RHJhZ0FjdGlvbj4oR0RLX0FDVElPTl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElP
Tl9MSU5LKSk7CiAgICAgZ19zaWduYWxfY29ubmVjdCh0YXJnZXQsICJhY2NlcHQiLCBHX0NBTExC
QUNLKCtbXShHdGtEcm9wVGFyZ2V0QXN5bmMqLCBHZGtEcm9wKiBnZGtEcm9wLCBncG9pbnRlciB1
c2VyRGF0YSkgLT4gZ2Jvb2xlYW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBl
Yy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0
YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNl
bHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVy
VGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVj
ay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVi
cm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8v
d3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAi
aHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7
CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJy
b3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0
LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92
aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJu
ICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0g
ICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJy
b3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5j
b20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cu
Z29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2Vu
ZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3Rl
bVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1
ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBA
QCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2Vy
U3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25U
cmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9u
X3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lz
dGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwog
fQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0Fj
dGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRv
Y3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3Bw
CmluZGV4IGY0MDBkNWU3MzcxOS4uMWExOTE1NTVmOWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQ
cm94eVdpbi5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3Rv
clVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NFUlQoaW5z
cGVjdGVkUGFnZSgpKTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAi
V2ViS2l0Mi4iX3MpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBk
ZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdp
dGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4
dHJhc0VuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lzdGVu
dCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlmCiAj
aWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBs
ZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNoU2Vy
dmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7CiAj
ZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJk
R3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsxNzUsNyBA
QCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlv
bkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBDbGlwYm9h
cmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0
b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAgIGd0a190
YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmco
V2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCAw
LCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9mVGFyZ2V0
czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9t
X2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1LDcgQEAg
dm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25E
YXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206CiAgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRhLmN1c3Rv
bURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxl
Y3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRD
dXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBn
dGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwg
YnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0
ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9h
cmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcgKzE4Niw3
IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0
aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAg
ICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURhdGEoKS0+
Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJv
dmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50
X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAgaWYgKHBy
b3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0NGM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5j
cHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQYXRoKCkK
ICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5nZXQoKSwg
ZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQogICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JT
ZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmlldzo6V2Vi
VmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRv
d1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdlLT5zZXRV
UkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxTY2hlbWVI
YW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3JlYXRlKCpt
X3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IEluaXRpYWxp
emluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1dCBzZWVt
cyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1Miw3IEBA
IHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFw
cEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBp
biBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4
Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAg
ICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Ig
bm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywg
Iklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4u
Il9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2
YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5k
IGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQu
LjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6
Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAi
eiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAg
ICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInki
LCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZh
bHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
InkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTki
X3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpU
b2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3Ms
Ci0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywg
IktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImki
LAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2
ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9z
LCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3
MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xl
VW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAg
ICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5
VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZv
cm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFp
bCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1
cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOwor
ICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwg
IjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3
ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50
Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlv
bjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5U
RVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRo
ZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJL
aXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBv
biB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0g
ImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAj
ZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hv
c3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5
TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAg
IGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFR
dWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1
YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3Vt
ZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5
U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3Ms
IGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygp
LT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQog
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxp
bmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dl
c3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsK
KyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3Jh
bW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVu
Z3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRh
U291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcg
QEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFt
ZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRl
ci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJp
dmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmlu
ZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2lt
cGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3Qp
ZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0
RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsK
IAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQ
aWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0
b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7
CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVk
KGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVk
KHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4
IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFj
Y2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAg
QVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVC
YXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9
CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291
bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nl
c3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2Vi
OTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVBy
b3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAog
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlv
bmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAx
YTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25s
b2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVn
YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93
bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQog
ICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
RGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVn
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdh
dGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlv
blR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0
UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURl
bGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2
MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1
LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1v
cnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+
IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0
eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBA
QCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0
aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFn
KiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFt
ZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxp
Y2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAs
MTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBt
X3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2Vi
QXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlv
bkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4
MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7
Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRp
b25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Um
IHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2Fj
aGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4g
c3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1
Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hp
dmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8
TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldl
YkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJB
cmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEw
NC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJC
YWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJC
YWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QK
ICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQo
KSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJC
YWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9y
d2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNr
Rm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFj
a0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJk
TGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0Zvcndh
cmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNw
cAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBX
ZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwx
MyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6
V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldl
YkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3Mq
IFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAg
SFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVD
b3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5h
bWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAg
Zm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJl
bnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+
a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsg
Y3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlC
YWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5j
ZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3Vu
dHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFT
Y3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRl
cmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5n
LCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVj
dFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAg
dHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAg
dHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUp
OwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3Bl
cnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMu
Y29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVT
VUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8g
SVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVt
b3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmlu
ZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsK
LSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMp
KTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1C
eXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5
dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwot
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVs
ZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2
YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1l
bW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVk
Vk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29t
bWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFs
bG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1h
bGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFz
dE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFT
Y3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRG
cmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1Np
emUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
c3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7
CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywg
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRv
VGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkK
ICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVt
ZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1l
bnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9t
SW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2Vi
Vmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21t
YW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAg
ICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFj
dHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4K
ICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVj
YXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFu
ZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlu
cHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSks
ICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRl
eCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0
YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VD
b3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNl
Il9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYs
NyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5k
ZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBX
ZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExv
YWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAs
MTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3Rh
bmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5h
Z2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3Mp
OwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFz
ZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFu
YWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4u
MjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1
bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRM
b2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVu
dExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAg
LCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRM
b2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVm
PFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2Fk
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNT
RVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3
ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxv
YWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3
ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwg
IldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2Fu
Y2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9h
ZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEw
YTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2Fk
OjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGlj
YXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0
aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmco
V2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlv
biwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
ZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwg
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFp
bFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMs
MTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJj
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BT
b3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZh
Y2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRl
eCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJl
c3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0Pihy
ZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldl
YkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxl
bWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNw
cAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1f
ZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJf
cyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVz
ZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4
MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0y
NDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50
Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdl
YkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZy
YW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6
bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNU
UiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmlu
Z0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3Ry
aW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJf
czsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJp
bmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxU
IFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
IlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
ICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1v
dmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRj
MjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0Miwx
MyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3Zl
KGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0z
NiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0
aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246Oldl
Ykdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9j
YXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVy
ZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmlu
ZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhU
TUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRN
TFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdl
YkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXgg
M2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0
eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJI
aXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNo
YXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9y
eTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0
b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4m
JiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0
ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0o
KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZk
YWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZp
ZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNT
RVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3Bl
Y3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIu
Ljc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkph
dmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5k
ZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENs
YXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdl
YkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xh
c3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRN
ZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICsz
NCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxv
b3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsK
IH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VM
b29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJf
cyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcApp
bmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJh
bWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlz
dGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7
CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBX
ZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUp
CiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11
dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJl
cXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5h
dmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMg
KzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2
aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0
LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25z
dCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyAr
NDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtu
b3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRS
ZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01
Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAg
IG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiog
V2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93
biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4
IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJO
b3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VV
bmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3Rp
ZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZp
Y2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3
LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVm
ZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQ
cmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5j
ZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4
MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3Bw
CkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Ny
aXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
X3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmpl
Y3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBA
QCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVy
V29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMp
OwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNj
cmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJf
cyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5y
ZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNj
cmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDks
MTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5
T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vj
dXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3Jp
Z2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5k
ZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2Vi
U2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2Vi
U2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3
YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJU
ZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJU
ZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJl
bmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJU
ZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5k
ZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBt
X3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5
M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIs
MTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xp
ZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEw
Njk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3Bw
CkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChj
b25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRp
YWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRl
bnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0z
NywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlv
blNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJf
cyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5j
cHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBT
dHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0Nv
ZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNw
b25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdl
YlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGlu
c3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3Bv
bnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGlu
c3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRw
Oi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2Ug
PSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0
cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAt
MzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxX
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5
MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0
Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6
fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAg
IFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5
NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0s
IExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFt
KSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAg
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgp
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29s
IFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50
KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGlu
dGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0
b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAg
ICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAg
ICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1v
ZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0
ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3
NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VS
TCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0
NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1
dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApA
QCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6
Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29y
a2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2
YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldv
cmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJz
UHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNjZDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTA0LDcgKzExMDQsNyBAQCBzdGF0
aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5k
Rm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRv
Rm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoT3JVcmwpOworICAgIFN0
cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKFN0cmluZzo6
ZnJvbVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07
CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2sud2lkZUNo
YXJhY3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0
aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogCiAgICAg
U3RyaW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5n
IGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxh
eW91dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAgICAgLy8gRmluZCB0aGUgbGF5b3V0IHRl
c3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAgIHNpemVfdCBsb2NhdGlvbiA9IHBhdGhU
b0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3
OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFk
VGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRU
YXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBC
YXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0
cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1
LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwog
CiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFz
aywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMg
aW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtl
IHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBB
U1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0x
Il9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAg
ICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRleCBmZmJhMDBiODAy
MWEuLmU4MDcwNzRmNGNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVTVChIVFRQUGFyc2Vy
cywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lmIFVTRShHTElCKQog
VEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7Ci0gICAgRVhQRUNU
X1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7Ci0gICAgRVhQRUNU
X1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0IikpOwotICAg
IEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiKSk7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2Vi
S2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAgRVhQRUNUX1RSVUUo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIChNb3pp
bGxhOyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIpKTsKLSAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkg
Y29tbWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFs
cGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVy
cykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJhIChz
aW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIl9zKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAu
MCBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxp
a2UgR2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29t
bWVudCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7CisgICAgRVhQRUNU
X1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9gfH4gKG5vbi1h
bHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFj
dGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
ImEgKHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFjZSkiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFp
bGluZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXdsaW5l
KVxuIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1l
bnQiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIikpOwot
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEw
LjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2lu
ZyBwcm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOworICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgd2hpdGVz
cGFjZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkv
IChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQi
X3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkgdW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVyKSJfcykp
OworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9c
bjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSJf
cykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIi8xMjMg
KG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQu
bW0KaW5kZXggODA4YjMwYzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0K
QEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRl
ZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2Ny
aXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3Lmpz
JykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFs
ZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNX
UkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRj
aGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAg
LTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3Bv
bnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBu
dWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFs
ZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBS
ZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
bmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+
J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcg
UmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIp
PC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBl
Y3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
ZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0
bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2
ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAg
eyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0
KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywg
eyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1U
eXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7
ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVy
Jyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRp
cGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAi
LyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAg
ICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tX
ZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0
ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCku
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2
ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShu
ZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4n
XSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0
byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50
LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50
aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSki
X3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7
Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIv
c3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0s
IGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAg
ICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0
aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAog
ICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAg
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAog
ICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBA
IC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2lu
VGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNj
cmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAg
IGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylT
V1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZh
dWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2Un
LCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAg
IGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIw
LDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhh
dmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24g
YXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAog
CiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNU
KEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJ
bml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAot
ICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIv
bWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAi
L3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8v
IExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRo
ZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVu
dGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50
YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJl
T3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAg
IEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQo
KVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJD
RSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlv
biByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsK
KylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25T
ZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlv
bi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9
CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0Mo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0
bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxs
b3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9p
ZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciog
ZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRt
bD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9y
aWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAg
ICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1l
IiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0g
fSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51
bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2Vy
UHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5V
cEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFy
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29y
ZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RX
ZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIo
ImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6Omlu
aXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOwor
ICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2Vy
UHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgy
NSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJv
bGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFp
bkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAg
LTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3Lmpz
JykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUs
MTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dS
RVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAog
CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5k
YXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpA
QCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21h
aW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMg
fSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5o
dG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNv
bnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRl
cyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVE
YXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBp
c0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxv
YWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNz
YWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFw
cC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29y
a2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21h
aW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxo
b3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25l
KTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwi
LCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMg
fSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9
LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAg
W1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5z
XTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
ICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJh
dGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3Vj
Y2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2Nh
bGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0Rv
bmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2Iu
LjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3
LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFBy
b2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwK
LSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRl
eHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4i
IH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9
IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBl
Il9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAi
c2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29u
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1Qo
UHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkK
ICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7
ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9k
ZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsg
IkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0g
fSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJz
YW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQor
ICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNv
bmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
UHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2Rl
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
CkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxl
Z2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsg
fSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsg
IlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQor
UmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1v
ZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNp
emUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAo
ZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xh
c3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0
YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0
ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlv
bmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
IH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFp
blB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+
PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25h
bDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9z
IH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2Vi
VmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXRO
YXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUg
PSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
QEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRl
ZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFj
ZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJW
aWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rp
bmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2
ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRs
ZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWlu
U3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxd
OwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGlj
YXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBN
YW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRl
ZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAg
YXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVu
dE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8x
NUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
IiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2Vy
QWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJV
RShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0
VGVzdGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAot
LS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyos
IHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJp
dFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBl
eGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVl
IH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsK
KyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtG
b3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484810"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456506</attachid>
            <date>2022-04-03 10:34:45 -0700</date>
            <delta_ts>2022-04-03 12:27:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>297398</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKQEAg
LTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJl
ZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3RzID0gMjA7
CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVkaXJlY3Rz
KSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5z
cG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JF
RElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChSZXNvdXJj
ZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQX1NUQVRV
U19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNlbHNlCi0g
ICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJ
T05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJl
bnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkp
OworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVE
SVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFu
eSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05NTks
NyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBSZWRpcmVj
dGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0IG1ldGhv
ZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGlyZWN0aW9u
IG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNvdXBfbWVz
c2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9EX0dFVCB8
fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxkUmVkaXJl
Y3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkobnVs
bHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAg
ICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6cmVh
ZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAg
ICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
ZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAgICAgICAg
ICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5k
b21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkKQEAgLTEx
MjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVzdE5leHRQ
YXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJUKCFtX2lu
cHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVhbSk7CiAg
ICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRfaGVhZGVy
cyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVudFR5cGUg
PSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsK
KyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhl
YWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRlbnRfbGVu
Z3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVycyk7CkBA
IC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25sb2FkKCkK
ICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfY3JlYXRl
KG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVs
bHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKLSAgICAg
ICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1lZGlhdGVG
aWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0aC5nZXQo
KSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rvd25s
b2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NSRUFURV9O
T05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkg
ewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVz
cG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0cHV0U3Ry
ZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1JlZigpKSk7
CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OndyaXRlRG93
bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAgIGdzaXpl
IGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2ZpbmlzaChvdXRw
dXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsKICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgdGFz
ay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3Bv
bnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0NCw3ICsx
NDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9hZCgpCiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVlT3V0UHRy
PEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50ZXJtZWRp
YXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NP
UFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRyLCAmZXJy
b3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjg4
LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8o
R0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RSZXF1ZXN0
LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9PSBHX0ZJ
TEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4
dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRtbCJfcyk7
CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsKICAgICB9
IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVfaW5mb19n
ZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyBnX2Zp
bGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAg
ICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVUeXBlKCku
aXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgTmUK
ICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5wdXRTdHJl
YW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9yZWFkX2Zp
bmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJyb3IpCi0g
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwg
ZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUo
V1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmlsZSogZmls
ZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1Jl
ZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxlX2VudW1l
cmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkpKTsKICAg
ICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJr
X3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1
ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0
YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFz
ay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92ZShlbnVt
ZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tl
dFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1Nv
dXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0
KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAgICBnX3Np
Z25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCByZWludGVy
cHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlzKTsKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xvc2VkIiwg
cmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlzKTsKIAot
ICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25fZ2V0X3By
b3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsKKyAgICBt
X2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dl
dF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
IAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5kc2hha2VN
ZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2RhdGEo
bV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRhMzAwZmQ4
Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlv
bmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNB
cmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVy
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIu
bW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBAIC01NCwy
NSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVuY29kZWRP
YmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5nJiB3aXJl
LCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2NhbCA9PSB3
aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09yZGVyZWRT
YW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgoKSAhPSB3
aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxlbmd0aCgp
OwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBj
aGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0gd2lyZVtp
XTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAgICAgICAv
LyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAgICAgICAg
ICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2lyZVR5cGUp
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVyID0gW10o
dW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2lnbmVkIGNo
YXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/ICdjJyA6
IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsKKyAgICBm
b3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAobWFw
Q2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0ZXIoW3dp
cmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDggQEAgc3Rh
dGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERlY29kZXIg
KmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpAIkludm9j
YXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3RlTWV0aG9k
U2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBsb2NhbE1l
dGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVTdHJpbmcu
VVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGli
bGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisgICAgTlNT
dHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJl
XS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBh
dGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1h
dDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21wYXRpYmxl
IGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3RvcikgOiAi
KG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
CkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3RyeSYpcmVt
b3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3RyeTsKIH0K
IAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJpbmcgKnJl
cGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUlu
dGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRlZCBtZXRo
b2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29sX2dldE1l
dGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpAQCAtMTk3
LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29s
ICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VSVChtZXRo
b2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAgICAgICBy
ZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWduYXR1cmUg
KnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRo
T2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1ldGhvZFNp
Z25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1ldGhvZFNp
Z25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRleF0uX3R5
cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6
KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2Nh
dAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5nIHdpcmVC
bG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVz
OnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJpbmc7Ci0g
ICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVy
ZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7CisgICAgICAg
IE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0
dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCld
Ll90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlzTnVsbCgp
KSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAgICAgICAg
TlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2ln
bmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdpcmVCbG9j
a1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRC
bG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAiX2ludm9r
ZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogJUAgIT0g
JUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0IFdlYktp
dDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAgICAgICB9
OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBSZXBs
eUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAgaWQgcmVw
bHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2lyZUJsb2Nr
U2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2soW3dp
cmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0UmVn
aXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewogICAg
ICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5jb2RlciBh
bGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omludm9jYXRp
b24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4uZmYyMjFj
YTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRV
UklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0
X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAg
IGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBn
X3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVy
bCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNv
dXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3MzYzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQwLDEyICs0
MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBj
b25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHByaW50ZXJO
b3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4gUmVzb3Vy
Y2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6
OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90IGZvdW5k
IikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJy
b3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VS
TCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAKIFJlc291
cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQog
ewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JE
b21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxpbmdVUkws
IF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6
OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50OjpJbnZh
bGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFsaWQgcGFn
ZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNl
c3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRpb25TZXNz
aW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24pCiAgICAg
aWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lvbi0+cHJp
di0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgpOworICAg
IHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0cmluZyB3
ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9tYXRpb25T
ZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1YzliZDVh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3Jl
ZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFsKiB3ZWJr
aXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciogcGluLCBX
ZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNFX0ZP
Ul9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdl
YkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3JlQ3Jl
ZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJraXRDcmVk
ZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3RyaW5nOjpm
cm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2Up
KSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDkyNjJhODRk
ZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBAIC0x
MzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmlld1JlbW92
ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZhbHVlKCkp
OwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChtZXNz
YWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUludDY0KiBj
YWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJh
Y2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nh
c3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAgICAgICAg
ICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAg
ICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdlLmdldCgi
U25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxX
ZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAgd2ViS2l0
V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1ZSgpLCBp
bWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggOWZjNGQz
MTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQsNyArOTQs
NyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihXZWJLaXRX
ZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxl
UmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVSTCByZXF1
ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVl
c3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwuaG9zdCgp
ID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0
dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGlu
Z3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC01Nyw3
ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0U2V0dGlu
Z3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAgOiBwcmVm
ZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2Vi
S2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0
cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAgICBkZWZh
dWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51dGY4KCk7
CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRGb250RmFt
aWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nf
c2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFyKiB1c2Vy
QWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2VyQWdlbnQp
OwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNlckFnZW50
U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1c2VyQWdl
bnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygpKTsKIAog
ICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsKICAgICBp
ZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAK
aW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
CkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAgICAgV2Vi
S2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsKICAgICBp
ZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBlID0gd2Vi
S2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJU2NoZW1l
UmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBy
ZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsgd2ViS2l0
VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklTY2hlbWVS
ZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJl
c3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2UgPSB3ZWJL
aXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAgIGlmIChz
dGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9L
Il9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7Ci0gICAg
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRhdGEoKSk7
CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBzdGF0dXNN
ZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2UubWltZVR5
cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShNSU1FVHlw
ZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRvU3RyaW5n
KCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
ZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgogCiAgICAg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OwogICAg
IHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9y
LT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVy
cm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyB7
IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9yKGVycm9y
LT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVy
cm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3VyY2VFcnJv
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJj
ZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApAQCAtODks
NyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rp
b25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2VsZWN0aW9u
RGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAgICAgICAg
cHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVzKFBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAgIHByb3Zp
ZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9
CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtfd2lkZ2V0
X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1MjJkZTk2
YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJn
ZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dp
ZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKGxpc3Qu
Z2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
KGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NBUEVfVVJM
IiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3RhcmdldF9saXN0
X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGljYXRp
b24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpTbWFydFBh
c3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVy
bl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAwLCBEcm9w
VGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCks
IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtU
eXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAgICAgZ3Rr
X2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVsdHM+KDAp
LCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNU
SU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBndGtf
ZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAppbmRl
eCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgRHJv
cFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2NvbnRlbnRf
Zm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0L3VyaS1s
aXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9y
bWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19i
dWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92bmQud2Vi
a2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRk
X21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUo
KSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0
c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpKTsK
ICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19jb250ZW50
X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAogICAgICAg
ICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9O
X01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRhcmdldCwg
ImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdk
a0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4u
MjJmYzBhOGRmYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3Bl
L1dlYktpdENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dl
YktpdENvbG9yLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9w
YXJzZShXZWJLaXRDb2xvciogY29sb3IsIGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChjb2xvciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNv
cmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7
CisgICAgYXV0byB3ZWJDb3JlQ29sb3IgPSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JX
aXRob3V0Q29udGV4dChTdHJpbmcgeyBjb2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVD
b2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1t
CmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBA
IC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZp
Y2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxz
QmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRv
U3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cu
dXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAg
ICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJp
Il9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9z
dGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMg
U3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAg
ICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50
XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0
bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVi
cm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBz
Oi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJl
dHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90
cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4
IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0K
QEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdD
b250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5
c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9h
cl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0
aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1
dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmln
Z2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1l
bnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94
eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3Bl
Y3RvclVJUHJveHlXaW4uY3BwCmluZGV4IGY0MDBkNWU3MzcxOS4uMWExOTE1NTVmOWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3Rv
clVJUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93
aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBXZWJQYWdl
UHJveHkqIFdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkK
IHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMg
PSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4i
KTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmco
KSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9E
RSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3Ig
aW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5j
ZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKElzUGVyc2lzdGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0
b3J5KCkpOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2Vy
dmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAg
ICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlv
bmQuc2VydmljZSJfcyk7CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVm
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAK
QEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRS
ZXBsYWNlKCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRw
YXN0ZSIpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2Vs
ZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQo
bGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3Rv
bSk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50
ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUo
KS5jaGFyYWN0ZXJzKCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAg
aW50IG51bWJlck9mVGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFy
Z2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBA
IC0yMTUsNyArMjE1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlv
bkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRU
eXBlOjpDdXN0b206CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXND
dXN0b21EYXRhKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5z
ZWxlY3Rpb25EYXRhLmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVj
dGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdl
YkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9j
YXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+
KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZj
NWY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNw
cApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1
c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25E
YXRhLmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBl
bmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMu
YXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAg
ICAgfQogCiAgICAgaWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4
Zi4uZTMxODg5ZjM0NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9X
ZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNr
ZW5kQ29tbWFuZHNQYXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKHVybFJlZi5nZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwg
TUFYX1BBVEgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAg
cmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxp
emVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQw
LDcgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJl
YSgpLT5zZXRTaXplKHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
Ci0gICAgbV9wYWdlLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9w
YWdlLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAg
Ly8gRklYTUU6IEluaXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdl
YktpdCB3aW4sIGJ1dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTM4NTIsNyArMzg1Miw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSog
ZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1l
LT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4
ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBk
b21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0p
OwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2Ny
aXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBk
b2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9u
LWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9u
IGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5
IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6
IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVB
Il9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6
UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAg
IEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZv
cm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3Ms
CisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAg
ICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9z
LAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6
Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUr
MDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAg
ICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAg
InUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisg
ICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJp
bmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9p
ZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUg
T1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1l
KHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBw
bGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdp
bi5jcHAKaW5kZXggYmI1MTJhZWMzNDUwLi43NjQ0M2E5NDI1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKQEAgLTI2OCw3
ICsyNjgsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KFdlYkNv
cmU6OktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXBy
ZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1
dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtl
eUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5v
dWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4
MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0
aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2ln
bmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBv
bmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRB
UEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4
ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxz
ZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0
Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1
dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVy
eVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRv
ciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50
LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0
LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRv
Y3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5z
dHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJF
ZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNs
aWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdM
CiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rp
b25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50
OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1h
ckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1t
CmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAg
LSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZToo
TlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+
c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0
ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4
IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxl
SFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJh
bWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJh
d2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0
b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dy
YXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNl
dHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAK
ICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZh
bHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRy
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVk
NjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNj
ZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFjY2Vz
c2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAgQVNT
RVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAgICAg
KytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAK
IEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3Np
YmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2ViOTEy
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3Bl
cnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6
OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFy
eVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4g
Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgw
YzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3du
bG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25sb2Fk
RGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxv
YWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAg
ICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVm
YXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZiYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUu
Y3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlvblR5
cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9s
aWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVn
YXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2MDU2
NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEz
ICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlT
dHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1l
bW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJh
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAK
aW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9u
UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnKiBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4m
JiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0
aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAsMTMg
QEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBtX3Jl
ZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBw
bGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNh
Y2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4MSw3
IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7Ci0g
ICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25D
YWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0
b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQ
YXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3Rv
cmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1Nzk5
NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFy
Y2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNo
aXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNC4u
MTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNr
Rm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3
YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNr
Rm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QKICAg
ICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwg
dGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNr
Rm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2Fy
ZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9y
d2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFja0Zv
cndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlz
dCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0ZvcndhcmRM
aXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApp
bmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBXZWJD
YWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyAr
NDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2Vi
Q29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNv
cmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdl
YkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJF
U1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3Vu
dHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9y
IChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQg
IT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5
LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3Vy
cmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcy
PiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0
eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMp
OwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3Jp
cHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0
b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBp
bnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5
cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlw
ZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlw
ZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwog
CiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5
QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29w
eVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxU
IFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVBy
b3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5
U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywg
dW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAg
ICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsK
LSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRl
cykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVz
KSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAg
IGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMu
YWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25n
PihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNj
cmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9y
eVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1C
eXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlz
dGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0
dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9j
U3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxv
Y0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1h
bGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3Jp
cHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVl
U2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUi
X3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3Rh
Y2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAK
ICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3Ry
aW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4
dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkKICAg
ICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVtZW50
KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1lbnQt
PlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9tSW5w
dXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2ViVmll
dy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5k
IHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAgICAv
LyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFjdHVh
bGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4KICAg
ICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVjYXVz
ZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFuZC4K
ICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlucHV0
RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSksICZy
ZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA5
ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNv
dXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VDb3Vu
dCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJE
YXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIl9z
KTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYsNyBA
QCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5kZXRh
Y2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJE
YXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExvYWRl
ciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJh
c2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdl
ci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMg
QEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNl
KCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2Vy
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwog
fQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1h
bmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdl
ciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4uMjU2
YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVu
dExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2Fk
ZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExv
YWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAgLCBt
X2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRMb2Fk
ZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdl
YkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9j
dW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNTRVJU
KCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFzZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1
Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
b3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxvYWQ6
OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRv
d25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3ICs2
MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwgIldl
YkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2FuY2Vs
KCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCJf
cyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEwYTY2
ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpj
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRp
bwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9u
IGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2Vi
VVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwg
VVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRv
bWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2Vi
RXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdp
dGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMg
QEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3Vy
Y2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2Uo
X0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4
YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxl
bWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1
bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVs
ZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVs
ZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVu
dFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApp
bmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJy
b3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7
CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0
ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJ
bmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4u
MDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMs
NyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1l
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZy
YW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUo
KQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1l
OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9h
ZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBt
aW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xl
bihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5n
ID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsK
IAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdM
ZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdl
YkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4g
RV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNl
bGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAg
ICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3Bw
CkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUo
ZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6
fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAog
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3
Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBA
QCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdl
b2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwx
MyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdl
b2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9u
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9u
Il9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4
IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRN
TFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJl
cHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZy
YW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2Yx
ZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJh
Zz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0
b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
SGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJl
ZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6
V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5
KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcg
QEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBo
aXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0u
Z2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJI
aXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpA
QCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBo
aXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJ
dGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7
CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5
Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYklu
c3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNw
cApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcq
IGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJU
X0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rv
cjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQq
IFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1
ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNj
cmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNj
cmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2Ny
aXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFT
Y3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNj
cmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXgg
Y2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNz
RmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNv
cmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NG
YWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwx
MyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3Ai
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0K
IAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29w
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7
CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGlj
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRl
eCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVW
aWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9
CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9
CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApp
bmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJN
dXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAg
ICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFi
bGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAt
OTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmln
YXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcy
LDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdh
dGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5h
dmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJ
V2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBT
dHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3du
KiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYo
KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJO
b3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlv
biJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3
ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1f
dXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2Vi
Tm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biog
YW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDky
NTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3Rp
ZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlx
dWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQog
CiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmlj
YXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNh
dGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEz
IEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJl
bmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVm
ZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMq
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJS
ZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwg
Y29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJl
c291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6
OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0
MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBA
IC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0
T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3Mp
OwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3Qi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9
CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBp
bmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29y
bGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwog
CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlw
dFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7
CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBA
QCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1v
dmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlw
dFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMg
KzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJp
dHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2lu
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNl
Y3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXgg
OGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNW
YWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
ZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2Vy
aWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2Vy
aWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2
YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0
UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRl
cmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVu
ZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0
UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJl
ciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5f
IFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNw
cApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3Nl
bmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0
ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2Mu
LjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMg
KzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50
KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBA
IC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25z
dCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRp
YWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENy
ZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRp
YWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90
ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlv
blNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywx
MyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2Uo
Y29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNw
YWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0
aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7
CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAK
aW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJp
bmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUp
CiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25z
ZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVS
TFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3Rh
bmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNl
IC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3Rh
bmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8v
IiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmlu
ZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUs
MTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5z
dGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQu
LmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3
ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldl
YlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdl
YlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3
Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwx
MSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkg
ewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAg
IGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJV
bmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdl
YlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQog
ICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVu
dC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVy
cHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBp
ZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAg
ICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUg
dG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQg
dmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29w
dF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1
dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciov
KQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5k
KCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1
cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJh
bWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwp
LCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0Nzcz
LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUo
KTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAt
OTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3Jl
YXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vy
c1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRl
Il9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtl
cnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJp
dmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJl
bmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNjZDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTA0LDcgKzExMDQsNyBAQCBzdGF0aWMg
dm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9u
dEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9u
dEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoT3JVcmwpOworICAgIFN0cmlu
ZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKFN0cmluZzo6ZnJv
bVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAg
ICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2sud2lkZUNoYXJh
Y3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMg
U3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogCiAgICAgU3Ry
aW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxh
eW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91
dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAgICAgLy8gRmluZCB0aGUgbGF5b3V0IHRlc3Qg
cm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAgIHNpemVfdCBsb2NhdGlvbiA9IHBhdGhUb0No
ZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFz
ay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNr
LmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNp
YykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1
Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1
Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBj
b3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAj
aWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
c2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywg
QmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4g
TVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0
ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXpl
KCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBB
U1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRleCBmZmJhMDBiODAyMWEu
LmU4MDcwNzRmNGNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVTVChIVFRQUGFyc2Vycywg
UGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lmIFVTRShHTElCKQogVEVT
VChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0IikpOwotICAgIEVY
UEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0
LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxh
OyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29t
bWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsKLSAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhh
bnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycyki
KSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5n
bGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsKKyAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIl9zKSk7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBX
ZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2Ug
R2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsKKyAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVu
dCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7CisgICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9gfH4gKG5vbi1hbHBo
YW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVy
cykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEg
KHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFjZSkiKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGlu
ZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXdsaW5lKVxu
IikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQi
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
IHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIikpOwotICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEwLjAg
KGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBw
cm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOworICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgd2hpdGVzcGFj
ZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
XG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iX3MpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvIChu
byB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQiX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkg
dW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVyKSJfcykpOwor
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEw
LjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSJfcykp
OworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIi8xMjMgKG1p
c3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0K
aW5kZXggODA4YjMwYzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAg
LTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJl
cXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0
PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0
KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVT
T1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVk
IH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3
NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNl
VHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxs
cHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0
ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNw
b25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVy
KCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3
IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10s
IHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVz
cG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9z
Y3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3Rl
ZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIi
OwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdm
ZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBt
YWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIv
ZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8
L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxl
V2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZl
dGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
QWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFs
ZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJf
cywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAg
ICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2Vy
dmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJW
aWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRl
c3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQ
b3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcg
QmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwg
e3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0
aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7
CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0g
ICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cu
anMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpz
IH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAg
ICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBz
ZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMg
dm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAg
IHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAg
ICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9Cisg
ICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAg
ICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01
NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVz
dE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0
ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlw
dD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxv
ZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0
VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBh
c3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2
ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcg
QEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVT
ZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBw
IGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBz
dGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0
aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAg
ICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFp
bi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3
LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExv
YWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRp
b24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3Jp
ZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVY
UEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsx
XSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiBy
ZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylU
RVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1
cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFp
bkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitz
dGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+
PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9
J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8x
MjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJh
bWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBh
dXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4K
LSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVu
dGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAg
IHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwg
eyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwK
ICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxw
dHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcElu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBw
bGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6
c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNv
bS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRp
YWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRp
YWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAg
IFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJp
dmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBO
b25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3
IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFy
KiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5
dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1
MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJyku
dGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dS
RVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUg
Kzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhl
bihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRh
KTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAt
ODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5B
bGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9
LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9u
L2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1s
Il9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRl
bnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9
IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRh
UmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQg
dG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdl
IGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1i
b3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
X3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0
KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
ICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3Nl
clByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAor
ICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dL
V2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
QEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAg
ICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlv
biBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2Vz
cyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhv
c3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjVi
Y2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDgg
KzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nl
c3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAg
ICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQv
aHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0g
fSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0s
CisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2Ft
ZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAg
ICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVy
MSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIv
c291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0
aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNy
b3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwK
KyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3Ms
ICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1l
LW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAg
ICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJl
ZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBA
IC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0
ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRl
c3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0
YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+
IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUg
PSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVm
YXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0
aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWlu
UHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0
cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBz
ZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmll
dyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZp
Z2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAg
LTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENv
bnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3
aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVd
ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4o
eyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3
LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8
V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNv
bnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6
bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3Ry
aW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwog
CkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRp
b25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51
YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1
bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUx
NDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3
aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdl
bnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShb
dXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0g
YS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRl
c3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVp
bnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0
cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFt
cGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07
CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAg
ICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JU
ZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484824"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456509</attachid>
            <date>2022-04-03 12:27:37 -0700</date>
            <delta_ts>2022-04-03 13:30:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>299643</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0
ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9j
b2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3IsIGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykK
ICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9
IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJp
bmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3IgPSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
Q29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBjb2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdl
YkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0Nv
Y29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMxZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29h
Lm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBTdHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNT
QlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVE
ZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNF
cXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6
Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAi
aHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOwor
ICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9
c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9k
aWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBz
dGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJl
c3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9ydEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vs
c2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJU
ZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBs
YWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29t
L3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4g
Imh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOwor
ICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vy
cm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpm
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFn
ZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9h
cHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2
aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2ts
b29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
Ojp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90
IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9y
VUlQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dl
Ykluc3BlY3RvclVJUHJveHlXaW4uY3BwCmluZGV4IGY0MDBkNWU3MzcxOS4uMWExOTE1NTVmOWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYklu
c3BlY3RvclVJUHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBX
ZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQ
YWdlKCkKIHsKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIGF1dG8gcHJlZmVy
ZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2Vi
S2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShT
dHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogI2lmIEVOQUJMRShERVZFTE9Q
RVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNw
ZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJl
ZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVu
Y2hlci5jcHAKaW5kZXggOWQzZjk4YTM0OTQwLi5lMmY5NzEzMjU1MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBM
YXVuY2hlci5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCBlbnVtIGNsYXNzIEJpbmRGbGFncyB7CiAK
IHN0YXRpYyB2b2lkIGJpbmRTeW1saW5rc1JlYWxQYXRoKFZlY3RvcjxDU3RyaW5nPiYgYXJncywg
Y29uc3QgY2hhciogcGF0aCwgY29uc3QgY2hhciogYmluZE9wdGlvbiA9ICItLXJvLWJpbmQiKQog
ewotICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgocGF0aCk7
CisgICAgV1RGOjpTdHJpbmcgcmVhbFBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChTdHJpbmc6
OmZyb21VVEY4KHBhdGgpKTsKICAgICBpZiAocGF0aCAhPSByZWFsUGF0aCkgewogICAgICAgICBD
U3RyaW5nIHJwYXRoID0gcmVhbFBhdGgudXRmOCgpOwogICAgICAgICBhcmdzLmFwcGVuZFZlY3Rv
cihWZWN0b3I8Q1N0cmluZz4oeyBiaW5kT3B0aW9uLCBycGF0aC5kYXRhKCksIHJwYXRoLmRhdGEo
KSB9KSk7CkBAIC03NDYsNyArNzQ2LDcgQEAgR1JlZlB0cjxHU3VicHJvY2Vzcz4gYnViYmxld3Jh
cFNwYXduKEdTdWJwcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBjb25zdCBQcm9jZXMKIAogICAg
ICAgICBhZGRFeHRyYVBhdGhzKGxhdW5jaE9wdGlvbnMuZXh0cmFTYW5kYm94UGF0aHMsIHNhbmRi
b3hBcmdzKTsKIAotICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSIsICJtZWRpYUtleXNEaXJlY3RvcnkiLCAid2F5bGFuZFNvY2tl
dCIsICJ3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSIgfTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZXh0cmFQYXRocyA9IHsgImFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkiX3MsICJtZWRpYUtleXNE
aXJlY3RvcnkiX3MsICJ3YXlsYW5kU29ja2V0Il9zLCAid2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnki
X3MgfTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogZXh0cmFQYXRocykgewogICAg
ICAgICAgICAgU3RyaW5nIGV4dHJhUGF0aCA9IGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuZ2V0KHBhdGgpOwogICAgICAgICAgICAgaWYgKCFleHRyYVBhdGguaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDVjYWU4MTlm
ZDI0NC4uZmQ3MTRhMzA1OTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAg
IHNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykK
LSAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmli
dXRpb25kLnNlcnZpY2UiKTsKKyAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBw
bGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiX3MpOwogI2VuZGlmCiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmluZGV4IGU4
YjlhMDQ3ZThmYi4uZTNlMGM0NGQ1ZmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z3RrL0NsaXBib2FyZEd0azMuY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6
OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogICAgIGlmIChz
ZWxlY3Rpb25EYXRhLmNhblNtYXJ0UmVwbGFjZSgpKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3Rf
YWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlv
bi92bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKSwgMCwgQ2xpcGJvYXJkVGFyZ2V0VHlwZTo6U21h
cnRQYXN0ZSk7CiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKQotICAgICAg
ICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNf
c3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAwLCBDbGlw
Ym9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxp
c3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9h
cmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgQ2xpcGJvYXJkVGFyZ2V0
VHlwZTo6Q3VzdG9tKTsKIAogICAgIGludCBudW1iZXJPZlRhcmdldHM7CiAgICAgR3RrVGFyZ2V0
RW50cnkqIHRhYmxlID0gZ3RrX3RhcmdldF90YWJsZV9uZXdfZnJvbV9saXN0KGxpc3QuZ2V0KCks
ICZudW1iZXJPZlRhcmdldHMpOwpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3
cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICAgICAgICAg
IGNhc2UgQ2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tOgogICAgICAgICAgICAgICAgIGlmIChk
YXRhLnNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAg
IGF1dG8qIGJ1ZmZlciA9IGRhdGEuc2VsZWN0aW9uRGF0YS5jdXN0b21EYXRhKCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9p
bnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpKSwgOCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihidWZmZXItPmRhdGEoKSks
IGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRh
X3NldChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBh
c3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgOCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBndWNoYXIqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXgg
MDdhYmI3MTMxOTg4Li40ZmQ5NjE2YzVmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKQEAgLTE4Niw3ICsxODYsNyBAQCB2b2lkIENsaXBib2Fy
ZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpIHsKICAgICAgICAgR1JlZlB0cjxHQnl0
ZXM+IGJ5dGVzID0gc2VsZWN0aW9uRGF0YS5jdXN0b21EYXRhKCktPmNyZWF0ZUdCeXRlcygpOwot
ICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0
ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSwgYnl0ZXMuZ2V0KCkp
KTsKKyAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9y
X2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpLCBieXRlcy5nZXQoKSkpOwogICAgIH0KIAogICAgIGlmIChwcm92aWRlcnMuaXNFbXB0eSgp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcAppbmRleCBhODZiMzRkZGFhOGYuLmUzMTg4OWYzNDRjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCkBAIC00OSw3ICs0OSw3
IEBAIHN0YXRpYyBTdHJpbmcgYmFja2VuZENvbW1hbmRzUGF0aCgpCiAgICAgaWYgKCFDRlVSTEdl
dEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih1cmxSZWYuZ2V0KCksIGZhbHNlLCByZWludGVycHJl
dF9jYXN0PFVJbnQ4Kj4ocGF0aCksIE1BWF9QQVRIKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAot
ICAgIHJldHVybiBwYXRoOworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHBhdGgpOwogfQog
CiBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKFN0cmluZ1ZpZXcg
YWRkcmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAppbmRleCBlNWE4
YzNiNjllMTcuLjlkN2U3MWMyMjg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcApAQCAtMjQwLDcgKzI0MCw3IEBAIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBj
b25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhCiAgICAg
ICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh3aW5kb3dTaXplKTsKIAogI2lmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQotICAgIG1fcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZv
clNjaGVtZShSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmNyZWF0ZSgqbV9wYWdlKSwg
Imluc3BlY3RvciIpOworICAgIG1fcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmNyZWF0ZSgqbV9wYWdlKSwgImluc3BlY3Rv
ciJfcyk7CiAjZW5kaWYKIAogICAgIC8vIEZJWE1FOiBJbml0aWFsaXppbmcgdGhlIHRvb2x0aXAg
d2luZG93IGhlcmUgbWF0Y2hlcyBXZWJLaXQgd2luLCBidXQgc2VlbXMgbGlrZSBzb21ldGhpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDZi
MzIyYTA5NjBmLi5hMmUxYzEzMTUwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUyLDcgKzM4NTIsNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBh
cmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVBy
b3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBFeGNlcHRpb25E
ZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQgaW4gYSBmcmFtZSB0aGF0IGlz
IG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBFeGNlcHRpb25EZXRhaWxzOjpU
eXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9w
YWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9t
YWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNj
cmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiJfcyk7CiAgICAgICAgIFdF
QlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkphdmFTY3JpcHQ6IElnbm9yaW5n
IHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0Li4zNGZmMmQ0MDU4NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6OmdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIGNvbW1hbgogICAgIAog
ICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAgInoiLCAiS2V5WiJfcywKLSAg
ICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxs
VGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQ
bGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisgICAgICAgICJ6Il9zLCAiS2V5
WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5IiwgInkiLAotICAgICAgICAi
eSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5Il9zLCAieSJfcywKKyAg
ICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5Il9zLCA4OSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlQm9sZGZhY2U6Ci0g
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9zLAotICAgICAgICBAIlUrMDA0
MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7
CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6
OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3MsICJLZXlCIl9zLAorICAgICAg
ICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJpIiwKLSAgICAgICAgImkiLCAi
S2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJfcywgImkiX3MsCisgICAgICAg
ICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywgNzMsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZVVuZGVybGluZToKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0gICAgICAgIEAiVSswMDU1Iiwg
ODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktleVUiX3MsCisgICAgICAgICJV
KzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAt
NDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0
IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIGlmIChkb2N1bWVu
dC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21haWwoKSAmJiBvc05hbWVGb3JV
c2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsKKyAgICAgICAgcmV0dXJuIHN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiX3MpOwogCiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGJiNTEyYWVjMzQ1MC4uNzY0NDNhOTQy
NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2Vi
UGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dl
YlBhZ2VXaW4uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAo
ZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgp
ICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlF
dmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBX
ZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lk
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5k
ZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBAQCBjb25zdCBTdHJp
bmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogICAg
IGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYgUExBVEZPUk0oTUFD
KSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhpcyBpc24ndCBncmVh
dCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGluIG9wZW4gc291cmNl
IGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50aWZpZXIgcmV0dXJu
cyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiOworICAg
ICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5U
ZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2Vu
KQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gU3RyaW5nKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1YTcuLmEyNjJiZmMx
NDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC03MTYsNyArNzE2LDcgQEAg
LSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGxp
bmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQgPSBNZWRpYVF1ZXJ5U2V0Ojpj
cmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRvY3VtZW50KSk7Ci0gICAgcmV0
dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9jdW1lbnQsIGRvY3VtZW50LnJl
bmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0u
ZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFs
dWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRv
Y3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1
ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAppbmRleCA0MjAxMDdkYTY1
YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBp
bmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdW
aWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikK
IHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGlu
ZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywg
VmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24s
IGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQuLmJjMmEzMmVhMzM5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5t
bQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lkKV9zZXRPdmVy
cmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAgICB0b1ByaXZh
dGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29kaW5nIFVURjhT
dHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYxNGZhMzk5NGY0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMTg3Niw3ICsxODc2
LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTlNTdHJpbmcgKilz
dHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBkaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRG
b250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0gICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSIpOwor
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJB
cHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdz
KCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vz
c2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMyOTBkYWUzNzk0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBA
IEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmos
IEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwogICAgIG1fb2JqZWN0LT5z
ZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNj
ZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vzc2libGVCYXNlKCkK
IHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNj
ZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVC
YXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVCYXNlOjpjcmVhdGVJbnN0
YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IDlh
MWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIENG
RGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVBy
b3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjp+Q0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDT01QdHI8Q0ZE
aWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJmNjM3YWJjMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKQEAg
LTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIERlZmF1bHREb3dubG9h
ZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7
CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERvd25sb2FkRGVsZWdhdGUo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhhc2hTZXQ8SVdlYkRvd25sb2FkKj46
Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwogICAgIGZvciAoO2kgIT0gbV9kb3du
bG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKaW5kZXggZThlNWY1
YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
RGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHR5cGVkZWYgZW51
bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6RGVmYXVs
dFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVs
ZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9
CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpzaGFyZWRJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJl
YW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAz
NjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJl
YW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZNb3Zl
KGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3Ry
ZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFtIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBD
T01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQxNS4uZTk3YzQxMzI0NzE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3Bw
CkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3Bl
cnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHQKICAgICAsIG1fZnJh
bWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5
QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNl
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRyPEhUTUxGb3JtRWxlbWVudD4m
JiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhmMjcxNjJiYmFmMS4uZjMxMDJlNTI2
ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hl
LmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OldlYkFwcGxpY2F0
aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBw
bGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsK
IH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlSW5z
dGFuY2UoKQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVQ
YXRoKCkKIAogV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIFdlYkFwcGxpY2F0aW9u
Q2FjaGU6OnN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYg
c3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNo
ZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNy
ZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSJfcykubGVha1Jl
ZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFy
Y2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2Ny4uMTdkZWJjNDg3ZTU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIFdlYkFyY2hpdmU6
OldlYkFyY2hpdmUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+JiYgY29yZUFyY2hpdmUpCiAjZW5k
aWYKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXJjaGl2ZSJfcyk7CiB9
CiAKIFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViQXJjaGl2ZTo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAppbmRleCA5MDRhYzJkMjgxMDQuLjExNmFhNDIwMTc2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFdlYkJh
Y2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+
JiYgYmFja0ZvcndhcmRMaXN0CiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5zZXQobV9i
YWNrRm9yd2FyZExpc3QuZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0Zvcndh
cmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKQEAgLTY1LDcgKzY1LDcgQEAgV2ViQmFja0Zv
cndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKICAgICBiYWNrRm9yd2FyZExpc3RXcmFw
cGVycygpLnJlbW92ZShtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSk7CiAKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwog
fQogCiBXZWJCYWNrRm9yd2FyZExpc3QqIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDYWNoZS5jcHAKaW5kZXggZGU4NTBlNzEzYjAzLi44YjE2YjQzZDQxZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNhY2hlOjpXZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlOjp+V2ViQ2Fj
aGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiX3Mp
OwogfQogCiBXZWJDYWNoZSogV2ViQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCAzNTY5ODNjNTJiMzcu
LmYxMzE2ZGU0NmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0
aXN0aWNzLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViQ29yZVN0YXRpc3RpY3M6OldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
Q29yZVN0YXRpc3RpY3M6On5XZWJDb3JlU3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAK
IFdlYkNvcmVTdGF0aXN0aWNzKiBXZWJDb3JlU3RhdGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpA
QCAtMTQ5LDcgKzE0OSw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQ
cm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8KICAgICBJdGVyYXRvciBl
bmQgPSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4g
dHlwZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5h
bWVzLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICB0eXBlQ291
bnRNYXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAgICB0eXBlQ291
bnRNYXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAg
ICBDT01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8
aW50Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVm
VG8odHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBIUkVTVUxUIFdlYkNv
cmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyhfQ09NX091dHB0cl9vcHRf
IElQcm9wZXJ0eQogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsK
ICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRv
ciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyAr
K2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50
LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5
IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRz
KEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRN
YXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMjk2
LDEzICsyOTYsMTMgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6bWVtb3J5U3RhdGlzdGlj
cyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHN0YXQKICAgICBHbG9iYWxNZW1vcnlT
dGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOwog
CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiBmaWVsZHM7Ci0gICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1C
eXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3Rp
Y3MucmVzZXJ2ZWRWTUJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRl
ZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0
aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJl
ZUxpc3RCeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0
YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFw
U2l6ZSIsIGhlYXBTaXplKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiLCBo
ZWFwRnJlZSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNrU2l6ZSIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOwot
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcykpOworICAgIGZpZWxkcy5hZGQo
IkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRz
LmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOworICAg
IGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKKyAg
ICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiX3MsIGhlYXBTaXplKTsKKyAgICBmaWVs
ZHMuYWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiX3MsIGhlYXBGcmVlKTsKKyAgICBmaWVsZHMuYWRk
KCJKYXZhU2NyaXB0U3RhY2tTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+
KGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2Ny
aXB0SklUU2l6ZSJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1v
cnlTdGF0cy5KSVRCeXRlcykpOwogCiAgICAgKnN0YXRpc3RpY3MgPSBDT01Qcm9wZXJ0eUJhZzx1
bnNpZ25lZCBsb25nIGxvbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjo6YWRv
cHQoZmllbGRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhLi5iOWY0
MTA5MzU5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIGJvb2wg
V2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQoRWxlbWVudCogZSwg
S2V5Ym9hcmRFdmVudCoga2UpCiAgICAgICAgIGlmIChkb21FbGVtZW50KSB7CiAgICAgICAgICAg
ICBJRE9NSFRNTElucHV0RWxlbWVudCogZG9tSW5wdXRFbGVtZW50OwogICAgICAgICAgICAgaWYg
KFNVQ0NFRURFRChkb21FbGVtZW50LT5RdWVyeUludGVyZmFjZShJSURfSURPTUhUTUxJbnB1dEVs
ZW1lbnQsICh2b2lkKiopJmRvbUlucHV0RWxlbWVudCkpKSB7Ci0gICAgICAgICAgICAgICAgU3Ry
aW5nIGNvbW1hbmQgPSBtX3dlYlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKTsKKyAgICAgICAg
ICAgICAgICBTdHJpbmcgY29tbWFuZCB7IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2Up
IH07CiAgICAgICAgICAgICAgICAgLy8gV2UgYWxsb3cgZW1wdHkgY29tbWFuZHMgaGVyZSBiZWNh
dXNlIHRoZSBhcHAgY29kZSBhY3R1YWxseSBkZXBlbmRzIG9uIHRoaXMgYmVpbmcgY2FsbGVkIGZv
ciBhbGwga2V5IHByZXNzZXMuCiAgICAgICAgICAgICAgICAgLy8gV2UgbWF5IHdhbnQgdG8gcmV2
aXNpdCB0aGlzIGxhdGVyIGJlY2F1c2UgaXQgZG9lc24ndCByZWFsbHkgbWFrZSBzZW5zZSB0byBz
ZW5kIGFuIGVtcHR5IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAgZm9ybURlbGVnYXRlLT5kb1Bs
YXRmb3JtQ29tbWFuZChkb21JbnB1dEVsZW1lbnQsIEJTdHJpbmcoY29tbWFuZCksIGtpdChlLT5k
b2N1bWVudCgpLmZyYW1lKCkpLCAmcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5mNzhjMWJkMmE4NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdl
YkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsK
ICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2U6On5XZWJEYXRhU291
cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQog
ICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwogICAgIFdlYkRhdGFTb3VyY2VD
b3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRh
U291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0YVNvdXJjZTo6Y3JlYXRlSW5z
dGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3MjAzMTVjMy4uOGYzNzY1NDEy
NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5j
cHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFuYWdlciogV2ViRGF0YWJhc2VN
YW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1hbmFnZXI6OldlYkRhdGFiYXNl
TWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJh
c2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApp
bmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUsNyArMzUsNyBAQCBXZWJEb2N1bWVu
dExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFTb3VyY2UoMCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsKIH0K
IAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIGRhdGEpCkBA
IC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6
OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCiBXZWJEb2N1bWVudExvYWRl
cjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsKICAgICBpZiAobV9kYXRhU291
cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERhdGFTb3VyY2UpOwogICAgICAgICBt
X2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkOjp+V2Vi
RG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkK
ICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQgKCVw
KSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6
OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAKaW5kZXggMTgxMGE2Njg1ODE4Li5mYzY0YjliYzk5OTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAg
SFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29w
dF8gSVdlYlVSTEF1dGhlbnRpY2F0aW8KICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVl
ZCBhIFVSTCBvciBkZXNjcmlwdGlvbiBmb3IgdGhpcyBlcnJvciBjb2RlPwotICAgIFJlc291cmNl
RXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgV2ViVVJMRXJyb3JVc2VyQ2Fu
Y2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCAiIik7CisgICAgUmVzb3VyY2VFcnJvciBlcnJv
cihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRo
ZW50aWNhdGlvbiwgVVJMKCksIGVtcHR5U3RyaW5nKCkpOwogICAgIENPTVB0cjxXZWJFcnJvcj4g
d2ViRXJyb3IoQWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAg
IG1fZGVsZWdhdGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCmluZGV4IDZiYWJmOTBiODlm
YS4uNWIxYzVkZmM3ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
cm9wU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNl
LmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIFdlYkRyb3BTb3VyY2U6OldlYkRyb3BTb3VyY2UoV2Vi
Vmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEcm9wU291cmNlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEcm9wU291cmNlIl9zKTsKIH0KIAogV2ViRHJvcFNv
dXJjZTo6fldlYkRyb3BTb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIl9zKTsKIH0KIAogU1RETUVUSE9ESU1QIFdlYkRyb3BT
b3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lk
KiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxl
bWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQ
cm9wZXJ0eUJhZy5jcHAKaW5kZXggOGFmYmEwZjZkNTNhLi5jNjFmMTcyZDQ3ZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAt
NDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5
QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICA6IG1fcmVzdWx0KG1ha2VVbmlx
dWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVt
ZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyogV2ViRWxlbWVudFByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTlkZTM3MWJlYTFjLi43MTYxMjE5MjMzZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJF
cnJvcjo6V2ViRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyog
dXNlckluZm8pCiAgICAgLCBtX2Vycm9yKGVycm9yKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvcjo6fldlYkVycm9yKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3Ii
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIl9zKTsKIH0KIAogV2Vi
RXJyb3IqIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAppbmRleCA1OTQ4YjBlYzViODAuLjA3YmQ0NmZjOTk4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIFdlYkZyYW1lOjpXZWJGcmFtZSgpCiB7
CiAgICAgV2ViRnJhbWVDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZTo6fldlYkZyYW1lKCkKQEAgLTI1MSw3ICsyNTEsNyBA
QCBXZWJGcmFtZTo6fldlYkZyYW1lKCkKICAgICBkZWxldGUgZDsKICAgICBXZWJGcmFtZUNvdW50
LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSJfcyk7CiB9
CiAKIFdlYkZyYW1lKiBXZWJGcmFtZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtNTYzLDcgKzU2Myw3
IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3JlOjpGcmFnbWVudGVkU2hhcmVk
QnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5CiB7CiAgICAgU3RyaW5nIG1pbWVUeXBlU3RyaW5n
KG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAgICBpZiAoIW1pbWVUeXBlKQot
ICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwiOworICAgICAgICBtaW1lVHlwZVN0
cmluZyA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAgICBTdHJpbmcgZW5jb2RpbmdTdHJpbmcodGV4dEVu
Y29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRleHRFbmNvZGluZ05hbWUpKTsKIApAQCAtMTA1Niw3
ICsxMDU2LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWNvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAotICAgIGlmICghY29yZUZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCkpCisgICAgaWYgKCFjb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IGFmZWQyYjRlNmE0
Mi4uOTQ0NjhiYjczZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZVBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJG
cmFtZVBvbGljeUxpc3RlbmVyLmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQog
ICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdl
YkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3Li42ODkyZjc3MWFkZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIu
Y3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6V2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihSZWZQdHI8R2VvbG9jYXRpb24+JiYKICAgICAsIG1f
Z2VvbG9jYXRpb24oV1RGTW92ZShnZW9sb2NhdGlvbikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVu
ZXIiX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjp+V2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwog
fQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDkyNGM0OGIxM2M0MS4uZmYxZmQ5
MGM0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlv
blBvc2l0aW9uLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIENPTVB0cjxXZWJHZW9sb2NhdGlvblBv
c2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlv
biIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJf
cyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9u
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViR2VvbG9jYXRpb25Q
b3NpdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZv
aWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
VE1MUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJl
cHJlc2VudGF0aW9uLmNwcAppbmRleCA0NmFhYWU5N2Q3YmIuLjg2YTNjYjZkYWEyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCkBA
IC00Miw3ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0
aW9uKCkKIHsKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3VudCsrOwogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24i
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7
CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCkBA
IC01NCw3ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRh
dGlvbigpCiAKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3VudC0tOwogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRp
b24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlv
biJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbiogV2ViSFRNTFJlcHJlc2VudGF0aW9u
OjpjcmVhdGVJbnN0YW5jZShXZWJGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykhpc3RvcnkuY3BwCmluZGV4IDNmMWViNmQ3MzhiZC4uNTBhOGU1ZjZiY2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtODksNyArODksNyBAQCBzdGF0aWMgaW5s
aW5lIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUhpc3RvcnlJdGVtKEJT
VFIgbm90aWZpY2F0aQogV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnkiX3MpOwogCiAgICAgbV9wcmVmZXJlbmNlcyA9
IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCk7CiB9CkBAIC05Nyw3
ICs5Nyw3IEBAIFdlYkhpc3Rvcnk6OldlYkhpc3RvcnkoKQogV2ViSGlzdG9yeTo6fldlYkhpc3Rv
cnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5
Il9zKTsKIH0KIAogV2ViSGlzdG9yeSogV2ViSGlzdG9yeTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGZiODhlMzllN2I1
Ni4uOGRkOWJkYWFhMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdlYkhpc3RvcnlJdGVtOjpXZWJIaXN0b3J5SXRlbShS
ZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0ZW0pCiAgICAgaGlzdG9yeUl0ZW1XcmFwcGVy
cygpLnNldChtX2hpc3RvcnlJdGVtLmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0ZW0iX3MpOwogfQogCiBXZWJIaXN0b3J5SXRl
bTo6fldlYkhpc3RvcnlJdGVtKCkKQEAgLTYyLDcgKzYyLDcgQEAgV2ViSGlzdG9yeUl0ZW06On5X
ZWJIaXN0b3J5SXRlbSgpCiAgICAgaGlzdG9yeUl0ZW1XcmFwcGVycygpLnJlbW92ZShtX2hpc3Rv
cnlJdGVtLmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViSGlzdG9yeUl0ZW0iX3MpOwogfQogCiBXZWJIaXN0b3J5SXRlbSogV2ViSGlzdG9yeUl0
ZW06OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3Iu
Y3BwCmluZGV4IGY2MjE5YTY2ZGFhOS4uNDQ3ZDkyYTNhM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBXZWJJbnNwZWN0b3I6
OldlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGll
bnQqIGluc3BlYwogICAgIEFTU0VSVF9BUkcoaW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdGVkV2Vi
Vmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3Ii
X3MpOwogfQogCiBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJJbnNwZWN0b3IiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6OmZyb250ZW5kQ2xpZW50KCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAK
aW5kZXggYzhlNGJlOGFjMjFiLi43NTg2NjI3MmQ1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCkBAIC00MiwxMyArNDIsMTMg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpXZWJK
YXZhU2NyaXB0Q29sbGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3Jp
cHRDb2xsZWN0b3I6On5XZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3IqIFdlYkphdmFTY3JpcHRDb2xsZWN0
b3I6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdENsYXNzRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRD
bGFzc0ZhY3RvcnkuY3BwCmluZGV4IGNlODYyMGZkNGJkNy4uNmVlMDcyNTMyZWU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKQEAgLTY5LDEz
ICs2OSwxMyBAQCBXZWJLaXRDbGFzc0ZhY3Rvcnk6OldlYktpdENsYXNzRmFjdG9yeShDTFNJRCB0
YXJnZXRDbGFzcykKICAgICBXZWJDb3JlOjpwb3B1bGF0ZUpJVE9wZXJhdGlvbnMoKTsKIAogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRDbGFzc0Zh
Y3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSJf
cyk7CiB9CiAKIFdlYktpdENsYXNzRmFjdG9yeTo6fldlYktpdENsYXNzRmFjdG9yeSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdENs
YXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NG
YWN0b3J5Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCmluZGV4IDkzN2E2NjY5ZTkwOC4uZTY5
YzBjODA4OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxv
b3AuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYktpdE1lc3NhZ2VMb29wOjpXZWJLaXRNZXNz
YWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJL
aXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wOjp+V2ViS2l0TWVzc2Fn
ZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJLaXRNZXNzYWdlTG9vcCogV2ViS2l0TWVz
c2FnZUxvb3A6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0U3RhdGlzdGljcy5jcHAKaW5kZXggMTI2M2JjMGMxMWY5Li5mNTE1MWNiZTBiYjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCkBAIC00NiwxMyAr
NDYsMTMgQEAgaW50IFdlYkZyYW1lVmlld0NvdW50OwogV2ViS2l0U3RhdGlzdGljczo6V2ViS2l0
U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJLaXRTdGF0aXN0aWNzOjp+V2ViS2l0U3RhdGlz
dGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJLaXRTdGF0aXN0aWNzKiBXZWJLaXRTdGF0aXN0
aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggNWM5MTI1NzcyNTI2Li4yNDQxMDY2ODg2NzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAK
QEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OldlYk11dGFibGVVUkxSZXF1
ZXN0KGJvb2wgaXNNdXRhYmxlKQogICAgIDogbV9pc011dGFibGUoaXNNdXRhYmxlKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJM
UmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVl
c3QiX3MpOwogfQogCiBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkzLDcgKzkzLDcgQEAgV2ViTXV0YWJsZVVSTFJlcXVlc3Qq
IFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbW11dGFibGVJbnN0YW5jZShjb25zdCBSZXNv
dXIKIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojp+V2ViTXV0YWJsZVVSTFJlcXVlc3QoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxl
VVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVS
TFJlcXVlc3QiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKaW5kZXggYmM0ZjI2ODRhZDE2Li42
YTkzM2FiYjVmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmln
YXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9u
RGF0YS5jcHAKQEAgLTcyLDEzICs3MiwxMyBAQCBXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdh
dGlvbkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZQogCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmln
YXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0
YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhOjp+V2ViTmF2aWdhdGlvbkRhdGEoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZp
Z2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlv
bkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0YSogV2ViTmF2aWdhdGlvbkRhdGE6OmNy
ZWF0ZUluc3RhbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2Vi
VVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNlKiByZXNwb25zZSwgYm9vbCBoYXNT
dWJzdGl0dXRlRGF0YSwgY29uc3QgU3RyaW5nJiBjbGllbnRSZWRpcmVjdFNvdXJjZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IGY1M2JiNzI2MzUz
Zi4uOTQ5MjU2ZWU4MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJO
b3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNh
dGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRp
b24oQlNUUiBuYW1lLCBJVW5rbm93biogYW5PYmplY3QsIElQcm9wZXJ0eUJhZyogdXMKICAgICAg
ICAgbV91c2VySW5mby0+QWRkUmVmKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb246On5XZWJO
b3RpZmljYXRpb24oKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJOb3RpZmljYXRpb246On5XZWJOb3Rp
ZmljYXRpb24oKQogICAgICAgICBtX3VzZXJJbmZvLT5SZWxlYXNlKCk7CiAKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQog
CiBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoQlNUUiBu
YW1lIC8qPTAqLywgSVVua25vd24qIGFuT2JqZWN0IC8qPTAqLywgSVByb3BlcnR5QmFnKiB1c2Vy
SW5mbyAvKj0wKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAppbmRleCA5MjUzMmRiZGNhNDEuLjZjZDg4NDJlN2EwNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCkBAIC01
NywxMyArNTcsMTMgQEAgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50
ZXIoKQogICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlvbkNlbnRlclByaXZhdGU+KCkp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5v
dGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZp
Y2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjp+V2ViTm90aWZp
Y2F0aW9uQ2VudGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRp
b25DZW50ZXIqIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4IDljZjhjYzAyYTIxYy4u
ZmIxNzNkZDVjMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMu
Y3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBXZWJQcmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6
OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKQogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVu
Y2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVu
Y2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVu
Y2VzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyJfcyk7
CiB9CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOC4u
M2JiYTMxZTM5ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNv
dXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBA
IC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3VyY2U6OldlYlJlc291cmNlKElTdHJlYW0qIGRhdGEs
IGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5nJgogICAgICwgbV9mcmFtZU5h
bWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVz
b3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2Vi
UmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKaW5kZXgg
YjhmZTMwN2NiODZiLi5kZjA3ODFmNDEyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0T2JqZWN0LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBXZWJTY3JpcHRPYmplY3Q6
OldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogV2ViU2NyaXB0T2JqZWN0Ojp+V2ViU2NyaXB0
T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKaW5kZXggMjY4MTAxYTZjMGYwLi43
ZWY4YTQ1MzQ2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlw
dFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5j
cHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIFdlYlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRXb3Js
ZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxkKQogICAgIGFsbFdvcmxkcygpLmFkZCht
X3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdv
cmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgp
CiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0KCkpOwogCiAgICAgLS1nQ2xhc3ND
b3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdl
YlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRXb3JsZCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIzZjZi
Li5lZWYxNjQzYjYxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBXZWJTZWN1cml0eU9yaWdpbjo6V2ViU2Vj
dXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQogICAgIDogbV9zZWN1
cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogV2ViU2VjdXJpdHlPcmln
aW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdpbiJfcyk7CiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFs
aXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgwYTJmY2EyOS4uN2YxMWRmNWZmZTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCkBAIC0z
MiwxMyArMzIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJTZXJpYWxpemVkSlNW
YWx1ZTo6V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBXZWJTZXJp
YWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkKIHsKICAgICAtLWdDbGFzc0Nv
dW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9z
KTsKIH0KIAogQ09NUHRyPFdlYlNlcmlhbGl6ZWRKU1ZhbHVlPiBXZWJTZXJpYWxpemVkSlNWYWx1
ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5k
ZXJlci5jcHAKaW5kZXggNjIwN2I1NmE3ZjY3Li4wNDUzNWYzZjcyMzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIFdl
YlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJUZXh0
UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0KIAogV2ViVGV4dFJlbmRlcmVyOjp+
V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBIUkVTVUxUIFdlYlRleHRSZW5kZXJl
cjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBw
cHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKaW5kZXggNTk3ODhjNGY1ZTI0Li40MGI3YjY2ZmE3
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIoc2VuZGVyKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6fldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Il9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0YW5jZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5j
cHAKaW5kZXggMzVhODQ1ZWQ2OTNjLi41MDk5YmEwYWYxN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoUmVmUHRyPAog
ewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp+V2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNsaWVudD4mJiBjbGllbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCmluZGV4IGU3
NTk0NmIyODQyNS4uYTUzMWQxMDY5OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVSTENyZWRlbnRpYWw6
OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICA6IG1f
Y3JlZGVudGlhbChjcmVkZW50aWFsKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbDo6fldl
YlVSTENyZWRlbnRpYWwoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbCogV2Vi
VVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKaW5kZXggMTllZDk2ZjgyMTBkLi4zMWIw
OWFjNGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3Rl
Y3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6
V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNw
CiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFByb3RlY3Rpb25TcGFj
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9z
KTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjp+V2ViVVJMUHJvdGVjdGlvblNwYWNlKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
VVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
UkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2UqIFdlYlVS
TFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE1YjIzZGJmYTU0OS4uNjEyMjk2Y2I1NTAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCkBAIC0yMTUsMjAg
KzIxNSwyMCBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsaXplZFNob3J0RGVzY3JpcHRpb25Gb3JTdGF0
dXNDb2RlKGludCBzdGF0dXNDb2RlKQogV2ViVVJMUmVzcG9uc2U6OldlYlVSTFJlc3BvbnNlKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
UmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIl9z
KTsKIH0KIAogV2ViVVJMUmVzcG9uc2U6On5XZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAK
IFdlYlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNwb25zZTo6Y3JlYXRlSW5zdGFuY2UoKQogewogICAg
IFdlYlVSTFJlc3BvbnNlKiBpbnN0YW5jZSA9IG5ldyBXZWJVUkxSZXNwb25zZSgpOwogICAgIC8v
IGZha2UgYW4gaHR0cCByZXNwb25zZSAtIHNvIGl0IGhhcyB0aGUgSVdlYkhUVFBVUkxSZXNwb25z
ZSBpbnRlcmZhY2UKLSAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2Uo
V1RGOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOworICAgIGlu
c3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCgiaHR0cDovLyJf
cyksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFuY2UtPkFkZFJlZigpOwogICAg
IHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDQ4MTIzODQ3MTNjOC4uZWRmMzM1ODZi
MWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50
VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OldlYlVzZXJDb250ZW50VVJMUGF0
dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICAtLWdDbGFzc0NvdW50Owot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4i
X3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAKaW5kZXggZGI2MmRjNjU1OTM0Li5lNTVhMjQyZGNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgV2ViVmlldzo6V2ViVmlldygpCiAKICAg
ICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyJf
cyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3KCkKQEAgLTQ2OSw3ICs0NjksNyBAQCBXZWJWaWV3
Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0
ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5OTUsMTEgQEAgYm9vbCBXZWJWaWV3OjpleGVjQ29t
bWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykKICAgICBGcmFtZSYgZnJhbWUg
PSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIHN3
aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2FzZSBTZWxlY3RBbGw6Ci0gICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgp
OworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJf
cykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVuZG86Ci0gICAgICAgICAgICByZXR1cm4gZnJh
bWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVy
biBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNh
c2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRv
IikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQo
IlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjE0
Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChL
ZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMo
KS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2
ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVu
dCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVu
dDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBp
bmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFuZHMgdGhhdCBqdXN0IGlu
c2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJlIHRyZWF0ZWQsCkBAIC00
NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHkoX0luX29wdF8gSVVua25vd24q
IC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5Il9zKS5leGVj
dXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3MzQsNyArNDczNCw3IEBAIEhSRVNV
TFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiKS5leGVj
dXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpwYXN0ZShfSW5fb3B0
XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
IEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQ
YXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzUyLDcgKzQ3
NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHlVUkwoX0luXyBCU1RSIHVybCkKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGlu
Z0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29weVVSTChNYXJzaGFsbGluZ0hl
bHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBAIEhSRVNVTFQgV2ViVmlldzo6ZGVsZXRlXyhfSW5f
b3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0
dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIikuZXhlY3V0ZSgpOworICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFu
ZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKaW5kZXggMDQ1MThm
YWQxYTc2Li4yZTkzMWUwOGU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJX
b3JrZXJzUHJpdmF0ZS5jcHAKQEAgLTkwLDExICs5MCwxMSBAQCBXZWJXb3JrZXJzUHJpdmF0ZSog
V2ViV29ya2Vyc1ByaXZhdGU6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYldvcmtlcnNQcml2YXRlOjpX
ZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CiAKIFdlYldvcmtlcnNQcml2YXRlOjp+V2Vi
V29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggY2Y3Yjc4OWIzNWVhLi5lMTk2NjhjY2Q3NDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTEw
NCw3ICsxMTA0LDcgQEAgc3RhdGljIHZvaWQgc2l6ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAK
IHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiB7
Ci0gICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgo
cGF0aE9yVXJsKTsKKyAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6
cGFyZW50UGF0aChTdHJpbmc6OmZyb21VVEY4KHBhdGhPclVybCkpOwogCiAgICAgd2NoYXJfdCBm
dWxsUGF0aFtfTUFYX1BBVEhdOwogICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRv
Rm9udEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBfTUFYX1BBVEgpKQpAQCAtMTEx
NSw3ICsxMTE1LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIq
IHBhdGhPclVybCkKIAogICAgIFN0cmluZyBwYXRoVG9DaGVjayA9IGZ1bGxQYXRoOwogCi0gICAg
c3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJMYXlvdXRUZXN0cyI7CisgICAgc3Rh
dGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJMYXlvdXRUZXN0cyJfczsKIAogICAgIC8v
IEZpbmQgdGhlIGxheW91dCB0ZXN0IHJvb3Qgb24gdGhlIGN1cnJlbnQgcGF0aDoKICAgICBzaXpl
X3QgbG9jYXRpb24gPSBwYXRoVG9DaGVjay5maW5kKGxheW91dFRlc3RzKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBi
Y2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RG
X0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZh
dWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRl
ZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNT
RVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNT
RVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEo
MnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykp
OworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNU
KFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1
c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9y
IHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikp
OwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
MS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEo
MXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYg
IUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJz
ZXJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5j
cHAKaW5kZXggZmZiYTAwYjgwMjFhLi5lODA3MDc0ZjRjYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcApAQCAtNTksMzIgKzU5LDMy
IEBAIFRFU1QoSFRUUFBhcnNlcnMsIFBhcnNlQ3Jvc3NPcmlnaW5SZXNvdXJjZVBvbGljeUhlYWRl
cikKICNpZiBVU0UoR0xJQikKIFRFU1QoSFRUUFBhcnNlcnMsIFZhbGlkYXRlVXNlckFnZW50VmFs
dWVzKQogewotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaS8xMC4wIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIikp
OwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEw
LjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbykiKSk7Ci0gICAgRVhQRUNUX1RSVUUo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21t
ZW50KSkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkgKCkgKDwtIEVtcHR5IGNvbW1lbnQpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChsZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFp
cikiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQl
JicqKy0uXl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7Ci0gICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIwMTIzNDU2Nzg5IChudW1l
cmljIHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xlIGNoYXJhY3RlciB0b2tlbikiKSk7CisgICAgRVhQRUNU
X1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4w
Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIl9zKSk7CisgICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJL
aXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkp
Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkgKCkgKDwtIEVtcHR5IGNvbW1lbnQpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWly
KSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMk
JSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIl9zKSk7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIwMTIzNDU2Nzg5IChu
dW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSJfcykpOwogCi0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiICIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgU2FmYXJpIChsZWFkaW5n
IHdoaXRlc3BhY2UpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgd2hpdGVzcGFjZSkgIikpOwotICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlxuU2FmYXJpIChsZWFkaW5nIG5ld2xpbmUp
IikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAodHJhaWxpbmcgbmV3bGluZSlcbiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSIp
KTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkg
KHVudGVybWluYXRlZCBjb21tZW50IikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5lZCBjb21tYW5lbnQpIikpOwotICAgIEVYUEVD
VF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRy
b2wgY2hhcmFjdGVyKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkvXG4xMC4wIChlbWJlZGVkIG5ld2xpbmUpIikpOwotICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBh
aXIgaW4gdG9rZW4pIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiICJfcykpOworICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFjZSki
X3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkgKHRyYWlsaW5nIHdoaXRlc3BhY2UpICJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlxuU2FmYXJpIChsZWFkaW5nIG5ld2xpbmUpIl9zKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFp
bGluZyBuZXdsaW5lKVxuIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8gdmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiX3MpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHVu
dGVybWluYXRlZCBjb21tZW50Il9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiX3MpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJceDFCIChjb250YWlucyBjb250
cm9sIGNoYXJhY3RlcikiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkvXG4xMC4wIChlbWJlZGVkIG5ld2xpbmUpIl9zKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90
ZWQgcGFpciBpbiB0b2tlbikiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3QgdG9rZW4pIl9zKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
cHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgwOGIzMGMyMzhjMy4uZGRjMTg1ZDk2YmM2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZh
Y3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9B
cHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0g
UiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0
LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4K
LSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlw
ZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJv
b2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0
KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVk
KQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAg
IGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganM7CiAgICAgY29u
c3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNl
VHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyBy
ZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5
bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9
KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dC
eXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
IiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0s
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMi
X3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0s
IGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgn
ZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQ
cml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAg
ICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29u
c3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29u
c3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkg
PT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIs
ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
X3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5h
bGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJW
aWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0
YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQog
ICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwog
CiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBz
dGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9
LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5T
V0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJ
ZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00
NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQg
aXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAg
ICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0
QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIo
KSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIg
PSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNl
cnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0Nf
U1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9
IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSAr
NTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmlu
dGVybmFscykgewogICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFs
cycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJl
cG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOwor
KVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02
NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVz
RGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVl
IH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1
ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0s
CiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJl
cXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBp
bml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0
NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
ZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZp
Y2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9u
QWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJl
Y2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5
dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0g
UiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEy
ICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0
PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVu
dGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQor
ICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5k
TW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1l
VGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQg
PSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAu
MC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkw
OTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8v
MTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwot
c3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJf
czsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1s
Pjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRF
U1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWlu
RnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAg
fSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBu
dWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7
Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1l
Il9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTVi
ZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQK
IHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsK
ICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVy
cmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29t
LmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwog
fQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5n
cygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNs
ZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2Vi
Q29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5
VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRT
dGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjoo
V0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogfQogQGVu
ZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUwLDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3Jr
ZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0
PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRv
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlv
biBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0Pgot
KVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3Jp
cHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2
ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJl
Y2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsKIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VS
Q0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4u
aHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRl
bnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwK
KyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5
MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRo
ZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZl
ZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJv
bSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2
LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAg
eyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWlu
VW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0g
fSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFS
ZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05NjcsNyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dz
ZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0g
IlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0K
aW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVu
dE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4t
T3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAg
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwx
MSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRo
ZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAK
ICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJm
b28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZl
cjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUi
LCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9y
aWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7
IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9
LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzM2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcg
QEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkK
IHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8i
LCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0p
OwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIy
Nzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9Q
cmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0
cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dp
dGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZh
dWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6
ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpv
cHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0
QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBA
QCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0Ns
YXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1v
ZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2Rl
TmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0g
eyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4
KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENv
bnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8g
bmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250
ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAg
ICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVy
byk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9z
IH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
IiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRo
UG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJB
Z2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJU
ZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVk
Q29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQog
ICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1
c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1
RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVE
ZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAg
ICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJd
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNm
MTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4u
Y3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBv
aW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1h
eFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVw
bGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsg
JmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8v
d3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29t
Il9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484826"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456512</attachid>
            <date>2022-04-03 13:30:38 -0700</date>
            <delta_ts>2022-04-03 14:16:47 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>310952</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5hOGIxZDIwZDY2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKaW5kZXggYTI2MzA4ODU3M2NmLi5iNjY0MzcxM2Y1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwogCiAgICAgLy8gU2V0
dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdl
R3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50IHRvIGdldCBu
b3RpZmllZCBvZiBwYWdlIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlX
aW4uY3BwCmluZGV4IDdkN2I4MDQ3N2JkYy4uYTFjNjhlNDIwZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBMUkVTVUxU
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6Om9uQ2xvc2UoKQogCiBXZWJQYWdlUHJveHkqIFJl
bW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICBwcmVmZXJlbmNl
cy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogCiAjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggZjQwMGQ1
ZTczNzE5Li4xYTE5MTU1NWY5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkp
OwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7
CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8g
aW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2lu
ZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA5ZDNmOThhMzQ5NDAuLmUyZjk3MTMy
NTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9C
dWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGVudW0g
Y2xhc3MgQmluZEZsYWdzIHsKIAogc3RhdGljIHZvaWQgYmluZFN5bWxpbmtzUmVhbFBhdGgoVmVj
dG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBiaW5kT3B0
aW9uID0gIi0tcm8tYmluZCIpCiB7Ci0gICAgV1RGOjpTdHJpbmcgcmVhbFBhdGggPSBGaWxlU3lz
dGVtOjpyZWFsUGF0aChwYXRoKTsKKyAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0
ZW06OnJlYWxQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGlmIChwYXRoICE9IHJl
YWxQYXRoKSB7CiAgICAgICAgIENTdHJpbmcgcnBhdGggPSByZWFsUGF0aC51dGY4KCk7CiAgICAg
ICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7IGJpbmRPcHRpb24sIHJwYXRo
LmRhdGEoKSwgcnBhdGguZGF0YSgpIH0pKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBHUmVmUHRyPEdT
dWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIs
IGNvbnN0IFByb2NlcwogCiAgICAgICAgIGFkZEV4dHJhUGF0aHMobGF1bmNoT3B0aW9ucy5leHRy
YVNhbmRib3hQYXRocywgc2FuZGJveEFyZ3MpOwogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4
dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IiwgIm1lZGlhS2V5c0RpcmVj
dG9yeSIsICJ3YXlsYW5kU29ja2V0IiwgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5IiB9OworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSJfcywgIm1lZGlhS2V5c0RpcmVjdG9yeSJfcywgIndheWxhbmRTb2NrZXQiX3MsICJ3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSJfcyB9OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBleHRyYVBhdGhzKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXh0cmFQYXRoID0gbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQocGF0aCk7CiAgICAgICAgICAgICBpZiAo
IWV4dHJhUGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7
CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggMGQxZjQwMGU0NDQxLi5jZmU3YTBlYjNiZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAg
IGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRl
X2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5p
bXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJy
YXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAtODksNyArODksNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQt
ZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENs
aWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwot
ICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBs
ZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxl
bWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBVU0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJz
LndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBhcHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZh
dWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0g
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsgZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRp
b25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsg
Z19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAKICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNl
cnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVy
QWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4ODRkYWRjYjEuLjg2NGQwZTM2ZmI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bv
b2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBsYXVuY2hPcHRp
b25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJv
Y2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiAKICAg
ICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkgewogICAgICAgICBXZWJzaXRl
RGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CmluZGV4IDA3YzIxN2M3ZDZhOS4uNjI2OWNjNGQyODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMzAsOSAr
MzAsOSBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndlYmtpdGd0ayJfcwogI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid3BlIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIl9zCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBD
bGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5o
YXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9m
VGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25l
d19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRh
LmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFy
YWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkg
ewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURh
dGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRl
bnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQ
YXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5n
ZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmll
dzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXpl
KHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdl
LT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3Jl
YXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IElu
aXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1
dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1
Miw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkph
dmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNj
cmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAs
IDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBp
ZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAg
ICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlv
biBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2Fy
bmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBk
b21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAi
cnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBw
LWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5
MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2Vi
UGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAg
ICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJf
cywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5Iiwg
ODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJV
KzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktl
eUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAi
YiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJp
IiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5
Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6
VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJf
cywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJz
LCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9z
LCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2Us
IG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6
cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNG
b3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAg
ICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFf
MyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1l
KHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXgg
YmI1MTJhZWMzNDUwLi43NjQ0M2E5NDI1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBi
b29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVu
dCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0
aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04
Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZp
ZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAg
ICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Yg
d2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVT
aWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4K
LSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
ciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBp
ZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4
IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00u
bW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVy
eVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRl
eHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4i
LCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXco
KS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAg
ICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1
bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVs
bHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tT
cGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBT
dHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVs
bGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1t
YXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBp
bnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVk
NmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0
RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKill
bmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVF
bmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSkt
PmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1
Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50
V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAg
IF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQo
W3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRl
LT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVl
KTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWls
eSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0
UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4u
YzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3Np
YmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2Uu
Y3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmos
IG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBwZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3Vu
dDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVC
YXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNj
ZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdO
RCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIyMWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAK
QEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFy
eVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFn
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMw
MmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRE
b3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1
bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5E
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAg
SGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7
CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAgICAgICAoKmkpLT5S
ZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURl
bGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00Mywx
MyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVs
dFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7
CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1
bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVs
dFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0
UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBN
ZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1v
cnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1l
bW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdi
Mzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0
aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWci
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsK
IH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlv
blByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Q
cm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBS
ZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXgg
OGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGlj
YXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNoZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxp
Y2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9u
Q2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNo
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBs
aWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBT
dHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtS
ZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBs
aWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2Rl
YmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02Miwx
MyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2
ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNo
aXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0K
IAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBf
Q09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAK
QEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3Qo
UmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2Fy
ZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0Zvcndh
cmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3Qi
X3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAt
NjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQog
ICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0Lmdl
dCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0Zv
cndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tG
b3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3
MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApA
QCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6Oldl
YkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsK
IH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0
YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3Mu
Y3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3Rp
Y3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0
YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNz
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNv
cmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0
aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3Jl
U3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRw
dHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAg
ICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBj
dXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1
cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52
YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0s
IGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFk
b3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXAp
KTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcg
KzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBl
Q291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNP
YmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3Vu
dE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVn
aW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNl
dChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNl
dChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRy
PElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNy
ZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVO
YW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0
aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiog
c3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9i
YWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9u
ZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRk
KCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMu
YWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmll
bGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQo
IkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2Ny
aXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1v
cnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUi
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5
dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZl
ZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJf
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5j
b21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0
ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3Rp
Y3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJf
cywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVh
cEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOwor
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlz
dGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApp
bmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBA
IC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFu
ZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRv
bUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01IVE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVs
ZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJm
YWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwgKHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0
S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3
LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBl
bXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMg
b24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAg
ICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0
IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4gZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAg
ICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1Db21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0
cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzku
LmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0
YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5j
cHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1
bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdlYkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2Vi
RGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpAQCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291
cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAgIG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNl
KCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBX
ZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXgg
Njc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJh
c2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFi
YXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRh
YmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0z
NSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0
YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3Vt
ZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9h
ZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExv
YWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIi
X3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsKICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVk
RGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1
MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2Fk
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsK
IH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRv
d25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0g
RGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhpcyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdl
YkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRi
OWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5j
cHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVy
cm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21h
aW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsK
KyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVS
TEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7
CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0
ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlz
LCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJj
ZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNv
dXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdl
YlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3Vy
Y2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2Ui
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQog
CiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2Eu
LmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxl
bWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVt
ZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5
QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQog
ICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJv
cGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0
eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFn
KiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9y
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcx
YmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApA
QCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9y
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVy
cm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAg
V2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJh
bWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0
ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0
YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdl
YkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAg
ICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkp
OwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRt
bCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsKIAogICAgIFN0cmlu
ZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29k
aW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxl
Y3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVE
OwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4
ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
Il9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19P
SzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
ci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyAr
MzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihS
ZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBv
bGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9s
aWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRy
PEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJm
NzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxH
ZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5k
ZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAg
Q09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNy
ZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9z
aXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6
fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAog
SFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJ
RCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdi
Yi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
VE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQogewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlv
bkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
SFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2Vi
SFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0
aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlv
bkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9u
KiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41
MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04
OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNl
ckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0
b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7
CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJl
ZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgp
CiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5
OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9y
eUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkK
ICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMp
OwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhp
c3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIs
NyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhp
c3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2Ez
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMg
KzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdl
YlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0
ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3Bl
Y3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5z
cGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rv
cjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJK
YXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkph
dmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVj
dG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9y
Il9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0
b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3
Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xh
c3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2Vi
S2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRl
SklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2Vi
S2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdl
TG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAK
aW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0
TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVz
c2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktp
dE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzEx
ZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
S2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3Rh
dGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBX
ZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0
YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0
YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3
NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0
YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0
KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBA
QCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0
YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRh
YmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRp
b25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNw
cAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5h
dmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5X
ZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRh
KiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9u
c2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVu
dFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3Rp
ZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwg
SVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24i
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAK
IFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJl
bGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
Yk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9u
OjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9
MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4u
NmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZp
Y2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmlj
YXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJf
cyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQ
cmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5j
cHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZl
cmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQ
cmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldl
YlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVu
Y2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2Vi
UmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpT
dHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2Vi
UmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
UmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3Rh
bmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQs
MTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJT
Y3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtu
b3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNw
cAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2Ny
aXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQp
CiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xh
c3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRX
b3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5n
ZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNj
cmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFu
ZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdl
YlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJp
dHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9y
aWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3Mp
OwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2lu
Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5
Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJp
YWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFs
dWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFs
dWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1
ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRl
cmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3Bw
CkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNy
ZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRl
cmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwog
fQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAK
IEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlk
LCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1
OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMg
KzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAK
IFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
Q3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFs
JiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQog
CiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQog
CiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApp
bmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAg
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVj
dGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rp
b25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5X
ZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVS
TFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNk
YmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxS
ZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVk
U2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNw
b25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJl
c3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpj
cmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdl
YlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFz
IHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3Bv
bnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygp
LCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBp
bnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXgg
NDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQog
CiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQog
ewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2Vi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBX
ZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAt
NDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0t
OwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJW
aWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAog
V2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBA
QCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJh
bSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBj
YXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5k
KCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoK
LSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0
ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3Mp
LmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVu
dC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0g
ZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50
KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0
cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQt
PnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktp
dCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhv
dyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBz
aG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6
Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAg
ICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAg
ICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigp
LmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAt
NDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24q
IC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAK
LSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0
ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxU
IFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICgh
bV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChf
SW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwog
Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7Cisg
ICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3Io
KS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VM
VCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUi
KS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQ
cml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDEx
IEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2Uo
KQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAog
V2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdi
Nzg5YjM1ZWEuLmUxOTY2OGNjZDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC0xMTA0LDcgKzExMDQsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2Vi
Vmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNv
bnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0g
RmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoT3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250
RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aE9y
VXJsKSk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1
bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRh
KCksIF9NQVhfUEFUSCkpCkBAIC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRG
b250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogCiAgICAgU3RyaW5nIHBhdGhUb0No
ZWNrID0gZnVsbFBhdGg7CiAKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0g
IkxheW91dFRlc3RzIjsKKyAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxh
eW91dFRlc3RzIl9zOwogCiAgICAgLy8gRmluZCB0aGUgbGF5b3V0IHRlc3Qgcm9vdCBvbiB0aGUg
Y3VycmVudCBwYXRoOgogICAgIHNpemVfdCBsb2NhdGlvbiA9IHBhdGhUb0NoZWNrLmZpbmQobGF5
b3V0VGVzdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhy
ZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEz
LDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAK
ICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFT
U0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikp
OworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXIt
MC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXIt
MS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVS
KE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAg
LTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAg
Ly8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxl
bWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBs
ZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlm
Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEi
KSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0x
LTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNT
RVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsK
KyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEt
MSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1
LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRleCBmZmJhMDBiODAyMWEuLmU4MDcwNzRmNGNj
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJz
ZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNl
cnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVTVChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09y
aWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lmIFVTRShHTElCKQogVEVTVChIVFRQUGFyc2Vy
cywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdl
YktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tv
KSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVudCkiKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQg
cGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJpYyB0b2tl
biBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVy
IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4w
IFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2UgR2Vja28pIl9zKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNv
bW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVudCkiX3MpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAobGVmdCBw
YXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9r
ZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFy
YWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFjZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNl
KSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5T
YWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXdsaW5lKVxuIikpOwotICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNp
b24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQiKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNv
bW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIikpOwotICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3
bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
V1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBwcm9kdWN0IHRva2Vu
KSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIl9z
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFy
aSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgd2hpdGVzcGFjZSkgIl9zKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxl
YWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iX3MpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRv
a2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQiX3MpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29t
bWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVyKSJfcykpOworICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQg
bmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSJfcykpOworICAgIEVYUEVD
VF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVj
dCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMw
YzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQs
NyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3Vi
RnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNs
YXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFT
Q0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsK
IAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5
bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5
bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0g
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
Il9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3Mg
fSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjks
MTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRo
U2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0g
c2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7
ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRp
YXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9u
OiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
Ci1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQp
ID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVu
Y3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1l
c3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcp
OwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5n
IGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBv
cnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkK
ICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21h
aW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7
IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3
aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4
IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMx
Nyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVu
dHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJF
UShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlz
c2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0Ui
X3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hl
Y2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQog
ICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5
NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZy
YW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0
ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+
PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0Mi
OworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlz
c2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQg
fSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4
NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
MTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAg
ICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0
aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVu
dGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQp
dXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250
ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBA
QCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihy
ZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5C
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7
CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUg
c3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
OworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUg
PSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7
ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5
NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBm
YWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsK
KyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1s
Il9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3Mg
fSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwog
CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENv
bnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
IHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwi
X3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwi
X3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9
IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhk
YmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERl
bGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJB
ZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9z
LCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVu
dE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5
LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlv
bmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
IH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250
ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtl
KDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRN
b2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFz
cz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1v
ZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXpl
ID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+
LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2Rl
PiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXpl
ID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdh
dGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIs
NyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRW
YXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRV
c2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7
IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldL
Q29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBb
W3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemls
bGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyAr
NDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVz
a3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhl
IGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1v
YmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1v
ZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAg
ICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVj
aXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmll
dyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNv
bnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJv
dmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1w
bGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07
CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBv
aW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAg
VVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgi
aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFy
eVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484833"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456514</attachid>
            <date>2022-04-03 14:09:58 -0700</date>
            <delta_ts>2022-04-03 14:34:52 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>319445</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5hOGIxZDIwZDY2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKaW5kZXggYTI2MzA4ODU3M2NmLi5iNjY0MzcxM2Y1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwogCiAgICAgLy8gU2V0
dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdl
R3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50IHRvIGdldCBu
b3RpZmllZCBvZiBwYWdlIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlX
aW4uY3BwCmluZGV4IDdkN2I4MDQ3N2JkYy4uYTFjNjhlNDIwZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBMUkVTVUxU
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6Om9uQ2xvc2UoKQogCiBXZWJQYWdlUHJveHkqIFJl
bW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICBwcmVmZXJlbmNl
cy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogCiAjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggZjQwMGQ1
ZTczNzE5Li4xYTE5MTU1NWY5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkp
OwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7
CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8g
aW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2lu
ZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA5ZDNmOThhMzQ5NDAuLmUyZjk3MTMy
NTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9C
dWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGVudW0g
Y2xhc3MgQmluZEZsYWdzIHsKIAogc3RhdGljIHZvaWQgYmluZFN5bWxpbmtzUmVhbFBhdGgoVmVj
dG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBiaW5kT3B0
aW9uID0gIi0tcm8tYmluZCIpCiB7Ci0gICAgV1RGOjpTdHJpbmcgcmVhbFBhdGggPSBGaWxlU3lz
dGVtOjpyZWFsUGF0aChwYXRoKTsKKyAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0
ZW06OnJlYWxQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGlmIChwYXRoICE9IHJl
YWxQYXRoKSB7CiAgICAgICAgIENTdHJpbmcgcnBhdGggPSByZWFsUGF0aC51dGY4KCk7CiAgICAg
ICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7IGJpbmRPcHRpb24sIHJwYXRo
LmRhdGEoKSwgcnBhdGguZGF0YSgpIH0pKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBHUmVmUHRyPEdT
dWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIs
IGNvbnN0IFByb2NlcwogCiAgICAgICAgIGFkZEV4dHJhUGF0aHMobGF1bmNoT3B0aW9ucy5leHRy
YVNhbmRib3hQYXRocywgc2FuZGJveEFyZ3MpOwogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4
dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IiwgIm1lZGlhS2V5c0RpcmVj
dG9yeSIsICJ3YXlsYW5kU29ja2V0IiwgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5IiB9OworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSJfcywgIm1lZGlhS2V5c0RpcmVjdG9yeSJfcywgIndheWxhbmRTb2NrZXQiX3MsICJ3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSJfcyB9OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBleHRyYVBhdGhzKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXh0cmFQYXRoID0gbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQocGF0aCk7CiAgICAgICAgICAgICBpZiAo
IWV4dHJhUGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7
CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggMGQxZjQwMGU0NDQxLi5jZmU3YTBlYjNiZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAg
IGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRl
X2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5p
bXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJy
YXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAtODksNyArODksNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQt
ZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENs
aWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwot
ICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBs
ZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxl
bWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBVU0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJz
LndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBhcHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZh
dWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0g
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsgZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRp
b25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsg
Z19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAKICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNl
cnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVy
QWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4ODRkYWRjYjEuLjg2NGQwZTM2ZmI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bv
b2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBsYXVuY2hPcHRp
b25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJv
Y2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiAKICAg
ICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkgewogICAgICAgICBXZWJzaXRl
RGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CmluZGV4IDA3YzIxN2M3ZDZhOS4uNjI2OWNjNGQyODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMzAsOSAr
MzAsOSBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndlYmtpdGd0ayJfcwogI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid3BlIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIl9zCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBD
bGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5o
YXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9m
VGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25l
d19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRh
LmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFy
YWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkg
ewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURh
dGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRl
bnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQ
YXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5n
ZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmll
dzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXpl
KHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdl
LT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3Jl
YXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IElu
aXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1
dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3Bw
CmluZGV4IDQ1MmNmMGNjOGM3YS4uMzM4NGZhMjU4YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0
b3JDbGllbnRXUEUuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGlu
dGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiBzdGF0aWMgdm9p
ZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25z
dCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgU3RyaW5nIGNv
bW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5k
TmFtZSB7IGludGVycHJldEtleUV2ZW50KGV2ZW50KSB9OwogCiAgICAgaWYgKCFjb21tYW5kTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFt
ZSkuZXhlY3V0ZSgpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleVBy
ZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3JtS2V5
CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUtleURvd24oRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50
JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikKIHsKLSAgICBTdHJpbmcgY29t
bWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1hbmRO
YW1lIHsgaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAgICAgaWYgKGNvbW1hbmROYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2YjMyMmEwOTYwZi4uYTJlMWMxMzE1MDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1Miw3
ICszODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBK
YXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJf
cywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkK
LSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRp
bmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
biBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcx
YzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9p
ZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIs
Ci0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3Ms
ICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAw
NTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAg
ICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIi
LCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAg
ICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5Iiwg
NzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJV
KzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJL
ZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAg
InUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQ
YWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJ
T1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0g
ICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAi
MTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApp
bmRleCBiYjUxMmFlYzM0NTAuLjc2NDQzYTk0MjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQo
JmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5m
b3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0K
QEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRl
bnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNl
ciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQg
Y29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBN
YWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAg
ICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
aW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRp
YVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNj
cmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVy
VmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkp
OworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQs
IGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5s
aW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
R3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
NWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lk
KV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBk
Njg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVm
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5h
YmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250
RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5
YTExLi5jMjkwZGFlMzc5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Fj
Y2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJh
c2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKICAgICBBU1NFUlRfQVJH
KG9iaiwgb2JqKTsKICAgICBtX29iamVjdC0+c2V0V3JhcHBlcih0aGlzKTsKICAgICArK2dDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNz
aWJsZUJhc2U6On5BY2Nlc3NpYmxlQmFzZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNl
KiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBIV05EIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGlj
dGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCA5YTFmMDExMjIxYmMuLmE1YzA3ZWI5MTJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFn
LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6fkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCmluZGV4IDFhODBjNGQ2ZThl
Mi4uMzAyZjYzN2FiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsK
ICAgICBIYXNoU2V0PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVn
aW4oKTsKICAgICBmb3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgq
aSktPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1
bHRQb2xpY3lEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwCmluZGV4IGU4ZTVmNWM0Y2MxMS4uMWZhOGMzNTRkZmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKQEAg
LTQzLDEzICs0MywxMyBAQCB0eXBlZGVmIGVudW0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZSB7CiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlOjp+RGVmYXVsdFBvbGljeURlbGVnYXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
RGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJE
ZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGUqIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiLi45ZGE1OTYwNTY0YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzUsMTMgKzM1LDEz
IEBAIE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIE1lbW9yeVN0cmVhbTo6
fk1lbW9yeVN0cmVhbSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCA2
Zjc1N2IzODZkMTUuLmU5N2M0MTMyNDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBhY3Rpb24sIFJlZlB0CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWci
X3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
QWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFj
dGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApp
bmRleCA4ZjI3MTYyYmJhZjEuLmYzMTAyZTUyNjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBXZWJB
cHBsaWNhdGlvbkNhY2hlOjpXZWJBcHBsaWNhdGlvbkNhY2hlKCkKICAgICA6IG1fcmVmQ291bnQo
MCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGlj
YXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5XZWJBcHBsaWNhdGlv
bkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTgxLDcgKzgxLDcgQEAgc3Rh
dGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlJiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKCkKIHsKLSAgICBzdGF0
aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIiku
bGVha1JlZigpOworICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzdG9yYWdlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3Njcu
LjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAg
LTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiX3Mp
OwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0YWMyZDI4MTA0Li4xMTZhYTQy
MDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJk
TGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tG
b3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNr
Rm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJk
TGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgp
CkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExp
c3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRl
ODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUu
Y3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDYWNo
ZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUi
X3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGUqIFdlYkNhY2hlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li5mMTMxNmRlNDZjMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTQ4LDEzICs0OCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0aXN0aWNzOjpXZWJDb3JlU3Rh
dGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJD
b3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzOjp+V2ViQ29yZVN0YXRp
c3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljcyogV2ViQ29yZVN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFdl
YkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyhfQ09N
X091dHB0cl9vcHRfCiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgp
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJh
dG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7
ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJl
bnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5r
ZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3Vs
dHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3Vu
dE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdE9iamVj
dFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHkKICAgICBJdGVyYXRvciBlbmQg
PSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gdHlw
ZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAgICBD
T01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50
Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8o
dHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTI5NiwxMyArMjk2LDEzIEBAIEhSRVNVTFQgV2ViQ29y
ZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHlC
YWcqKiBzdGF0CiAgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9
IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZmllbGRzOwotICAgIGZpZWxk
cy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcykpOwotICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7Ci0g
ICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKLSAg
ICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiLCBoZWFwU2l6ZSk7Ci0gICAgZmllbGRz
LmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIiwgaGVhcEZyZWUpOwotICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRTdGFja1NpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SklU
U2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
SklUQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIl9z
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJl
c2VydmVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5
dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0
aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxp
c3RCeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBT
aXplIl9zLCBoZWFwU2l6ZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIl9z
LCBoZWFwRnJlZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNrU2l6ZSJfcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiX3MsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpKTsKIAogICAgICpz
dGF0aXN0aWNzID0gQ09NUHJvcGVydHlCYWc8dW5zaWduZWQgbG9uZyBsb25nLCBTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD46OmFkb3B0KGZpZWxkcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDIxMTU5OGQzOWE2YS4uYjlmNDEwOTM1OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRD
b21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGUsIEtleWJvYXJkRXZlbnQqIGtlKQogICAgICAgICBp
ZiAoZG9tRWxlbWVudCkgewogICAgICAgICAgICAgSURPTUhUTUxJbnB1dEVsZW1lbnQqIGRvbUlu
cHV0RWxlbWVudDsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZG9tRWxlbWVudC0+UXVlcnlJ
bnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCAodm9pZCoqKSZkb21JbnB1dEVsZW1l
bnQpKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kID0gbV93ZWJWaWV3LT5pbnRl
cnByZXRLZXlFdmVudChrZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgeyBtX3dl
YlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKSB9OwogICAgICAgICAgICAgICAgIC8vIFdlIGFs
bG93IGVtcHR5IGNvbW1hbmRzIGhlcmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUgYWN0dWFsbHkgZGVw
ZW5kcyBvbiB0aGlzIGJlaW5nIGNhbGxlZCBmb3IgYWxsIGtleSBwcmVzc2VzLgogICAgICAgICAg
ICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gc2VuZCBhbiBlbXB0eSBjb21tYW5kLgogICAgICAg
ICAgICAgICAgIGZvcm1EZWxlZ2F0ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9tSW5wdXRFbGVtZW50
LCBCU3RyaW5nKGNvbW1hbmQpLCBraXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgJnJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDll
ZmI3OS4uZjc4YzFiZDJhODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXZWJEYXRhU291cmNlOjpXZWJEYXRhU291cmNlKFdl
YkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50Kys7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3Vy
Y2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiX3MpOwogfQog
CiBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRh
dGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKICAgICAgICAgbV9sb2FkZXItPmRldGFjaERhdGFT
b3VyY2UoKTsKICAgICBXZWJEYXRhU291cmNlQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3Vy
Y2UqIFdlYkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApp
bmRleCA2NzY3NzIwMzE1YzMuLjhmMzc2NTQxMjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBXZWJE
YXRhYmFzZU1hbmFnZXIqIFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIFdl
YkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTJkMGZhNzJjZDZmLi4yNTZhMzU4ODA3
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNo
ZWREYXRhU291cmNlKDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1l
bnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3Vt
ZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExv
YWRlciJfcyk7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0
YWNoZWREYXRhU291cmNlKTsKICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2Li45OTQ2
OTA0NTUxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJEb3dubG9hZDo6V2ViRG93
bmxvYWQoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQi
X3MpOwogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTYxLDcgKzYxLDcgQEAg
V2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBEZXN0cm95aW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBjYW5jZWwoKTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxv
YWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIl9zKTsKIH0K
IAogV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDE4MTBhNjY4NTgxOC4u
ZmM2NGI5YmM5OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYSBVUkwgb3IgZGVzY3JpcHRpb24gZm9yIHRo
aXMgZXJyb3IgY29kZT8KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
IiIpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwg
V2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICBDT01QdHI8V2ViRXJyb3I+IHdlYkVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6
Y3JlYXRlSW5zdGFuY2UoZXJyb3IpKTsKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9y
KHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRHJvcFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9w
U291cmNlLmNwcAppbmRleCA2YmFiZjkwYjg5ZmEuLjViMWM1ZGZjN2U4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJE
cm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJv
cFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNv
dXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSJfcyk7
CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDhhZmJhMGY2
ZDUzYS4uYzYxZjE3MmQ0N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFbGVtZW50UHJv
cGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiAgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1l
bnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnOjp+V2ViRWxlbWVudFBy
b3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCmluZGV4IDE5
ZGUzNzFiZWExYy4uNzE2MTIxOTIzM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3Iu
Y3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRXJyb3I6OldlYkVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQogICAgICwgbV9lcnJvcihlcnJv
cikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIl9zKTsKIH0KIAog
V2ViRXJyb3I6On5XZWJFcnJvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yKiBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNTk0OGIwZWM1YjgwLi4wN2JkNDZm
Yzk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsyNDMs
NyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewogICAgIFdlYkZyYW1lQ291bnQrKzsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6On5X
ZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAgV2ViRnJhbWU6On5XZWJGcmFtZSgpCiAgICAg
ZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZSogV2ViRnJhbWU6OmNyZWF0
ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeQog
ewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVU
eXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4
dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIl9zOwogCiAgICAg
U3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0
RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
IikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxl
Y3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDIuLjk0NDY4YmI3M2QwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTM5
LDEzICszOSwxMyBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1l
UG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp+V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IGRhNGMyMjc3OTZiNy4u
Njg5MmY3NzFhZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoUmVm
UHRyPEdlb2xvY2F0aW9uPiYmCiAgICAgLCBtX2dlb2xvY2F0aW9uKFdURk1vdmUoZ2VvbG9jYXRp
b24pKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcjo6fldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNw
cAppbmRleCA5MjRjNDhiMTNjNDEuLmZmMWZkOTBjNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTM2LDEzICszNiwx
MyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggNDZhYWFl
OTdkN2JiLi44NmEzY2I2ZGFhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50YXRpb246
On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQpAQCAtNTQsNyArNTQsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQogCiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50
YXRpb24qIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoV2ViRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAzZjFlYjZkNzM4
YmQuLjUwYThlNWY2YmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBDT01QdHI8SVByb3BlcnR5QmFnPiBjcmVh
dGVVc2VySW5mb0Zyb21IaXN0b3J5SXRlbShCU1RSIG5vdGlmaWNhdGkKIFdlYkhpc3Rvcnk6Oldl
Ykhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5
Il9zKTsKIAogICAgIG1fcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRh
cmRQcmVmZXJlbmNlcygpOwogfQpAQCAtOTcsNyArOTcsNyBAQCBXZWJIaXN0b3J5OjpXZWJIaXN0
b3J5KCkKIFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSJfcyk7CiB9CiAKIFdlYkhpc3RvcnkqIFdlYkhp
c3Rvcnk6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcAppbmRleCBmYjg4ZTM5ZTdiNTYuLjhkZDliZGFhYTI4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJI
aXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJ
dGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwg
dGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJ
dGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCkBAIC02Miw3
ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQogICAgIGhpc3RvcnlJ
dGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7CiAKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAog
V2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCBmNjIxOWE2NmRhYTkuLjQ0N2Q5
MmEzYTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCkBAIC01
MSwxMyArNTEsMTMgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWMKICAgICBBU1NFUlRfQVJHKGlu
c3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yOjp+V2Vi
SW5zcGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogV2ViSW5z
cGVjdG9yOjpmcm9udGVuZENsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCmluZGV4IGM4ZTRiZThhYzIxYi4uNzU4NjYyNzJk
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxlY3RvcigpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRD
b2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRDb2xs
ZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjp+V2ViSmF2YVNjcmlwdENv
bGxlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAppbmRleCBjZTg2MjBm
ZDRiZDcuLjZlZTA3MjUzMmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAgV2ViS2l0Q2xhc3NGYWN0b3J5
OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiAgICAgV2ViQ29yZTo6cG9w
dWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBXZWJLaXRDbGFzc0ZhY3Rvcnk6
On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1l
c3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29w
LmNwcAppbmRleCA5MzdhNjY2OWU5MDguLmU2OWMwYzgwODk4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBX
ZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJL
aXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAog
V2ViS2l0TWVzc2FnZUxvb3AqIFdlYktpdE1lc3NhZ2VMb29wOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCmluZGV4IDEyNjNi
YzBjMTFmOS4uZjUxNTFjYmUwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRTdGF0aXN0aWNzLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIGludCBXZWJGcmFtZVZpZXdDb3Vu
dDsKIFdlYktpdFN0YXRpc3RpY3M6OldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljczo6fldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljcyogV2ViS2l0U3RhdGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDVj
OTEyNTc3MjUyNi4uMjQ0MTA2Njg4Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0YWJsZSkKICAgICA6IG1f
aXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogV2ViTXV0YWJsZVVSTFJl
cXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC05Myw3ICs5
Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6fldl
Yk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogLy8gSVVua25v
d24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2
aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNi4uNmE5MzNhYmI1Zjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC03MiwxMyArNzIsMTMgQEAg
V2ViTmF2aWdhdGlvbkRhdGE6OldlYk5hdmlnYXRpb25EYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBJV2UKIAogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0
YTo6fldlYk5hdmlnYXRpb25EYXRhKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlv
bkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVhdGVJbnN0YW5jZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJVUkxS
ZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIGNvbnN0IFN0cmluZyYg
Y2xpZW50UmVkaXJlY3RTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uLmNwcAppbmRleCBmNTNiYjcyNjM1M2YuLjk0OTI1NmVlODAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKEJTVFIgbmFtZSwgSVVua25vd24qIGFuT2Jq
ZWN0LCBJUHJvcGVydHlCYWcqIHVzCiAgICAgICAgIG1fdXNlckluZm8tPkFkZFJlZigpOwogCiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIl9zKTsK
IH0KIAogV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKICAgICAgICAgbV91c2VySW5m
by0+UmVsZWFzZSgpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViTm90aWZpY2F0aW9uIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uKiBXZWJOb3RpZmlj
YXRpb246OmNyZWF0ZUluc3RhbmNlKEJTVFIgbmFtZSAvKj0wKi8sIElVbmtub3duKiBhbk9iamVj
dCAvKj0wKi8sIElQcm9wZXJ0eUJhZyogdXNlckluZm8gLyo9MCovKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggOTI1MzJkYmRj
YTQxLi42Y2Q4ODQyZTdhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFrZVVuaXF1ZTxXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNl
bnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWMuLmZiMTczZGQ1YzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgV2Vi
UHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCkK
IFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2Vz
Ojp+V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlcyogV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJlc291cmNl
OjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2U6
On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQxMjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEz
ICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAK
IFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8g
SVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29y
bGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBX
ZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3
b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICAr
K2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAog
V2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dv
cmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6
OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyArNDksMTMg
QEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3Vy
aXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdp
biJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4oKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1
cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4YmI4MGEy
ZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkK
IHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vy
aWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVk
SlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Ny4u
MDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJl
cjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJf
cyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsK
IH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmlu
ZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCkBAIC00
NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2VuZGVyKHNl
bmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4uNTA5OWJh
MGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMg
QEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsK
IH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVu
dGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlh
bCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25T
cGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEzICszNywx
MyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFj
ZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAog
V2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZUluc3Rh
bmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBh
NWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2Nh
bGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVS
TFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2Vi
VVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwog
ICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApp
bmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7
CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVy
bigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4uZTU1YTI0
MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcgKzQ0Niw3
IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygp
CkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2ViVmlld0Nv
dW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciX3MpOwog
fQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDExICsxOTk1
LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8q
bFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAg
ICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBV
bmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5l
eGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5k
byJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2ViVmlldzo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUo
KSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5
RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8g
V2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNp
ZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRp
dG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VMVCBXZWJW
aWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgp
OworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0Il9zKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5
VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIi
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIGVtcHR5
U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRl
bGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgpOwogICAg
IHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29y
a2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSAr
OTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0
YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwog
fQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9z
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGNmN2I3ODliMzVlYS4uZTE5NjY4Y2NkNzQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMDQsNyArMTEwNCw3IEBAIHN0YXRpYyB2b2lkIHNp
emVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJh
Y2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJh
Y2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhU
b0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChw
YXRoT3JVcmwpKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAo
IV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyBTdHJpbmcg
ZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAKICAgICBTdHJpbmcgcGF0
aFRvQ2hlY2sgPSBmdWxsUGF0aDsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVz
dHMgPSAiTGF5b3V0VGVzdHMiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMg
PSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9u
IHRoZSBjdXJyZW50IHBhdGg6CiAgICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmlu
ZChsYXlvdXRUZXN0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZmYmEwMGI4MDIxYS4uZTgwNzA3
NGY0Y2M1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UFBhcnNlcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQ
UGFyc2Vycy5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAjaWYgVVNFKEdMSUIpCiBURVNUKEhUVFBQ
YXJzZXJzLCBWYWxpZGF0ZVVzZXJBZ2VudFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCIpKTsKLSAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIikp
OwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEw
LjAgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2Ug
R2Vja28pIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkpIikpOwotICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
bGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmlj
IHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFy
YWN0ZXIgdG9rZW4pIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCJf
cykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbyki
X3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChs
ZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJp
YyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xl
IGNoYXJhY3RlciB0b2tlbikiX3MpKTsKIAotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIiAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRl
c3BhY2UpICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8g
dmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVu
ZWQgY29tbWFuZW50KSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRl
ZCBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3Qg
dG9rZW4pIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IiAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIg
U2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFy
aSAobGVhZGluZyBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNp
b24gdG9rZW4gYWZ0ZXIgc2xhc2gpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5l
ZCBjb21tYW5lbnQpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIl9zKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1i
ZWRlZCBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIl9zKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBw
cm9kdWN0IHRva2VuKSJfcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYjAxMTI4YjI2YjFjLi4w
N2E0NWUwZWY0MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBjb3B5SXNDb250aWd1b3VzKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQs
IHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSAp
IHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxT
dHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQor
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAi
XHJcbiJfcywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRh
KCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmlu
Z1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTQ3NywzMiArNDc3LDMy
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKICAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0
aGVyZSAiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImkiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzMVdpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGkiLCAicyBp
IiwgInMgdGhlIG1vc3QgcmkiLCAiZGkiLCAiY3Vsb3VzIGhpIiwgInN0b3J5IHRoZXJlIGkiLCAi
cy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIs
IHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImki
X3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVj
dGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRoU2Vw
YXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFy
KiBjb25zdCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICIgIiwg
IiB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAidG9yeSB0aGVyZSAiLCAiLiIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIpOworICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAg
ICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MyV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMiLCAiIHRoZSBtb3N0IHJpZGljdWxv
dXMgaGlzIiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3Mu
Y2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MzV2l0aG91
dFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAib3J5IHRo
ZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpc3QiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
c3QiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzM1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIGlzIHRo
ZSBtb3N0IHJpZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUgaXMuIiB9OwotICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIsIHRydWUpOworICAgICAgICBy
ZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJfcywgdHJ1ZSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MzV2l0aFNl
cGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC01NTcsMTIgKzU1NywxMiBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0
aG91dFNlcGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNo
dW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ci
KTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3Mp
OwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtz
V2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRv
cikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29u
c3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJkb2ciIH07Ci0gICAgICAgIHJl
YWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIiwgdHJ1ZSk7CisgICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIl9zLCB0cnVlKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fQogCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAi
QmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIgfTsKICAgICAgICAgc3RkOjp2ZWN0
b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyLCAiY2F0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiY2F0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBl
eHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dp
dGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcltdID0geyAiQmVhdWNv
dXAgZGUgY2hhdHMgY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiwgImNhdCIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiLCB0cnVlKTsKKyAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiX3MsIHRydWUpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0
aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAg
ICB9CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA1ZjkyNTMyNzkxYTQuLjJkZDdlNGFlN2EwMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJr
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1
aXJrcy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29u
c3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKFVSTCggU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVh
U3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIAogc3Rh
dGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25z
dCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2Vy
QWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfRkFMU0UodWFT
dHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAKIHN0
YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoY29uc3Qg
Y2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJp
bmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250
YWlucygiTWFjIE9TIFgiKSk7CkBAIC03MiwxNCArNzIsMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiAvLyB0
aGF0IHRoZSBzdGFuZGFyZCB1c2VyIGFnZW50IHNob3VsZCBiZSB1c2VkLikKIHN0YXRpYyB2b2lk
IGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0VtcHR5UXVpcmsoY29uc3QgY2hhciogdXJsKQogewot
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVy
bCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChT
dHJpbmcgeyB1cmwgfSkpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5pc051bGwoKSk7CiB9
CiAKIFRFU1QoVXNlckFnZW50VGVzdCwgUXVpcmtzKQogewogICAgIC8vIEEgc2l0ZSB3aXRoIG5v
IHF1aXJrcyBzaG91bGQgcmV0dXJuIGEgbnVsbCBTdHJpbmcuCi0gICAgU3RyaW5nIHVhU3RyaW5n
ID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgImh0dHA6Ly93d3cud2Via2l0Lm9y
Zy8iKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIl9zKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
aXNOdWxsKCkpOwogCiAgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1
aXJrKCJodHRwOi8vdHlwZWtpdC5jb20vIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMw
YzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQs
NyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3Vi
RnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNs
YXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFT
Q0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsK
IAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5
bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5
bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0g
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
Il9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3Mg
fSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjks
MTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRo
U2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0g
c2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7
ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRp
YXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9u
OiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
Ci1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQp
ID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVu
Y3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1l
c3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcp
OwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5n
IGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBv
cnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkK
ICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21h
aW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7
IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3
aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4
IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMx
Nyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVu
dHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJF
UShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlz
c2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0Ui
X3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hl
Y2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQog
ICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5
NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZy
YW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0
ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+
PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0Mi
OworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlz
c2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQg
fSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4
NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
MTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAg
ICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0
aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVu
dGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQp
dXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250
ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBA
QCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihy
ZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5C
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7
CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUg
c3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
OworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUg
PSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7
ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5
NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBm
YWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsK
KyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1s
Il9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3Mg
fSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwog
CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENv
bnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
IHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwi
X3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwi
X3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9
IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhk
YmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERl
bGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJB
ZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9z
LCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVu
dE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5
LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmlld0NsYXNzPgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlv
bmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
IH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250
ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtl
KDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRN
b2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFz
cz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmll
d0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1v
ZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXpl
ID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+
LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2Rl
PiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNh
dGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXpl
ID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdh
dGU8Vmlld0NsYXNzPihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudCwgc2l6ZSk7CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29u
dGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIs
NyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRW
YXJpb3VzVmlld1dpZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRV
c2VySW50ZXJmYWNlOwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0
V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0g
PSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7
IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9h
ZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldL
Q29udGVudE1vZGVEZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBb
W3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemls
bGEvNS4wIChNYWNpbnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyAr
NDE5LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVz
a3RvcFVzZXJBZ2VudCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhl
IGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1v
YmlsZS8xNUUxNDguCi0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1v
ZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywg
ZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdL
V2ViVmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAg
ICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVj
aXNpb25IYW5kbGVyOm5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmll
dyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNv
bnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJv
dmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1w
bGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07
CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBv
aW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAg
VVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgi
aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFy
eVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484834"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456516</attachid>
            <date>2022-04-03 14:34:52 -0700</date>
            <delta_ts>2022-04-03 14:43:30 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>333954</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5hOGIxZDIwZDY2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKaW5kZXggYTI2MzA4ODU3M2NmLi5iNjY0MzcxM2Y1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwogCiAgICAgLy8gU2V0
dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdl
R3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50IHRvIGdldCBu
b3RpZmllZCBvZiBwYWdlIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlX
aW4uY3BwCmluZGV4IDdkN2I4MDQ3N2JkYy4uYTFjNjhlNDIwZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBMUkVTVUxU
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6Om9uQ2xvc2UoKQogCiBXZWJQYWdlUHJveHkqIFJl
bW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICBwcmVmZXJlbmNl
cy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogCiAjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggZjQwMGQ1
ZTczNzE5Li4xYTE5MTU1NWY5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkp
OwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7
CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8g
aW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2lu
ZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA5ZDNmOThhMzQ5NDAuLmUyZjk3MTMy
NTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9C
dWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGVudW0g
Y2xhc3MgQmluZEZsYWdzIHsKIAogc3RhdGljIHZvaWQgYmluZFN5bWxpbmtzUmVhbFBhdGgoVmVj
dG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBiaW5kT3B0
aW9uID0gIi0tcm8tYmluZCIpCiB7Ci0gICAgV1RGOjpTdHJpbmcgcmVhbFBhdGggPSBGaWxlU3lz
dGVtOjpyZWFsUGF0aChwYXRoKTsKKyAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0
ZW06OnJlYWxQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGlmIChwYXRoICE9IHJl
YWxQYXRoKSB7CiAgICAgICAgIENTdHJpbmcgcnBhdGggPSByZWFsUGF0aC51dGY4KCk7CiAgICAg
ICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7IGJpbmRPcHRpb24sIHJwYXRo
LmRhdGEoKSwgcnBhdGguZGF0YSgpIH0pKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBHUmVmUHRyPEdT
dWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIs
IGNvbnN0IFByb2NlcwogCiAgICAgICAgIGFkZEV4dHJhUGF0aHMobGF1bmNoT3B0aW9ucy5leHRy
YVNhbmRib3hQYXRocywgc2FuZGJveEFyZ3MpOwogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4
dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IiwgIm1lZGlhS2V5c0RpcmVj
dG9yeSIsICJ3YXlsYW5kU29ja2V0IiwgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5IiB9OworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSJfcywgIm1lZGlhS2V5c0RpcmVjdG9yeSJfcywgIndheWxhbmRTb2NrZXQiX3MsICJ3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSJfcyB9OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBleHRyYVBhdGhzKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXh0cmFQYXRoID0gbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQocGF0aCk7CiAgICAgICAgICAgICBpZiAo
IWV4dHJhUGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7
CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggMGQxZjQwMGU0NDQxLi5jZmU3YTBlYjNiZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAg
IGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRl
X2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5p
bXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJy
YXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAtODksNyArODksNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQt
ZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENs
aWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwot
ICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBs
ZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxl
bWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBVU0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJz
LndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBhcHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZh
dWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0g
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsgZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRp
b25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsg
Z19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAKICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNl
cnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVy
QWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4ODRkYWRjYjEuLjg2NGQwZTM2ZmI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bv
b2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBsYXVuY2hPcHRp
b25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJv
Y2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiAKICAg
ICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkgewogICAgICAgICBXZWJzaXRl
RGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CmluZGV4IDA3YzIxN2M3ZDZhOS4uNjI2OWNjNGQyODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMzAsOSAr
MzAsOSBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndlYmtpdGd0ayJfcwogI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid3BlIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIl9zCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBD
bGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5o
YXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9m
VGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25l
d19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRh
LmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFy
YWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkg
ewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURh
dGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRl
bnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQ
YXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5n
ZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmll
dzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXpl
KHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdl
LT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3Jl
YXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IElu
aXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1
dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3Bw
CmluZGV4IDQ1MmNmMGNjOGM3YS4uMzM4NGZhMjU4YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0
b3JDbGllbnRXUEUuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGlu
dGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiBzdGF0aWMgdm9p
ZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25z
dCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgU3RyaW5nIGNv
bW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5k
TmFtZSB7IGludGVycHJldEtleUV2ZW50KGV2ZW50KSB9OwogCiAgICAgaWYgKCFjb21tYW5kTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFt
ZSkuZXhlY3V0ZSgpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleVBy
ZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3JtS2V5
CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUtleURvd24oRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50
JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikKIHsKLSAgICBTdHJpbmcgY29t
bWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1hbmRO
YW1lIHsgaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAgICAgaWYgKGNvbW1hbmROYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2YjMyMmEwOTYwZi4uYTJlMWMxMzE1MDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1Miw3
ICszODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBK
YXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJf
cywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkK
LSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRp
bmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
biBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcx
YzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9p
ZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIs
Ci0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3Ms
ICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAw
NTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAg
ICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIi
LCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAg
ICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5Iiwg
NzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJV
KzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJL
ZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAg
InUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQ
YWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJ
T1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0g
ICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAi
MTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApp
bmRleCBiYjUxMmFlYzM0NTAuLjc2NDQzYTk0MjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQo
JmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5m
b3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0K
QEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRl
bnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNl
ciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQg
Y29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBN
YWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAg
ICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
aW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRp
YVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNj
cmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVy
VmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkp
OworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQs
IGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5s
aW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
R3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
NWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lk
KV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBk
Njg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVm
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5h
YmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250
RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5
YTExLi5jMjkwZGFlMzc5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Fj
Y2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJh
c2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKICAgICBBU1NFUlRfQVJH
KG9iaiwgb2JqKTsKICAgICBtX29iamVjdC0+c2V0V3JhcHBlcih0aGlzKTsKICAgICArK2dDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNz
aWJsZUJhc2U6On5BY2Nlc3NpYmxlQmFzZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNl
KiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBIV05EIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGlj
dGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCA5YTFmMDExMjIxYmMuLmE1YzA3ZWI5MTJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFn
LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6fkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCmluZGV4IDFhODBjNGQ2ZThl
Mi4uMzAyZjYzN2FiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsK
ICAgICBIYXNoU2V0PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVn
aW4oKTsKICAgICBmb3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgq
aSktPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1
bHRQb2xpY3lEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwCmluZGV4IGU4ZTVmNWM0Y2MxMS4uMWZhOGMzNTRkZmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKQEAg
LTQzLDEzICs0MywxMyBAQCB0eXBlZGVmIGVudW0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZSB7CiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlOjp+RGVmYXVsdFBvbGljeURlbGVnYXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
RGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJE
ZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGUqIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiLi45ZGE1OTYwNTY0YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzUsMTMgKzM1LDEz
IEBAIE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIE1lbW9yeVN0cmVhbTo6
fk1lbW9yeVN0cmVhbSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCA2
Zjc1N2IzODZkMTUuLmU5N2M0MTMyNDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBhY3Rpb24sIFJlZlB0CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWci
X3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
QWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFj
dGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApp
bmRleCA4ZjI3MTYyYmJhZjEuLmYzMTAyZTUyNjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBXZWJB
cHBsaWNhdGlvbkNhY2hlOjpXZWJBcHBsaWNhdGlvbkNhY2hlKCkKICAgICA6IG1fcmVmQ291bnQo
MCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGlj
YXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5XZWJBcHBsaWNhdGlv
bkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTgxLDcgKzgxLDcgQEAgc3Rh
dGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlJiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKCkKIHsKLSAgICBzdGF0
aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIiku
bGVha1JlZigpOworICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzdG9yYWdlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3Njcu
LjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAg
LTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiX3Mp
OwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0YWMyZDI4MTA0Li4xMTZhYTQy
MDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJk
TGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tG
b3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNr
Rm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJk
TGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgp
CkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExp
c3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRl
ODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUu
Y3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDYWNo
ZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUi
X3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGUqIFdlYkNhY2hlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li5mMTMxNmRlNDZjMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTQ4LDEzICs0OCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0aXN0aWNzOjpXZWJDb3JlU3Rh
dGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJD
b3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzOjp+V2ViQ29yZVN0YXRp
c3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljcyogV2ViQ29yZVN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFdl
YkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyhfQ09N
X091dHB0cl9vcHRfCiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgp
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJh
dG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7
ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJl
bnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5r
ZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3Vs
dHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3Vu
dE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdE9iamVj
dFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHkKICAgICBJdGVyYXRvciBlbmQg
PSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gdHlw
ZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAgICBD
T01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50
Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8o
dHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTI5NiwxMyArMjk2LDEzIEBAIEhSRVNVTFQgV2ViQ29y
ZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHlC
YWcqKiBzdGF0CiAgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9
IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZmllbGRzOwotICAgIGZpZWxk
cy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcykpOwotICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7Ci0g
ICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKLSAg
ICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiLCBoZWFwU2l6ZSk7Ci0gICAgZmllbGRz
LmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIiwgaGVhcEZyZWUpOwotICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRTdGFja1NpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SklU
U2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
SklUQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIl9z
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJl
c2VydmVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5
dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0
aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxp
c3RCeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBT
aXplIl9zLCBoZWFwU2l6ZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIl9z
LCBoZWFwRnJlZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNrU2l6ZSJfcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiX3MsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpKTsKIAogICAgICpz
dGF0aXN0aWNzID0gQ09NUHJvcGVydHlCYWc8dW5zaWduZWQgbG9uZyBsb25nLCBTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD46OmFkb3B0KGZpZWxkcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDIxMTU5OGQzOWE2YS4uYjlmNDEwOTM1OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRD
b21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGUsIEtleWJvYXJkRXZlbnQqIGtlKQogICAgICAgICBp
ZiAoZG9tRWxlbWVudCkgewogICAgICAgICAgICAgSURPTUhUTUxJbnB1dEVsZW1lbnQqIGRvbUlu
cHV0RWxlbWVudDsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZG9tRWxlbWVudC0+UXVlcnlJ
bnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCAodm9pZCoqKSZkb21JbnB1dEVsZW1l
bnQpKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kID0gbV93ZWJWaWV3LT5pbnRl
cnByZXRLZXlFdmVudChrZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgeyBtX3dl
YlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKSB9OwogICAgICAgICAgICAgICAgIC8vIFdlIGFs
bG93IGVtcHR5IGNvbW1hbmRzIGhlcmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUgYWN0dWFsbHkgZGVw
ZW5kcyBvbiB0aGlzIGJlaW5nIGNhbGxlZCBmb3IgYWxsIGtleSBwcmVzc2VzLgogICAgICAgICAg
ICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gc2VuZCBhbiBlbXB0eSBjb21tYW5kLgogICAgICAg
ICAgICAgICAgIGZvcm1EZWxlZ2F0ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9tSW5wdXRFbGVtZW50
LCBCU3RyaW5nKGNvbW1hbmQpLCBraXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgJnJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDll
ZmI3OS4uZjc4YzFiZDJhODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXZWJEYXRhU291cmNlOjpXZWJEYXRhU291cmNlKFdl
YkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50Kys7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3Vy
Y2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiX3MpOwogfQog
CiBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRh
dGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKICAgICAgICAgbV9sb2FkZXItPmRldGFjaERhdGFT
b3VyY2UoKTsKICAgICBXZWJEYXRhU291cmNlQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3Vy
Y2UqIFdlYkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApp
bmRleCA2NzY3NzIwMzE1YzMuLjhmMzc2NTQxMjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBXZWJE
YXRhYmFzZU1hbmFnZXIqIFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIFdl
YkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTJkMGZhNzJjZDZmLi4yNTZhMzU4ODA3
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNo
ZWREYXRhU291cmNlKDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1l
bnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3Vt
ZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExv
YWRlciJfcyk7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0
YWNoZWREYXRhU291cmNlKTsKICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2Li45OTQ2
OTA0NTUxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJEb3dubG9hZDo6V2ViRG93
bmxvYWQoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQi
X3MpOwogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTYxLDcgKzYxLDcgQEAg
V2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBEZXN0cm95aW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBjYW5jZWwoKTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxv
YWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIl9zKTsKIH0K
IAogV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDE4MTBhNjY4NTgxOC4u
ZmM2NGI5YmM5OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYSBVUkwgb3IgZGVzY3JpcHRpb24gZm9yIHRo
aXMgZXJyb3IgY29kZT8KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
IiIpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwg
V2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICBDT01QdHI8V2ViRXJyb3I+IHdlYkVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6
Y3JlYXRlSW5zdGFuY2UoZXJyb3IpKTsKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9y
KHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRHJvcFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9w
U291cmNlLmNwcAppbmRleCA2YmFiZjkwYjg5ZmEuLjViMWM1ZGZjN2U4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJE
cm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJv
cFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNv
dXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSJfcyk7
CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDhhZmJhMGY2
ZDUzYS4uYzYxZjE3MmQ0N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFbGVtZW50UHJv
cGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiAgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1l
bnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnOjp+V2ViRWxlbWVudFBy
b3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCmluZGV4IDE5
ZGUzNzFiZWExYy4uNzE2MTIxOTIzM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3Iu
Y3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRXJyb3I6OldlYkVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQogICAgICwgbV9lcnJvcihlcnJv
cikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIl9zKTsKIH0KIAog
V2ViRXJyb3I6On5XZWJFcnJvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yKiBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNTk0OGIwZWM1YjgwLi4wN2JkNDZm
Yzk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsyNDMs
NyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewogICAgIFdlYkZyYW1lQ291bnQrKzsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6On5X
ZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAgV2ViRnJhbWU6On5XZWJGcmFtZSgpCiAgICAg
ZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZSogV2ViRnJhbWU6OmNyZWF0
ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeQog
ewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVU
eXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4
dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIl9zOwogCiAgICAg
U3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0
RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
IikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxl
Y3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDIuLjk0NDY4YmI3M2QwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTM5
LDEzICszOSwxMyBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1l
UG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp+V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IGRhNGMyMjc3OTZiNy4u
Njg5MmY3NzFhZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoUmVm
UHRyPEdlb2xvY2F0aW9uPiYmCiAgICAgLCBtX2dlb2xvY2F0aW9uKFdURk1vdmUoZ2VvbG9jYXRp
b24pKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcjo6fldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNw
cAppbmRleCA5MjRjNDhiMTNjNDEuLmZmMWZkOTBjNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTM2LDEzICszNiwx
MyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggNDZhYWFl
OTdkN2JiLi44NmEzY2I2ZGFhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50YXRpb246
On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQpAQCAtNTQsNyArNTQsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQogCiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50
YXRpb24qIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoV2ViRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAzZjFlYjZkNzM4
YmQuLjUwYThlNWY2YmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBDT01QdHI8SVByb3BlcnR5QmFnPiBjcmVh
dGVVc2VySW5mb0Zyb21IaXN0b3J5SXRlbShCU1RSIG5vdGlmaWNhdGkKIFdlYkhpc3Rvcnk6Oldl
Ykhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5
Il9zKTsKIAogICAgIG1fcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRh
cmRQcmVmZXJlbmNlcygpOwogfQpAQCAtOTcsNyArOTcsNyBAQCBXZWJIaXN0b3J5OjpXZWJIaXN0
b3J5KCkKIFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSJfcyk7CiB9CiAKIFdlYkhpc3RvcnkqIFdlYkhp
c3Rvcnk6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcAppbmRleCBmYjg4ZTM5ZTdiNTYuLjhkZDliZGFhYTI4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJI
aXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJ
dGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwg
dGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJ
dGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCkBAIC02Miw3
ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQogICAgIGhpc3RvcnlJ
dGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7CiAKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAog
V2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCBmNjIxOWE2NmRhYTkuLjQ0N2Q5
MmEzYTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCkBAIC01
MSwxMyArNTEsMTMgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWMKICAgICBBU1NFUlRfQVJHKGlu
c3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yOjp+V2Vi
SW5zcGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogV2ViSW5z
cGVjdG9yOjpmcm9udGVuZENsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCmluZGV4IGM4ZTRiZThhYzIxYi4uNzU4NjYyNzJk
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxlY3RvcigpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRD
b2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRDb2xs
ZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjp+V2ViSmF2YVNjcmlwdENv
bGxlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAppbmRleCBjZTg2MjBm
ZDRiZDcuLjZlZTA3MjUzMmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAgV2ViS2l0Q2xhc3NGYWN0b3J5
OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiAgICAgV2ViQ29yZTo6cG9w
dWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBXZWJLaXRDbGFzc0ZhY3Rvcnk6
On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1l
c3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29w
LmNwcAppbmRleCA5MzdhNjY2OWU5MDguLmU2OWMwYzgwODk4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBX
ZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJL
aXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAog
V2ViS2l0TWVzc2FnZUxvb3AqIFdlYktpdE1lc3NhZ2VMb29wOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCmluZGV4IDEyNjNi
YzBjMTFmOS4uZjUxNTFjYmUwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRTdGF0aXN0aWNzLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIGludCBXZWJGcmFtZVZpZXdDb3Vu
dDsKIFdlYktpdFN0YXRpc3RpY3M6OldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljczo6fldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljcyogV2ViS2l0U3RhdGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDVj
OTEyNTc3MjUyNi4uMjQ0MTA2Njg4Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0YWJsZSkKICAgICA6IG1f
aXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogV2ViTXV0YWJsZVVSTFJl
cXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC05Myw3ICs5
Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6fldl
Yk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogLy8gSVVua25v
d24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2
aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNi4uNmE5MzNhYmI1Zjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC03MiwxMyArNzIsMTMgQEAg
V2ViTmF2aWdhdGlvbkRhdGE6OldlYk5hdmlnYXRpb25EYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBJV2UKIAogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0
YTo6fldlYk5hdmlnYXRpb25EYXRhKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlv
bkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVhdGVJbnN0YW5jZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJVUkxS
ZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIGNvbnN0IFN0cmluZyYg
Y2xpZW50UmVkaXJlY3RTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uLmNwcAppbmRleCBmNTNiYjcyNjM1M2YuLjk0OTI1NmVlODAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKEJTVFIgbmFtZSwgSVVua25vd24qIGFuT2Jq
ZWN0LCBJUHJvcGVydHlCYWcqIHVzCiAgICAgICAgIG1fdXNlckluZm8tPkFkZFJlZigpOwogCiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIl9zKTsK
IH0KIAogV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKICAgICAgICAgbV91c2VySW5m
by0+UmVsZWFzZSgpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViTm90aWZpY2F0aW9uIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uKiBXZWJOb3RpZmlj
YXRpb246OmNyZWF0ZUluc3RhbmNlKEJTVFIgbmFtZSAvKj0wKi8sIElVbmtub3duKiBhbk9iamVj
dCAvKj0wKi8sIElQcm9wZXJ0eUJhZyogdXNlckluZm8gLyo9MCovKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggOTI1MzJkYmRj
YTQxLi42Y2Q4ODQyZTdhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFrZVVuaXF1ZTxXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNl
bnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWMuLmZiMTczZGQ1YzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgV2Vi
UHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCkK
IFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2Vz
Ojp+V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlcyogV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJlc291cmNl
OjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2U6
On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQxMjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEz
ICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAK
IFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8g
SVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29y
bGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBX
ZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3
b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICAr
K2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAog
V2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dv
cmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6
OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyArNDksMTMg
QEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3Vy
aXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdp
biJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4oKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1
cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4YmI4MGEy
ZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkK
IHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vy
aWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVk
SlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Ny4u
MDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJl
cjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJf
cyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsK
IH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmlu
ZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCkBAIC00
NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2VuZGVyKHNl
bmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4uNTA5OWJh
MGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMg
QEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsK
IH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVu
dGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlh
bCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25T
cGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEzICszNywx
MyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFj
ZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAog
V2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZUluc3Rh
bmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBh
NWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2Nh
bGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVS
TFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2Vi
VVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwog
ICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApp
bmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7
CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVy
bigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4uZTU1YTI0
MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcgKzQ0Niw3
IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygp
CkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2ViVmlld0Nv
dW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciX3MpOwog
fQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDExICsxOTk1
LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8q
bFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAg
ICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBV
bmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5l
eGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5k
byJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2ViVmlldzo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUo
KSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5
RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8g
V2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNp
ZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRp
dG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VMVCBXZWJW
aWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgp
OworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0Il9zKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5
VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIi
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIGVtcHR5
U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRl
bGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgpOwogICAg
IHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29y
a2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSAr
OTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0
YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwog
fQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9z
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGNmN2I3ODliMzVlYS4uZTE5NjY4Y2NkNzQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMDQsNyArMTEwNCw3IEBAIHN0YXRpYyB2b2lkIHNp
emVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJh
Y2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJh
Y2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhU
b0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChw
YXRoT3JVcmwpKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAo
IV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyBTdHJpbmcg
ZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAKICAgICBTdHJpbmcgcGF0
aFRvQ2hlY2sgPSBmdWxsUGF0aDsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVz
dHMgPSAiTGF5b3V0VGVzdHMiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMg
PSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9u
IHRoZSBjdXJyZW50IHBhdGg6CiAgICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmlu
ZChsYXlvdXRUZXN0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZmYmEwMGI4MDIxYS4uZTgwNzA3
NGY0Y2M1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UFBhcnNlcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQ
UGFyc2Vycy5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAjaWYgVVNFKEdMSUIpCiBURVNUKEhUVFBQ
YXJzZXJzLCBWYWxpZGF0ZVVzZXJBZ2VudFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCIpKTsKLSAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIikp
OwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEw
LjAgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2Ug
R2Vja28pIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkpIikpOwotICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
bGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmlj
IHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFy
YWN0ZXIgdG9rZW4pIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCJf
cykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbyki
X3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChs
ZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJp
YyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xl
IGNoYXJhY3RlciB0b2tlbikiX3MpKTsKIAotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIiAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRl
c3BhY2UpICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8g
dmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVu
ZWQgY29tbWFuZW50KSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRl
ZCBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3Qg
dG9rZW4pIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IiAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIg
U2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFy
aSAobGVhZGluZyBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNp
b24gdG9rZW4gYWZ0ZXIgc2xhc2gpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5l
ZCBjb21tYW5lbnQpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIl9zKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1i
ZWRlZCBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIl9zKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBw
cm9kdWN0IHRva2VuKSJfcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYjAxMTI4YjI2YjFjLi4w
N2E0NWUwZWY0MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBjb3B5SXNDb250aWd1b3VzKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQs
IHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSAp
IHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxT
dHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQor
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAi
XHJcbiJfcywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRh
KCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmlu
Z1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTQ3NywzMiArNDc3LDMy
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKICAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0
aGVyZSAiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImkiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzMVdpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGkiLCAicyBp
IiwgInMgdGhlIG1vc3QgcmkiLCAiZGkiLCAiY3Vsb3VzIGhpIiwgInN0b3J5IHRoZXJlIGkiLCAi
cy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIs
IHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImki
X3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVj
dGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRoU2Vw
YXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFy
KiBjb25zdCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICIgIiwg
IiB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAidG9yeSB0aGVyZSAiLCAiLiIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIpOworICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAg
ICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MyV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMiLCAiIHRoZSBtb3N0IHJpZGljdWxv
dXMgaGlzIiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3Mu
Y2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MzV2l0aG91
dFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAib3J5IHRo
ZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpc3QiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
c3QiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzM1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIGlzIHRo
ZSBtb3N0IHJpZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUgaXMuIiB9OwotICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIsIHRydWUpOworICAgICAgICBy
ZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJfcywgdHJ1ZSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MzV2l0aFNl
cGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC01NTcsMTIgKzU1NywxMiBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0
aG91dFNlcGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNo
dW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ci
KTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3Mp
OwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtz
V2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRv
cikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29u
c3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJkb2ciIH07Ci0gICAgICAgIHJl
YWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIiwgdHJ1ZSk7CisgICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIl9zLCB0cnVlKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fQogCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAi
QmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIgfTsKICAgICAgICAgc3RkOjp2ZWN0
b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyLCAiY2F0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiY2F0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBl
eHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dp
dGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcltdID0geyAiQmVhdWNv
dXAgZGUgY2hhdHMgY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiwgImNhdCIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiLCB0cnVlKTsKKyAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiX3MsIHRydWUpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0
aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAg
ICB9CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA1ZjkyNTMyNzkxYTQuLjJkZDdlNGFlN2EwMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJr
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1
aXJrcy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29u
c3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKFVSTCggU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVh
U3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIAogc3Rh
dGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25z
dCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2Vy
QWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfRkFMU0UodWFT
dHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAKIHN0
YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoY29uc3Qg
Y2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJp
bmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250
YWlucygiTWFjIE9TIFgiKSk7CkBAIC03MiwxNCArNzIsMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiAvLyB0
aGF0IHRoZSBzdGFuZGFyZCB1c2VyIGFnZW50IHNob3VsZCBiZSB1c2VkLikKIHN0YXRpYyB2b2lk
IGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0VtcHR5UXVpcmsoY29uc3QgY2hhciogdXJsKQogewot
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVy
bCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChT
dHJpbmcgeyB1cmwgfSkpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5pc051bGwoKSk7CiB9
CiAKIFRFU1QoVXNlckFnZW50VGVzdCwgUXVpcmtzKQogewogICAgIC8vIEEgc2l0ZSB3aXRoIG5v
IHF1aXJrcyBzaG91bGQgcmV0dXJuIGEgbnVsbCBTdHJpbmcuCi0gICAgU3RyaW5nIHVhU3RyaW5n
ID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgImh0dHA6Ly93d3cud2Via2l0Lm9y
Zy8iKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIl9zKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
aXNOdWxsKCkpOwogCiAgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1
aXJrKCJodHRwOi8vdHlwZWtpdC5jb20vIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMw
YzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQs
NyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3Vi
RnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNs
YXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFT
Q0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsK
IAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5
bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5
bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0g
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
Il9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3Mg
fSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjks
MTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRo
U2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0g
c2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7
ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRp
YXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9u
OiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
Ci1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQp
ID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVu
Y3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1l
c3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcp
OwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5n
IGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBv
cnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkK
ICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21h
aW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7
IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3
aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4
IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMx
Nyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVu
dHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJF
UShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlz
c2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0Ui
X3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hl
Y2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQog
ICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5
NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZy
YW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0
ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+
PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0Mi
OworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlz
c2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQg
fSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4
NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
MTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAg
ICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0
aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVu
dGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQp
dXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250
ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBA
QCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihy
ZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5C
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7
CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUg
c3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
OworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUg
PSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7
ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5
NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBm
YWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsK
KyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1s
Il9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3Mg
fSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwog
CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENv
bnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
IHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwi
X3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwi
X3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9
IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhk
YmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERl
bGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJB
ZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9z
LCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1MWZl
Li4yZjE5NTJjMjk4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyAr
MTkyLDcgQEAgcHVibGljOgogICAgICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxz
ZTsKICAgICAgICAgbV9tZXNzYWdlID0gQ1N0cmluZygpOwogICAgICAgICBhdXRvIHNpZ25hbElE
ID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExC
QUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRv
QmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9C
YWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MpOwogICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdl
YlZpZXdXYXNDYWxsZWQpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9j
cmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdl
ID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Np
b24sICJjcmVhdGUtd2ViLXZpZXc6OndpbmRvdyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0lu
V2luZG93Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNy
ZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0i
KTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJf
cywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFp
bl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1f
Y3JlYXRlV2ViVmlld0luV2luZG93V2FzQ2FsbGVkKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld0luVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAg
ICAgIG1fbWVzc2FnZSA9IHsgfTsKICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nv
bm5lY3QobV9zZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0
ZVdlYlZpZXdJblRhYkNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFi
XCJ9Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRl
eHQiX3MsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZSht
X2NyZWF0ZVdlYlZpZXdJblRhYldhc0NhbGxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCmluZGV4IGYwYmQ4
NjY1ZjcwYS4uMjgwMzQxMTQwZjAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcApAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OnJ1bihTb3VwU2VydmVyQ2FsbGJhY2sgc2VydmVyQ2Fs
bGJhY2spCiAKIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxlcihTb3Vw
U2VydmVyV2Vic29ja2V0Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewot
ICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyIpOwor
ICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyJfcyk7
CiAgICAgbV9iYXNlV2ViU29ja2V0VVJMLnNldFByb3RvY29sKG1fYmFzZVdlYlNvY2tldFVSTC5w
cm90b2NvbElzKCJodHRwIikgPyAid3MiIDogIndzcyIpOwogCiAgICAgaWYgKG1fcXVldWUpIHsK
QEAgLTEwMSwxMiArMTAxLDEyIEBAIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29j
a2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAogewogICAgIGdfYXNzZXJ0X2Zh
bHNlKG1fYmFzZVdlYlNvY2tldFVSTC5pc051bGwoKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShwYXRo
ICYmICpwYXRoID09ICcvJyk7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIHBh
dGggKyAxKS5zdHJpbmcoKS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGluZyBzbGFzaC4KKyAg
ICByZXR1cm4gVVJMKG1fYmFzZVdlYlNvY2tldFVSTCwgU3RyaW5nIHsgcGF0aCArIDEgfSkuc3Ry
aW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCiB9CiAKIENTdHJpbmcg
V2ViS2l0VGVzdFNlcnZlcjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAog
ewotICAgIHJldHVybiBVUkwobV9iYXNlVVJMLCBwYXRoKS5zdHJpbmcoKS51dGY4KCk7CisgICAg
cmV0dXJuIFVSTChtX2Jhc2VVUkwsIFN0cmluZyB7IHBhdGggfSkuc3RyaW5nKCkudXRmOCgpOwog
fQogCiB1bnNpZ25lZCBXZWJLaXRUZXN0U2VydmVyOjpwb3J0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3
OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1By
ZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRy
PFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0
aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1
bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXpl
TWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9w
dGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRB
UEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xh
c3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9
IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9
IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3Njgp
KQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3Njgp
KQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29u
dGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAg
ICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJv
KTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFn
ZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRl
c3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRD
b250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAg
ICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVz
ZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVF
MTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURl
c2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAg
ICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNw
aS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCmlu
ZGV4IDhjZDIyZTRkMzcyYS4uZTlmOGJkMDFhOGVjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNw
aS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBAIC0zOTgsMTggKzM5OCwxOCBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZQogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7
CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYUGxhY2Vob2xkZXJWYWx1ZSIpCi0gICAgICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0
IikpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
YXR0cmlidXRlcy5nZXQoInBsYWNlaG9sZGVyLXRleHQiX3MpKS5sZWFrUmVmKCk7CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW52YWxpZCIpIHsKICAgICAgICAgYXV0byB0ZXh0QXR0cmli
dXRlcyA9IG1fZWxlbWVudC0+dGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHRleHRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMuZ2V0KCJpbnZhbGlkIik7CisgICAgICAgIGF1dG8g
dmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxpZCJfcyk7CiAgICAg
ICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVu
dFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50
cnkpID8gInRydWUiIDogImZhbHNlIjsKICAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUg
PT0gIkFYQVJJQUxpdmUiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFx
dWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIl9zKSkubGVha1JlZigp
OwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSZWxldmFudCIpCi0gICAgICAgIHJl
dHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCIp
KS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0
dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCJfcykpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogfQpAQCAtNDIwLDIxICs0MjAs
MjEgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAg
IGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikKLSAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuZ2V0KCJzZXRzaXplIl9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicG9z
aW5zZXQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInBvc2lu
c2V0Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1
bW5Db3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sY291bnQiKS50b0Rv
dWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGNvdW50Il9zKS50b0Rv
dWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dDb3VudCIpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93Y291bnQiKS50b0RvdWJsZSgpOworICAgICAg
ICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50Il9zKS50b0RvdWJsZSgpOwogICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1bW5JbmRleCIpCi0gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVzLmdldCgiY29saW5kZXgiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0
cmlidXRlcy5nZXQoImNvbGluZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEFSSUFSb3dJbmRleCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgi
cm93aW5kZXgiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJv
d2luZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFD
b2x1bW5TcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xzcGFuIikudG9E
b3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xzcGFuIl9zKS50b0Rv
dWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dTcGFuIikKLSAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIikudG9Eb3VibGUoKTsKKyAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIl9zKS50b0RvdWJsZSgpOwogCiAgICAgcmV0
dXJuIDA7CiB9CkBAIC00NDIsNyArNDQyLDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjdXJyZW50U3RhdGVWYWx1
ZSgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBh
dXRvIHZhbHVlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjdXJyZW50Iik7CisgICAg
YXV0byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCJfcyk7CiAg
ICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVlLmlzTnVsbCgpID8gdmFs
dWUgOiAiZmFsc2UiKS5sZWFrUmVmKCk7CiB9CiAKQEAgLTUxNCw3ICs1MTQsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW50ZXJmYWNlVGFibGVDZWxsIikK
ICAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+aW50ZXJmYWNlcygpLmNvbnRhaW5zKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJmYWNlOjpUYWJsZUNlbGwpOwogICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMiKQotICAgICAgICByZXR1cm4gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiKSA9PSAidHJ1ZSI7CisgICAgICAgIHJldHVy
biBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImF0b21pYyJfcykgPT0gInRydWUiOwogCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTM2LDcgKzUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5h
dHRyaWJ1dGVzKCk7Ci0gICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1dGVzLmdldCgicmVh
ZG9ubHkiKTsKKyAgICBTdHJpbmcgaXNSZWFkT25seSA9IGF0dHJpYnV0ZXMuZ2V0KCJyZWFkb25s
eSJfcyk7CiAgICAgaWYgKCFpc1JlYWRPbmx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGlz
UmVhZE9ubHkgPT0gInRydWUiID8gZmFsc2UgOiB0cnVlOwogCkBAIC01NzMsMTcgKzU3MywxNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwog
ICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZXMuY29udGFpbnMoInNldHNpemUiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFp
bnMoInNldHNpemUiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFQb3NJblNl
dCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJwb3NpbnNldCIpOworICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicG9zaW5zZXQiX3MpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikgewotICAgICAgICBhdXRvIHZhbHVlID0gYXR0
cmlidXRlcy5nZXQoImxpdmUiKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0
KCJsaXZlIl9zKTsKICAgICAgICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgdmFsdWUgIT0g
Im9mZiI7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSZWxldmFudCIp
Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJyZWxldmFudCIpOworICAgICAg
ICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVsZXZhbnQiX3MpOwogICAgIGlmIChhdHRy
aWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5j
b250YWlucygiYXRvbWljIik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJh
dG9taWMiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEVsZW1lbnRCdXN5IikKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTU5OCwyNyArNTk4LDI3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRl
TmFtZXMoKQogc3RhdGljIFN0cmluZyB4bWxSb2xlVmFsdWVTdHJpbmcoY29uc3QgU3RyaW5nJiB4
bWxSb2xlcykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHJlZ2lvblJvbGVzID0gSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oewotICAgICAgICAiZG9jLWFja25vd2xlZGdtZW50cyIs
Ci0gICAgICAgICJkb2MtYWZ0ZXJ3b3JkIiwKLSAgICAgICAgImRvYy1hcHBlbmRpeCIsCi0gICAg
ICAgICJkb2MtYmlibGlvZ3JhcGh5IiwKLSAgICAgICAgImRvYy1jaGFwdGVyIiwKLSAgICAgICAg
ImRvYy1jb25jbHVzaW9uIiwKLSAgICAgICAgImRvYy1jcmVkaXRzIiwKLSAgICAgICAgImRvYy1l
bmRub3RlcyIsCi0gICAgICAgICJkb2MtZXBpbG9ndWUiLAotICAgICAgICAiZG9jLWVycmF0YSIs
Ci0gICAgICAgICJkb2MtZm9yZXdvcmQiLAotICAgICAgICAiZG9jLWdsb3NzYXJ5IiwKLSAgICAg
ICAgImRvYy1nbG9zc3JlZiIsCi0gICAgICAgICJkb2MtaW5kZXgiLAotICAgICAgICAiZG9jLWlu
dHJvZHVjdGlvbiIsCi0gICAgICAgICJkb2MtcGFnZWxpc3QiLAotICAgICAgICAiZG9jLXBhcnQi
LAotICAgICAgICAiZG9jLXByZWZhY2UiLAotICAgICAgICAiZG9jLXByb2xvZ3VlIiwKLSAgICAg
ICAgImRvYy10b2MiLAotICAgICAgICAicmVnaW9uIgorICAgICAgICAiZG9jLWFja25vd2xlZGdt
ZW50cyJfcywKKyAgICAgICAgImRvYy1hZnRlcndvcmQiX3MsCisgICAgICAgICJkb2MtYXBwZW5k
aXgiX3MsCisgICAgICAgICJkb2MtYmlibGlvZ3JhcGh5Il9zLAorICAgICAgICAiZG9jLWNoYXB0
ZXIiX3MsCisgICAgICAgICJkb2MtY29uY2x1c2lvbiJfcywKKyAgICAgICAgImRvYy1jcmVkaXRz
Il9zLAorICAgICAgICAiZG9jLWVuZG5vdGVzIl9zLAorICAgICAgICAiZG9jLWVwaWxvZ3VlIl9z
LAorICAgICAgICAiZG9jLWVycmF0YSJfcywKKyAgICAgICAgImRvYy1mb3Jld29yZCJfcywKKyAg
ICAgICAgImRvYy1nbG9zc2FyeSJfcywKKyAgICAgICAgImRvYy1nbG9zc3JlZiJfcywKKyAgICAg
ICAgImRvYy1pbmRleCJfcywKKyAgICAgICAgImRvYy1pbnRyb2R1Y3Rpb24iX3MsCisgICAgICAg
ICJkb2MtcGFnZWxpc3QiX3MsCisgICAgICAgICJkb2MtcGFydCJfcywKKyAgICAgICAgImRvYy1w
cmVmYWNlIl9zLAorICAgICAgICAiZG9jLXByb2xvZ3VlIl9zLAorICAgICAgICAiZG9jLXRvYyJf
cywKKyAgICAgICAgInJlZ2lvbiJfcwogICAgIH0pOwogCiAgICAgaWYgKHJlZ2lvblJvbGVzLT5j
b250YWlucyh4bWxSb2xlcykpCkBAIC03NjIsNyArNzYyLDcgQEAgc3RhdGljIFN0cmluZyByb2xl
VmFsdWVUb1N0cmluZyh1bnNpZ25lZCByb2xlVmFsdWUpCiAgICAgY2FzZSBXZWJDb3JlOjpBdHNw
aTo6Um9sZTo6U2Nyb2xsQmFyOgogICAgICAgICByZXR1cm4gIkFYU2Nyb2xsQmFyIl9zOwogICAg
IGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNjcm9sbFBhbmU6Ci0gICAgICAgIHJldHVybiAi
QVhTY3JvbGxBcmVhIjsKKyAgICAgICAgcmV0dXJuICJBWFNjcm9sbEFyZWEiX3M7CiAgICAgY2Fz
ZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2VjdGlvbjoKICAgICAgICAgcmV0dXJuICJBWFNlY3Rp
b24iX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2VwYXJhdG9yOgpAQCAtODE3
LDcgKzgxNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAg
IGF1dG8gcm9sZVZhbHVlID0gbV9lbGVtZW50LT5yb2xlKCk7Ci0gICAgYXV0byByb2xlVmFsdWVT
dHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkxhbmRtYXJrID8geG1s
Um9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgieG1sLXJvbGVzIikp
IDogcm9sZVZhbHVlVG9TdHJpbmcocm9sZVZhbHVlKTsKKyAgICBhdXRvIHJvbGVWYWx1ZVN0cmlu
ZyA9IHJvbGVWYWx1ZSA9PSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6TGFuZG1hcmsgPyB4bWxSb2xl
VmFsdWVTdHJpbmcobV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJ4bWwtcm9sZXMiX3MpKSA6
IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CiAgICAgaWYgKHJvbGVWYWx1ZVN0cmluZy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51
bGxwdHIsIDApOwogCkBAIC04MzIsMTQgKzgzMiwxNCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBt
X2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gcm9sZURlc2NyaXB0aW9u
ID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJyb2xlZGVzY3JpcHRpb24iKTsKKyAgICBh
dXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRl
c2NyaXB0aW9uIl9zKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtYWtl
U3RyaW5nKCJBWFJvbGVEZXNjcmlwdGlvbjogIiwgcm9sZURlc2NyaXB0aW9uKSkubGVha1JlZigp
OwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOwotICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0
KCJjb21wdXRlZC1yb2xlIik7CisgICAgYXV0byBjb21wdXRlZFJvbGUgPSBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKS5nZXQoImNvbXB1dGVkLXJvbGUiX3MpOwogICAgIGlmIChjb21wdXRlZFJvbGUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhu
dWxscHRyLCAwKTsKIApAQCAtOTcyLDcgKzk3Miw3IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiAKICAgICAvLyBDb25zaWRlciBoZWFkaW5ncyBhcyBh
biBzcGVjaWFsIGNhc2Ugd2hlbiByZXR1cm5pbmcgdGhlIGludCB2YWx1ZS4KICAgICBpZiAobV9l
bGVtZW50LT5yb2xlKCkgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkhlYWRpbmcpCi0gICAgICAg
IHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIikudG9Eb3VibGUoKTsK
KyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3MpLnRv
RG91YmxlKCk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTk5OSw3ICs5OTksNyBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlv
bigpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0
dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKLSAgICBhdXRvIHZhbHVlID0gbWFr
ZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0
IikpOworICAgIGF1dG8gdmFsdWUgPSBtYWtlU3RyaW5nKCJBWFZhbHVlRGVzY3JpcHRpb246ICIs
IGF0dHJpYnV0ZXMuZ2V0KCJ2YWx1ZXRleHQiX3MpKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJp
bmc6OnRyeUNyZWF0ZSh2YWx1ZSkubGVha1JlZigpOwogfQogCkBAIC0xMDc2LDcgKzEwNzYsNyBA
QCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiBp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogewog
ICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byBsZXZlbCA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiKTsKKyAgICBhdXRvIGxldmVsID0gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCJfcyk7CiAgICAgaWYgKGxldmVsLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEwOTEsMTMgKzEwOTEsMTMgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrQXMoKQogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKIHsKICAgICBt
X2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiKSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZWxlbWVu
dC0+YXR0cmlidXRlcygpLmdldCgiZ3JhYmJlZCJfcykgPT0gInRydWUiOwogfQogCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3Rz
KCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1
dG8gZHJvcEVmZmVjdHMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImRyb3BlZmZlY3Qi
KTsKKyAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJk
cm9wZWZmZWN0Il9zKTsKICAgICBpZiAoZHJvcEVmZmVjdHMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKICAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShkcm9wRWZmZWN0cykubGVha1JlZigpOwpAQCAt
MTQyOSw3ICsxNDI5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIAogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFj
a2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVt
ZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiRW5jb2RpbmciKSkubGVha1JlZigpOworICAgIHJldHVy
biBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUo
IkVuY29kaW5nIl9zKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQpAQCAtMTQzOCw3ICsxNDM4LDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3Vt
ZW50VVJJKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVs
bHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJl
dHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1
dGUoIlVSSSIpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiVVJJIl9zKSkubGVha1JlZigpOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMx
YWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMsNyArOTMs
NyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFjdFBvaW50
ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZU1heFR5
cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8
U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29sIHsgJmFu
OEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3
LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9z
KTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484835"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456517</attachid>
            <date>2022-04-03 14:43:30 -0700</date>
            <delta_ts>2022-04-03 14:55:26 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>334251</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5hOGIxZDIwZDY2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKaW5kZXggYTI2MzA4ODU3M2NmLi5iNjY0MzcxM2Y1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwogCiAgICAgLy8gU2V0
dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdl
R3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50IHRvIGdldCBu
b3RpZmllZCBvZiBwYWdlIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlX
aW4uY3BwCmluZGV4IDdkN2I4MDQ3N2JkYy4uYTFjNjhlNDIwZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBMUkVTVUxU
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6Om9uQ2xvc2UoKQogCiBXZWJQYWdlUHJveHkqIFJl
bW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICBwcmVmZXJlbmNl
cy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogCiAjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggZjQwMGQ1
ZTczNzE5Li4xYTE5MTU1NWY5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkp
OwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7
CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8g
aW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2lu
ZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA5ZDNmOThhMzQ5NDAuLmUyZjk3MTMy
NTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9C
dWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGVudW0g
Y2xhc3MgQmluZEZsYWdzIHsKIAogc3RhdGljIHZvaWQgYmluZFN5bWxpbmtzUmVhbFBhdGgoVmVj
dG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBiaW5kT3B0
aW9uID0gIi0tcm8tYmluZCIpCiB7Ci0gICAgV1RGOjpTdHJpbmcgcmVhbFBhdGggPSBGaWxlU3lz
dGVtOjpyZWFsUGF0aChwYXRoKTsKKyAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0
ZW06OnJlYWxQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGlmIChwYXRoICE9IHJl
YWxQYXRoKSB7CiAgICAgICAgIENTdHJpbmcgcnBhdGggPSByZWFsUGF0aC51dGY4KCk7CiAgICAg
ICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7IGJpbmRPcHRpb24sIHJwYXRo
LmRhdGEoKSwgcnBhdGguZGF0YSgpIH0pKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBHUmVmUHRyPEdT
dWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIs
IGNvbnN0IFByb2NlcwogCiAgICAgICAgIGFkZEV4dHJhUGF0aHMobGF1bmNoT3B0aW9ucy5leHRy
YVNhbmRib3hQYXRocywgc2FuZGJveEFyZ3MpOwogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4
dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IiwgIm1lZGlhS2V5c0RpcmVj
dG9yeSIsICJ3YXlsYW5kU29ja2V0IiwgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5IiB9OworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSJfcywgIm1lZGlhS2V5c0RpcmVjdG9yeSJfcywgIndheWxhbmRTb2NrZXQiX3MsICJ3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSJfcyB9OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBleHRyYVBhdGhzKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXh0cmFQYXRoID0gbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQocGF0aCk7CiAgICAgICAgICAgICBpZiAo
IWV4dHJhUGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7
CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggMGQxZjQwMGU0NDQxLi5jZmU3YTBlYjNiZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAg
IGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRl
X2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5p
bXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJy
YXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAtODksNyArODksNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQt
ZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENs
aWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwot
ICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBs
ZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxl
bWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBVU0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJz
LndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBhcHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZh
dWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0g
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsgZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRp
b25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsg
Z19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAKICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNl
cnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVy
QWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4ODRkYWRjYjEuLjg2NGQwZTM2ZmI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bv
b2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBsYXVuY2hPcHRp
b25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJv
Y2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiAKICAg
ICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkgewogICAgICAgICBXZWJzaXRl
RGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CmluZGV4IDA3YzIxN2M3ZDZhOS4uNjI2OWNjNGQyODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMzAsOSAr
MzAsOSBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndlYmtpdGd0ayJfcwogI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid3BlIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIl9zCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBD
bGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5o
YXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9m
VGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25l
d19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRh
LmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFy
YWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkg
ewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURh
dGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRl
bnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQ
YXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5n
ZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmll
dzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXpl
KHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdl
LT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3Jl
YXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IElu
aXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1
dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3Bw
CmluZGV4IDQ1MmNmMGNjOGM3YS4uMzM4NGZhMjU4YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0
b3JDbGllbnRXUEUuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGlu
dGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiBzdGF0aWMgdm9p
ZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25z
dCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgU3RyaW5nIGNv
bW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5k
TmFtZSB7IGludGVycHJldEtleUV2ZW50KGV2ZW50KSB9OwogCiAgICAgaWYgKCFjb21tYW5kTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFt
ZSkuZXhlY3V0ZSgpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleVBy
ZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3JtS2V5
CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUtleURvd24oRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50
JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikKIHsKLSAgICBTdHJpbmcgY29t
bWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1hbmRO
YW1lIHsgaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAgICAgaWYgKGNvbW1hbmROYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2YjMyMmEwOTYwZi4uYTJlMWMxMzE1MDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1Miw3
ICszODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBK
YXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJf
cywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkK
LSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRp
bmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
biBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcx
YzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9p
ZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIs
Ci0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3Ms
ICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAw
NTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAg
ICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIi
LCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAg
ICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5Iiwg
NzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJV
KzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJL
ZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAg
InUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQ
YWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJ
T1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0g
ICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAi
MTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApp
bmRleCBiYjUxMmFlYzM0NTAuLjc2NDQzYTk0MjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQo
JmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5m
b3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0K
QEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRl
bnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNl
ciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQg
Y29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBN
YWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAg
ICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
aW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRp
YVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNj
cmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVy
VmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkp
OworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQs
IGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5s
aW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
R3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
NWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lk
KV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBk
Njg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVm
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5h
YmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250
RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5
YTExLi5jMjkwZGFlMzc5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Fj
Y2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJh
c2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKICAgICBBU1NFUlRfQVJH
KG9iaiwgb2JqKTsKICAgICBtX29iamVjdC0+c2V0V3JhcHBlcih0aGlzKTsKICAgICArK2dDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNz
aWJsZUJhc2U6On5BY2Nlc3NpYmxlQmFzZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNl
KiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBIV05EIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGlj
dGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCA5YTFmMDExMjIxYmMuLmE1YzA3ZWI5MTJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFn
LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6fkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCmluZGV4IDFhODBjNGQ2ZThl
Mi4uMzAyZjYzN2FiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsK
ICAgICBIYXNoU2V0PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVn
aW4oKTsKICAgICBmb3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgq
aSktPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1
bHRQb2xpY3lEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwCmluZGV4IGU4ZTVmNWM0Y2MxMS4uMWZhOGMzNTRkZmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKQEAg
LTQzLDEzICs0MywxMyBAQCB0eXBlZGVmIGVudW0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZSB7CiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlOjp+RGVmYXVsdFBvbGljeURlbGVnYXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
RGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJE
ZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGUqIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiLi45ZGE1OTYwNTY0YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzUsMTMgKzM1LDEz
IEBAIE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIE1lbW9yeVN0cmVhbTo6
fk1lbW9yeVN0cmVhbSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCA2
Zjc1N2IzODZkMTUuLmU5N2M0MTMyNDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBhY3Rpb24sIFJlZlB0CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWci
X3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
QWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFj
dGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApp
bmRleCA4ZjI3MTYyYmJhZjEuLmYzMTAyZTUyNjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBXZWJB
cHBsaWNhdGlvbkNhY2hlOjpXZWJBcHBsaWNhdGlvbkNhY2hlKCkKICAgICA6IG1fcmVmQ291bnQo
MCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGlj
YXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5XZWJBcHBsaWNhdGlv
bkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTgxLDcgKzgxLDcgQEAgc3Rh
dGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlJiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKCkKIHsKLSAgICBzdGF0
aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIiku
bGVha1JlZigpOworICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzdG9yYWdlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3Njcu
LjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAg
LTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiX3Mp
OwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0YWMyZDI4MTA0Li4xMTZhYTQy
MDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJk
TGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tG
b3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNr
Rm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJk
TGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgp
CkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExp
c3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRl
ODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUu
Y3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDYWNo
ZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUi
X3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGUqIFdlYkNhY2hlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li5mMTMxNmRlNDZjMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTQ4LDEzICs0OCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0aXN0aWNzOjpXZWJDb3JlU3Rh
dGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJD
b3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzOjp+V2ViQ29yZVN0YXRp
c3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljcyogV2ViQ29yZVN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFdl
YkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyhfQ09N
X091dHB0cl9vcHRfCiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgp
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJh
dG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7
ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJl
bnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5r
ZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3Vs
dHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3Vu
dE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdE9iamVj
dFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHkKICAgICBJdGVyYXRvciBlbmQg
PSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gdHlw
ZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAgICBD
T01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50
Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8o
dHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTI5NiwxMyArMjk2LDEzIEBAIEhSRVNVTFQgV2ViQ29y
ZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHlC
YWcqKiBzdGF0CiAgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9
IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZmllbGRzOwotICAgIGZpZWxk
cy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcykpOwotICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7Ci0g
ICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKLSAg
ICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiLCBoZWFwU2l6ZSk7Ci0gICAgZmllbGRz
LmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIiwgaGVhcEZyZWUpOwotICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRTdGFja1NpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SklU
U2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
SklUQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIl9z
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJl
c2VydmVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5
dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0
aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxp
c3RCeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBT
aXplIl9zLCBoZWFwU2l6ZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIl9z
LCBoZWFwRnJlZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNrU2l6ZSJfcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiX3MsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpKTsKIAogICAgICpz
dGF0aXN0aWNzID0gQ09NUHJvcGVydHlCYWc8dW5zaWduZWQgbG9uZyBsb25nLCBTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD46OmFkb3B0KGZpZWxkcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDIxMTU5OGQzOWE2YS4uYjlmNDEwOTM1OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRD
b21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGUsIEtleWJvYXJkRXZlbnQqIGtlKQogICAgICAgICBp
ZiAoZG9tRWxlbWVudCkgewogICAgICAgICAgICAgSURPTUhUTUxJbnB1dEVsZW1lbnQqIGRvbUlu
cHV0RWxlbWVudDsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZG9tRWxlbWVudC0+UXVlcnlJ
bnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCAodm9pZCoqKSZkb21JbnB1dEVsZW1l
bnQpKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kID0gbV93ZWJWaWV3LT5pbnRl
cnByZXRLZXlFdmVudChrZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgeyBtX3dl
YlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKSB9OwogICAgICAgICAgICAgICAgIC8vIFdlIGFs
bG93IGVtcHR5IGNvbW1hbmRzIGhlcmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUgYWN0dWFsbHkgZGVw
ZW5kcyBvbiB0aGlzIGJlaW5nIGNhbGxlZCBmb3IgYWxsIGtleSBwcmVzc2VzLgogICAgICAgICAg
ICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gc2VuZCBhbiBlbXB0eSBjb21tYW5kLgogICAgICAg
ICAgICAgICAgIGZvcm1EZWxlZ2F0ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9tSW5wdXRFbGVtZW50
LCBCU3RyaW5nKGNvbW1hbmQpLCBraXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgJnJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDll
ZmI3OS4uZjc4YzFiZDJhODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXZWJEYXRhU291cmNlOjpXZWJEYXRhU291cmNlKFdl
YkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50Kys7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3Vy
Y2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiX3MpOwogfQog
CiBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRh
dGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKICAgICAgICAgbV9sb2FkZXItPmRldGFjaERhdGFT
b3VyY2UoKTsKICAgICBXZWJEYXRhU291cmNlQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3Vy
Y2UqIFdlYkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApp
bmRleCA2NzY3NzIwMzE1YzMuLjhmMzc2NTQxMjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBXZWJE
YXRhYmFzZU1hbmFnZXIqIFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIFdl
YkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTJkMGZhNzJjZDZmLi4yNTZhMzU4ODA3
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNo
ZWREYXRhU291cmNlKDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1l
bnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3Vt
ZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExv
YWRlciJfcyk7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0
YWNoZWREYXRhU291cmNlKTsKICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2Li45OTQ2
OTA0NTUxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJEb3dubG9hZDo6V2ViRG93
bmxvYWQoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQi
X3MpOwogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTYxLDcgKzYxLDcgQEAg
V2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBEZXN0cm95aW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBjYW5jZWwoKTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxv
YWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIl9zKTsKIH0K
IAogV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDE4MTBhNjY4NTgxOC4u
ZmM2NGI5YmM5OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYSBVUkwgb3IgZGVzY3JpcHRpb24gZm9yIHRo
aXMgZXJyb3IgY29kZT8KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
IiIpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwg
V2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICBDT01QdHI8V2ViRXJyb3I+IHdlYkVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6
Y3JlYXRlSW5zdGFuY2UoZXJyb3IpKTsKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9y
KHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRHJvcFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9w
U291cmNlLmNwcAppbmRleCA2YmFiZjkwYjg5ZmEuLjViMWM1ZGZjN2U4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJE
cm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJv
cFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNv
dXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSJfcyk7
CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDhhZmJhMGY2
ZDUzYS4uYzYxZjE3MmQ0N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFbGVtZW50UHJv
cGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiAgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1l
bnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnOjp+V2ViRWxlbWVudFBy
b3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCmluZGV4IDE5
ZGUzNzFiZWExYy4uNzE2MTIxOTIzM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3Iu
Y3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRXJyb3I6OldlYkVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQogICAgICwgbV9lcnJvcihlcnJv
cikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIl9zKTsKIH0KIAog
V2ViRXJyb3I6On5XZWJFcnJvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yKiBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNTk0OGIwZWM1YjgwLi4wN2JkNDZm
Yzk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsyNDMs
NyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewogICAgIFdlYkZyYW1lQ291bnQrKzsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6On5X
ZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAgV2ViRnJhbWU6On5XZWJGcmFtZSgpCiAgICAg
ZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZSogV2ViRnJhbWU6OmNyZWF0
ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeQog
ewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVU
eXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4
dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIl9zOwogCiAgICAg
U3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0
RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
IikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxl
Y3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDIuLjk0NDY4YmI3M2QwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTM5
LDEzICszOSwxMyBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1l
UG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp+V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IGRhNGMyMjc3OTZiNy4u
Njg5MmY3NzFhZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoUmVm
UHRyPEdlb2xvY2F0aW9uPiYmCiAgICAgLCBtX2dlb2xvY2F0aW9uKFdURk1vdmUoZ2VvbG9jYXRp
b24pKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcjo6fldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNw
cAppbmRleCA5MjRjNDhiMTNjNDEuLmZmMWZkOTBjNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTM2LDEzICszNiwx
MyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggNDZhYWFl
OTdkN2JiLi44NmEzY2I2ZGFhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50YXRpb246
On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQpAQCAtNTQsNyArNTQsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQogCiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50
YXRpb24qIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoV2ViRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAzZjFlYjZkNzM4
YmQuLjUwYThlNWY2YmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBDT01QdHI8SVByb3BlcnR5QmFnPiBjcmVh
dGVVc2VySW5mb0Zyb21IaXN0b3J5SXRlbShCU1RSIG5vdGlmaWNhdGkKIFdlYkhpc3Rvcnk6Oldl
Ykhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5
Il9zKTsKIAogICAgIG1fcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRh
cmRQcmVmZXJlbmNlcygpOwogfQpAQCAtOTcsNyArOTcsNyBAQCBXZWJIaXN0b3J5OjpXZWJIaXN0
b3J5KCkKIFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSJfcyk7CiB9CiAKIFdlYkhpc3RvcnkqIFdlYkhp
c3Rvcnk6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcAppbmRleCBmYjg4ZTM5ZTdiNTYuLjhkZDliZGFhYTI4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJI
aXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJ
dGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwg
dGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJ
dGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCkBAIC02Miw3
ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQogICAgIGhpc3RvcnlJ
dGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7CiAKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAog
V2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCBmNjIxOWE2NmRhYTkuLjQ0N2Q5
MmEzYTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCkBAIC01
MSwxMyArNTEsMTMgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWMKICAgICBBU1NFUlRfQVJHKGlu
c3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yOjp+V2Vi
SW5zcGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogV2ViSW5z
cGVjdG9yOjpmcm9udGVuZENsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCmluZGV4IGM4ZTRiZThhYzIxYi4uNzU4NjYyNzJk
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxlY3RvcigpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRD
b2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRDb2xs
ZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjp+V2ViSmF2YVNjcmlwdENv
bGxlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAppbmRleCBjZTg2MjBm
ZDRiZDcuLjZlZTA3MjUzMmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAgV2ViS2l0Q2xhc3NGYWN0b3J5
OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiAgICAgV2ViQ29yZTo6cG9w
dWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBXZWJLaXRDbGFzc0ZhY3Rvcnk6
On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1l
c3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29w
LmNwcAppbmRleCA5MzdhNjY2OWU5MDguLmU2OWMwYzgwODk4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBX
ZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJL
aXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAog
V2ViS2l0TWVzc2FnZUxvb3AqIFdlYktpdE1lc3NhZ2VMb29wOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCmluZGV4IDEyNjNi
YzBjMTFmOS4uZjUxNTFjYmUwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRTdGF0aXN0aWNzLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIGludCBXZWJGcmFtZVZpZXdDb3Vu
dDsKIFdlYktpdFN0YXRpc3RpY3M6OldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljczo6fldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljcyogV2ViS2l0U3RhdGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDVj
OTEyNTc3MjUyNi4uMjQ0MTA2Njg4Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0YWJsZSkKICAgICA6IG1f
aXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogV2ViTXV0YWJsZVVSTFJl
cXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC05Myw3ICs5
Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6fldl
Yk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogLy8gSVVua25v
d24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2
aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNi4uNmE5MzNhYmI1Zjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC03MiwxMyArNzIsMTMgQEAg
V2ViTmF2aWdhdGlvbkRhdGE6OldlYk5hdmlnYXRpb25EYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBJV2UKIAogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0
YTo6fldlYk5hdmlnYXRpb25EYXRhKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlv
bkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVhdGVJbnN0YW5jZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJVUkxS
ZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIGNvbnN0IFN0cmluZyYg
Y2xpZW50UmVkaXJlY3RTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uLmNwcAppbmRleCBmNTNiYjcyNjM1M2YuLjk0OTI1NmVlODAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKEJTVFIgbmFtZSwgSVVua25vd24qIGFuT2Jq
ZWN0LCBJUHJvcGVydHlCYWcqIHVzCiAgICAgICAgIG1fdXNlckluZm8tPkFkZFJlZigpOwogCiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIl9zKTsK
IH0KIAogV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKICAgICAgICAgbV91c2VySW5m
by0+UmVsZWFzZSgpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViTm90aWZpY2F0aW9uIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uKiBXZWJOb3RpZmlj
YXRpb246OmNyZWF0ZUluc3RhbmNlKEJTVFIgbmFtZSAvKj0wKi8sIElVbmtub3duKiBhbk9iamVj
dCAvKj0wKi8sIElQcm9wZXJ0eUJhZyogdXNlckluZm8gLyo9MCovKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggOTI1MzJkYmRj
YTQxLi42Y2Q4ODQyZTdhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFrZVVuaXF1ZTxXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNl
bnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWMuLmZiMTczZGQ1YzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgV2Vi
UHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCkK
IFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2Vz
Ojp+V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlcyogV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJlc291cmNl
OjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2U6
On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQxMjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEz
ICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAK
IFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8g
SVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29y
bGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBX
ZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3
b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICAr
K2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAog
V2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dv
cmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6
OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyArNDksMTMg
QEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3Vy
aXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdp
biJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4oKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1
cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4YmI4MGEy
ZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkK
IHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vy
aWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVk
SlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Ny4u
MDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJl
cjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJf
cyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsK
IH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmlu
ZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCkBAIC00
NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2VuZGVyKHNl
bmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4uNTA5OWJh
MGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMg
QEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsK
IH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVu
dGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlh
bCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25T
cGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEzICszNywx
MyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFj
ZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAog
V2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZUluc3Rh
bmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBh
NWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2Nh
bGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVS
TFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2Vi
VVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwog
ICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApp
bmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7
CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVy
bigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4uZTU1YTI0
MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcgKzQ0Niw3
IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygp
CkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2ViVmlld0Nv
dW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciX3MpOwog
fQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDExICsxOTk1
LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8q
bFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAg
ICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBV
bmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5l
eGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5k
byJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2ViVmlldzo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUo
KSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5
RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8g
V2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNp
ZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRp
dG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VMVCBXZWJW
aWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgp
OworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0Il9zKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5
VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIi
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIGVtcHR5
U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRl
bGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgpOwogICAg
IHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29y
a2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSAr
OTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0
YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwog
fQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9z
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGNmN2I3ODliMzVlYS4uZTE5NjY4Y2NkNzQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMDQsNyArMTEwNCw3IEBAIHN0YXRpYyB2b2lkIHNp
emVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJh
Y2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJh
Y2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhU
b0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChw
YXRoT3JVcmwpKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAo
IV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyBTdHJpbmcg
ZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAKICAgICBTdHJpbmcgcGF0
aFRvQ2hlY2sgPSBmdWxsUGF0aDsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVz
dHMgPSAiTGF5b3V0VGVzdHMiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMg
PSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9u
IHRoZSBjdXJyZW50IHBhdGg6CiAgICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmlu
ZChsYXlvdXRUZXN0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZmYmEwMGI4MDIxYS4uZTgwNzA3
NGY0Y2M1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UFBhcnNlcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQ
UGFyc2Vycy5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAjaWYgVVNFKEdMSUIpCiBURVNUKEhUVFBQ
YXJzZXJzLCBWYWxpZGF0ZVVzZXJBZ2VudFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCIpKTsKLSAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIikp
OwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEw
LjAgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2Ug
R2Vja28pIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkpIikpOwotICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
bGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmlj
IHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFy
YWN0ZXIgdG9rZW4pIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCJf
cykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbyki
X3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChs
ZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJp
YyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xl
IGNoYXJhY3RlciB0b2tlbikiX3MpKTsKIAotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIiAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRl
c3BhY2UpICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8g
dmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVu
ZWQgY29tbWFuZW50KSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRl
ZCBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3Qg
dG9rZW4pIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IiAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIg
U2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFy
aSAobGVhZGluZyBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNp
b24gdG9rZW4gYWZ0ZXIgc2xhc2gpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5l
ZCBjb21tYW5lbnQpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIl9zKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1i
ZWRlZCBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIl9zKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBw
cm9kdWN0IHRva2VuKSJfcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYjAxMTI4YjI2YjFjLi4w
N2E0NWUwZWY0MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBjb3B5SXNDb250aWd1b3VzKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQs
IHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSAp
IHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxT
dHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQor
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAi
XHJcbiJfcywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRh
KCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmlu
Z1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTQ3NywzMiArNDc3LDMy
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKICAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0
aGVyZSAiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImkiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzMVdpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGkiLCAicyBp
IiwgInMgdGhlIG1vc3QgcmkiLCAiZGkiLCAiY3Vsb3VzIGhpIiwgInN0b3J5IHRoZXJlIGkiLCAi
cy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIs
IHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImki
X3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVj
dGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRoU2Vw
YXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFy
KiBjb25zdCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICIgIiwg
IiB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAidG9yeSB0aGVyZSAiLCAiLiIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIpOworICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAg
ICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MyV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMiLCAiIHRoZSBtb3N0IHJpZGljdWxv
dXMgaGlzIiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3Mu
Y2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MzV2l0aG91
dFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAib3J5IHRo
ZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpc3QiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
c3QiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzM1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIGlzIHRo
ZSBtb3N0IHJpZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUgaXMuIiB9OwotICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIsIHRydWUpOworICAgICAgICBy
ZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJfcywgdHJ1ZSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MzV2l0aFNl
cGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC01NTcsMTIgKzU1NywxMiBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0
aG91dFNlcGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNo
dW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ci
KTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3Mp
OwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtz
V2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRv
cikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29u
c3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJkb2ciIH07Ci0gICAgICAgIHJl
YWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIiwgdHJ1ZSk7CisgICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIl9zLCB0cnVlKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fQogCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAi
QmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIgfTsKICAgICAgICAgc3RkOjp2ZWN0
b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyLCAiY2F0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiY2F0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBl
eHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dp
dGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcltdID0geyAiQmVhdWNv
dXAgZGUgY2hhdHMgY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiwgImNhdCIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiLCB0cnVlKTsKKyAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiX3MsIHRydWUpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0
aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAg
ICB9CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA1ZjkyNTMyNzkxYTQuLjJkZDdlNGFlN2EwMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJr
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1
aXJrcy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29u
c3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKFVSTCggU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVh
U3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIAogc3Rh
dGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25z
dCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2Vy
QWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfRkFMU0UodWFT
dHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAKIHN0
YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoY29uc3Qg
Y2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJp
bmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250
YWlucygiTWFjIE9TIFgiKSk7CkBAIC03MiwxNCArNzIsMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiAvLyB0
aGF0IHRoZSBzdGFuZGFyZCB1c2VyIGFnZW50IHNob3VsZCBiZSB1c2VkLikKIHN0YXRpYyB2b2lk
IGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0VtcHR5UXVpcmsoY29uc3QgY2hhciogdXJsKQogewot
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVy
bCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChT
dHJpbmcgeyB1cmwgfSkpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5pc051bGwoKSk7CiB9
CiAKIFRFU1QoVXNlckFnZW50VGVzdCwgUXVpcmtzKQogewogICAgIC8vIEEgc2l0ZSB3aXRoIG5v
IHF1aXJrcyBzaG91bGQgcmV0dXJuIGEgbnVsbCBTdHJpbmcuCi0gICAgU3RyaW5nIHVhU3RyaW5n
ID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgImh0dHA6Ly93d3cud2Via2l0Lm9y
Zy8iKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIl9zKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
aXNOdWxsKCkpOwogCiAgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1
aXJrKCJodHRwOi8vdHlwZWtpdC5jb20vIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMw
YzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQs
NyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3Vi
RnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNs
YXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFT
Q0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsK
IAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5
bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5
bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0g
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
Il9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3Mg
fSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjks
MTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRo
U2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0g
c2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7
ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRp
YXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9u
OiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
Ci1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQp
ID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVu
Y3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1l
c3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcp
OwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5n
IGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBv
cnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkK
ICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21h
aW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7
IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3
aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4
IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMx
Nyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVu
dHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJF
UShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlz
c2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0Ui
X3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hl
Y2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQog
ICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5
NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZy
YW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0
ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+
PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0Mi
OworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlz
c2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQg
fSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4
NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
MTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAg
ICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0
aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVu
dGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQp
dXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250
ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBA
QCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihy
ZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5C
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7
CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUg
c3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
OworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUg
PSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7
ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5
NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBm
YWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsK
KyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1s
Il9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3Mg
fSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwog
CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENv
bnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
IHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwi
X3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwi
X3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9
IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhk
YmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERl
bGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJB
ZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9z
LCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1MWZl
Li4yZjE5NTJjMjk4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyAr
MTkyLDcgQEAgcHVibGljOgogICAgICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxz
ZTsKICAgICAgICAgbV9tZXNzYWdlID0gQ1N0cmluZygpOwogICAgICAgICBhdXRvIHNpZ25hbElE
ID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExC
QUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRv
QmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9C
YWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MpOwogICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdl
YlZpZXdXYXNDYWxsZWQpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9j
cmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdl
ID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Np
b24sICJjcmVhdGUtd2ViLXZpZXc6OndpbmRvdyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0lu
V2luZG93Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNy
ZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0i
KTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJf
cywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFp
bl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1f
Y3JlYXRlV2ViVmlld0luV2luZG93V2FzQ2FsbGVkKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld0luVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAg
ICAgIG1fbWVzc2FnZSA9IHsgfTsKICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nv
bm5lY3QobV9zZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0
ZVdlYlZpZXdJblRhYkNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFi
XCJ9Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRl
eHQiX3MsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZSht
X2NyZWF0ZVdlYlZpZXdJblRhYldhc0NhbGxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCmluZGV4IGYwYmQ4
NjY1ZjcwYS4uMjgwMzQxMTQwZjAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2ds
aWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcApAQCAtNzQsNyArNzQsNyBA
QCB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OnJ1bihTb3VwU2VydmVyQ2FsbGJhY2sgc2VydmVyQ2Fs
bGJhY2spCiAKIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxlcihTb3Vw
U2VydmVyV2Vic29ja2V0Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewot
ICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyIpOwor
ICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyJfcyk7
CiAgICAgbV9iYXNlV2ViU29ja2V0VVJMLnNldFByb3RvY29sKG1fYmFzZVdlYlNvY2tldFVSTC5w
cm90b2NvbElzKCJodHRwIikgPyAid3MiIDogIndzcyIpOwogCiAgICAgaWYgKG1fcXVldWUpIHsK
QEAgLTEwMSwxMiArMTAxLDEyIEBAIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29j
a2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAogewogICAgIGdfYXNzZXJ0X2Zh
bHNlKG1fYmFzZVdlYlNvY2tldFVSTC5pc051bGwoKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShwYXRo
ICYmICpwYXRoID09ICcvJyk7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIHBh
dGggKyAxKS5zdHJpbmcoKS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGluZyBzbGFzaC4KKyAg
ICByZXR1cm4gVVJMKG1fYmFzZVdlYlNvY2tldFVSTCwgU3RyaW5nIHsgcGF0aCArIDEgfSkuc3Ry
aW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCiB9CiAKIENTdHJpbmcg
V2ViS2l0VGVzdFNlcnZlcjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAog
ewotICAgIHJldHVybiBVUkwobV9iYXNlVVJMLCBwYXRoKS5zdHJpbmcoKS51dGY4KCk7CisgICAg
cmV0dXJuIFVSTChtX2Jhc2VVUkwsIFN0cmluZyB7IHBhdGggfSkuc3RyaW5nKCkudXRmOCgpOwog
fQogCiB1bnNpZ25lZCBXZWJLaXRUZXN0U2VydmVyOjpwb3J0KCkgY29uc3QKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3
OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1By
ZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZl
cnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotUmV0YWluUHRy
PFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0
aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1
bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXpl
TWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9w
dGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRp
b25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRB
UEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xh
c3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9k
ZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9
IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9
IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3Njgp
KQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3Njgp
KQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNzPihkZWZhdWx0Q29u
dGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7CiAgICAgYXV0byBu
YXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFByZWZlcnJlZENvbnRl
bnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dpZHRocykKIHsKICAg
ICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNlOwogCi0gICAgYXV0
byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemVaZXJv
KTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVEZXNrdG9wIHdpdGhQ
b2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFn
ZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNpbnRvc2giLCBAIlRl
c3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVTVChQcmVmZXJyZWRD
b250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2VudCkKICAgICB9CiAg
ICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgZm9yIHVz
ZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDguCi0gICAgICAgIGF1
dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRN
b2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVF
MTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9kZURl
c2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAg
ICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5nOkAiTW9iaWxlIl0p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNw
aS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCmlu
ZGV4IDhjZDIyZTRkMzcyYS4uODk1ZjJlNjk5MDM1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNw
aS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBAIC0zOTgsMTggKzM5OCwxOCBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmli
dXRlVmFsdWUoSlNTdHJpbmdSZQogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7
CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYUGxhY2Vob2xkZXJWYWx1ZSIpCi0gICAgICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0
IikpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
YXR0cmlidXRlcy5nZXQoInBsYWNlaG9sZGVyLXRleHQiX3MpKS5sZWFrUmVmKCk7CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW52YWxpZCIpIHsKICAgICAgICAgYXV0byB0ZXh0QXR0cmli
dXRlcyA9IG1fZWxlbWVudC0+dGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgYXV0byB2YWx1ZSA9
IHRleHRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMuZ2V0KCJpbnZhbGlkIik7CisgICAgICAgIGF1dG8g
dmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxpZCJfcyk7CiAgICAg
ICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVu
dFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50
cnkpID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAgICAgIHZhbHVlID0gY2hlY2tFbGVtZW50
U3RhdGUobV9lbGVtZW50LmdldCgpLCBXZWJDb3JlOjpBdHNwaTo6U3RhdGU6OkludmFsaWRFbnRy
eSkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfczsKICAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYgKGF0dHJpYnV0ZU5h
bWUgPT0gIkFYQVJJQUxpdmUiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIl9zKSkubGVha1Jl
ZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSZWxldmFudCIpCi0gICAgICAg
IHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFu
dCIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCJfcykpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogfQpAQCAtNDIwLDIxICs0
MjAsMjEgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZh
bHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdT
dG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwog
ICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikKLSAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIl9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgi
cG9zaW5zZXQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInBv
c2luc2V0Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFD
b2x1bW5Db3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sY291bnQiKS50
b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGNvdW50Il9zKS50
b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dDb3VudCIpCi0g
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93Y291bnQiKS50b0RvdWJsZSgpOworICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50Il9zKS50b0RvdWJsZSgpOwogICAg
IGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1bW5JbmRleCIpCi0gICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzLmdldCgiY29saW5kZXgiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4g
YXR0cmlidXRlcy5nZXQoImNvbGluZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1
dGVOYW1lID09ICJBWEFSSUFSb3dJbmRleCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdl
dCgicm93aW5kZXgiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQo
InJvd2luZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFS
SUFDb2x1bW5TcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xzcGFuIiku
dG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xzcGFuIl9zKS50
b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dTcGFuIikKLSAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIikudG9Eb3VibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIl9zKS50b0RvdWJsZSgpOwogCiAgICAg
cmV0dXJuIDA7CiB9CkBAIC00NDIsOCArNDQyLDggQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjdXJyZW50U3RhdGVW
YWx1ZSgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAg
ICBhdXRvIHZhbHVlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjdXJyZW50Iik7Ci0g
ICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVlLmlzTnVsbCgpID8gdmFs
dWUgOiAiZmFsc2UiKS5sZWFrUmVmKCk7CisgICAgYXV0byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0
cmlidXRlcygpLmdldCgiY3VycmVudCJfcyk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUoIXZhbHVlLmlzTnVsbCgpID8gdmFsdWUgOiAiZmFsc2UiX3MpLmxlYWtSZWYoKTsK
IH0KIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKQEAgLTUxNCw3ICs1MTQs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW50ZXJmYWNl
VGFibGVDZWxsIikKICAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+aW50ZXJmYWNlcygpLmNvbnRh
aW5zKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJmYWNlOjpUYWJsZUNl
bGwpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMiKQotICAgICAgICBy
ZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiKSA9PSAidHJ1ZSI7Cisg
ICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImF0b21pYyJfcykgPT0g
InRydWUiOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTM2LDcgKzUzNiw3IEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBhdHRyaWJ1dGVzID0g
bV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1
dGVzLmdldCgicmVhZG9ubHkiKTsKKyAgICBTdHJpbmcgaXNSZWFkT25seSA9IGF0dHJpYnV0ZXMu
Z2V0KCJyZWFkb25seSJfcyk7CiAgICAgaWYgKCFpc1JlYWRPbmx5LmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIGlzUmVhZE9ubHkgPT0gInRydWUiID8gZmFsc2UgOiB0cnVlOwogCkBAIC01NzMs
MTcgKzU3MywxNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3Vw
cG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygp
OwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikKLSAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuY29udGFpbnMoInNldHNpemUiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJB
WEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJwb3Np
bnNldCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicG9zaW5zZXQiX3Mp
OwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikgewotICAgICAgICBhdXRv
IHZhbHVlID0gYXR0cmlidXRlcy5nZXQoImxpdmUiKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IGF0
dHJpYnV0ZXMuZ2V0KCJsaXZlIl9zKTsKICAgICAgICAgcmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkg
JiYgdmFsdWUgIT0gIm9mZiI7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFS
SUFSZWxldmFudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJyZWxldmFu
dCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVsZXZhbnQiX3MpOwog
ICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMiKQotICAgICAgICByZXR1cm4g
YXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVz
LmNvbnRhaW5zKCJhdG9taWMiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEVsZW1l
bnRCdXN5IikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTU5OCwyNyArNTk4LDI3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJp
emVkQXR0cmlidXRlTmFtZXMoKQogc3RhdGljIFN0cmluZyB4bWxSb2xlVmFsdWVTdHJpbmcoY29u
c3QgU3RyaW5nJiB4bWxSb2xlcykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHJlZ2lvblJvbGVzID0gSGFzaFNl
dDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oewotICAgICAgICAiZG9jLWFja25v
d2xlZGdtZW50cyIsCi0gICAgICAgICJkb2MtYWZ0ZXJ3b3JkIiwKLSAgICAgICAgImRvYy1hcHBl
bmRpeCIsCi0gICAgICAgICJkb2MtYmlibGlvZ3JhcGh5IiwKLSAgICAgICAgImRvYy1jaGFwdGVy
IiwKLSAgICAgICAgImRvYy1jb25jbHVzaW9uIiwKLSAgICAgICAgImRvYy1jcmVkaXRzIiwKLSAg
ICAgICAgImRvYy1lbmRub3RlcyIsCi0gICAgICAgICJkb2MtZXBpbG9ndWUiLAotICAgICAgICAi
ZG9jLWVycmF0YSIsCi0gICAgICAgICJkb2MtZm9yZXdvcmQiLAotICAgICAgICAiZG9jLWdsb3Nz
YXJ5IiwKLSAgICAgICAgImRvYy1nbG9zc3JlZiIsCi0gICAgICAgICJkb2MtaW5kZXgiLAotICAg
ICAgICAiZG9jLWludHJvZHVjdGlvbiIsCi0gICAgICAgICJkb2MtcGFnZWxpc3QiLAotICAgICAg
ICAiZG9jLXBhcnQiLAotICAgICAgICAiZG9jLXByZWZhY2UiLAotICAgICAgICAiZG9jLXByb2xv
Z3VlIiwKLSAgICAgICAgImRvYy10b2MiLAotICAgICAgICAicmVnaW9uIgorICAgICAgICAiZG9j
LWFja25vd2xlZGdtZW50cyJfcywKKyAgICAgICAgImRvYy1hZnRlcndvcmQiX3MsCisgICAgICAg
ICJkb2MtYXBwZW5kaXgiX3MsCisgICAgICAgICJkb2MtYmlibGlvZ3JhcGh5Il9zLAorICAgICAg
ICAiZG9jLWNoYXB0ZXIiX3MsCisgICAgICAgICJkb2MtY29uY2x1c2lvbiJfcywKKyAgICAgICAg
ImRvYy1jcmVkaXRzIl9zLAorICAgICAgICAiZG9jLWVuZG5vdGVzIl9zLAorICAgICAgICAiZG9j
LWVwaWxvZ3VlIl9zLAorICAgICAgICAiZG9jLWVycmF0YSJfcywKKyAgICAgICAgImRvYy1mb3Jl
d29yZCJfcywKKyAgICAgICAgImRvYy1nbG9zc2FyeSJfcywKKyAgICAgICAgImRvYy1nbG9zc3Jl
ZiJfcywKKyAgICAgICAgImRvYy1pbmRleCJfcywKKyAgICAgICAgImRvYy1pbnRyb2R1Y3Rpb24i
X3MsCisgICAgICAgICJkb2MtcGFnZWxpc3QiX3MsCisgICAgICAgICJkb2MtcGFydCJfcywKKyAg
ICAgICAgImRvYy1wcmVmYWNlIl9zLAorICAgICAgICAiZG9jLXByb2xvZ3VlIl9zLAorICAgICAg
ICAiZG9jLXRvYyJfcywKKyAgICAgICAgInJlZ2lvbiJfcwogICAgIH0pOwogCiAgICAgaWYgKHJl
Z2lvblJvbGVzLT5jb250YWlucyh4bWxSb2xlcykpCkBAIC03NjIsNyArNzYyLDcgQEAgc3RhdGlj
IFN0cmluZyByb2xlVmFsdWVUb1N0cmluZyh1bnNpZ25lZCByb2xlVmFsdWUpCiAgICAgY2FzZSBX
ZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2Nyb2xsQmFyOgogICAgICAgICByZXR1cm4gIkFYU2Nyb2xs
QmFyIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNjcm9sbFBhbmU6Ci0gICAg
ICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIjsKKyAgICAgICAgcmV0dXJuICJBWFNjcm9sbEFyZWEi
X3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2VjdGlvbjoKICAgICAgICAgcmV0
dXJuICJBWFNlY3Rpb24iX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2VwYXJh
dG9yOgpAQCAtODE3LDcgKzgxNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdT
dG9yZSgpOwogICAgIGF1dG8gcm9sZVZhbHVlID0gbV9lbGVtZW50LT5yb2xlKCk7Ci0gICAgYXV0
byByb2xlVmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6Okxh
bmRtYXJrID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgi
eG1sLXJvbGVzIikpIDogcm9sZVZhbHVlVG9TdHJpbmcocm9sZVZhbHVlKTsKKyAgICBhdXRvIHJv
bGVWYWx1ZVN0cmluZyA9IHJvbGVWYWx1ZSA9PSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6TGFuZG1h
cmsgPyB4bWxSb2xlVmFsdWVTdHJpbmcobV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJ4bWwt
cm9sZXMiX3MpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CiAgICAgaWYgKHJvbGVW
YWx1ZVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhD
aGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCkBAIC04MzIsMTQgKzgzMiwxNCBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9u
KCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gcm9s
ZURlc2NyaXB0aW9uID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJyb2xlZGVzY3JpcHRp
b24iKTsKKyAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygp
LmdldCgicm9sZWRlc2NyaXB0aW9uIl9zKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRy
eUNyZWF0ZShtYWtlU3RyaW5nKCJBWFJvbGVEZXNjcmlwdGlvbjogIiwgcm9sZURlc2NyaXB0aW9u
KSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRy
aWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIik7CisgICAgYXV0byBjb21wdXRlZFJvbGUgPSBt
X2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImNvbXB1dGVkLXJvbGUiX3MpOwogICAgIGlmIChj
b21wdXRlZFJvbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtOTcyLDcgKzk3Miw3IEBAIGRvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiAKICAgICAvLyBDb25zaWRlciBo
ZWFkaW5ncyBhcyBhbiBzcGVjaWFsIGNhc2Ugd2hlbiByZXR1cm5pbmcgdGhlIGludCB2YWx1ZS4K
ICAgICBpZiAobV9lbGVtZW50LT5yb2xlKCkgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkhlYWRp
bmcpCi0gICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIiku
dG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgi
bGV2ZWwiX3MpLnRvRG91YmxlKCk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTk5OSw3ICs5OTks
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFs
dWVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsK
ICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKLSAgICBhdXRv
IHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdl
dCgidmFsdWV0ZXh0IikpOworICAgIGF1dG8gdmFsdWUgPSBtYWtlU3RyaW5nKCJBWFZhbHVlRGVz
Y3JpcHRpb246ICIsIGF0dHJpYnV0ZXMuZ2V0KCJ2YWx1ZXRleHQiX3MpKTsKICAgICByZXR1cm4g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh2YWx1ZSkubGVha1JlZigpOwogfQogCkBAIC0xMDc2
LDcgKzEwNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0
ZSgpIGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwo
KSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0
byBsZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiKTsKKyAgICBhdXRv
IGxldmVsID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCJfcyk7CiAgICAgaWYg
KGxldmVsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEwOTEsMTMgKzEwOTEs
MTMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNw
ZWFrQXMoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29u
c3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBt
X2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiKSA9PSAidHJ1ZSI7CisgICAgcmV0
dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZ3JhYmJlZCJfcykgPT0gInRydWUiOwog
fQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJp
YURyb3BFZmZlY3RzKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOwotICAgIGF1dG8gZHJvcEVmZmVjdHMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQo
ImRyb3BlZmZlY3QiKTsKKyAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Il9zKTsKICAgICBpZiAoZHJvcEVmZmVjdHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAw
KTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShkcm9wRWZmZWN0cykubGVh
a1JlZigpOwpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQogICAgICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIAogICAgIG1fZWxlbWVu
dC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiRW5jb2RpbmciKSkubGVha1JlZigp
OworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1l
bnRBdHRyaWJ1dGUoIkVuY29kaW5nIl9zKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQpAQCAtMTQz
OCw3ICsxNDM4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRvY3VtZW50VVJJKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9j
dW1lbnRBdHRyaWJ1dGUoIlVSSSIpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiVVJJIl9zKSkubGVh
a1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dXJsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWlu
LmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1
MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAg
Q29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50
ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQ
b2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1w
bGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwg
Imh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4
YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsK
IH0K
</data>
<flag name="commit-queue"
          id="484836"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456519</attachid>
            <date>2022-04-03 14:55:26 -0700</date>
            <delta_ts>2022-04-03 16:26:40 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>337405</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5hOGIxZDIwZDY2MmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29j
a2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5j
cHAKaW5kZXggYTI2MzA4ODU3M2NmLi5iNjY0MzcxM2Y1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKQEAgLTE4NSw3ICsxODUsNyBAQCB2
b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6cGxhdGZvcm1TdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVl
PFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwgKnRoaXMpOwogCiAgICAgLy8gU2V0
dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAgYXV0byBoYW5kbGVyID0gV2ViU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+
KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUo
bWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQ
STo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgIHBhZ2VQcm94eS5wYWdl
R3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRs
ZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBsb2FkZXIgY2xpZW50IHRvIGdldCBu
b3RpZmllZCBvZiBwYWdlIGxvYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlX
aW4uY3BwCmluZGV4IDdkN2I4MDQ3N2JkYy4uYTFjNjhlNDIwZTFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBMUkVTVUxU
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6Om9uQ2xvc2UoKQogCiBXZWJQYWdlUHJveHkqIFJl
bW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2lu
ZG93KCkKIHsKLSAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAg
UmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVh
dGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICAgICBwcmVmZXJlbmNl
cy0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpOwogCiAjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggZjQwMGQ1
ZTczNzE5Li4xYTE5MTU1NWY5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApA
QCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkp
OwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5n
KCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7
CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8g
aW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2lu
ZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0
cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIv
QnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA5ZDNmOThhMzQ5NDAuLmUyZjk3MTMy
NTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9C
dWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIGVudW0g
Y2xhc3MgQmluZEZsYWdzIHsKIAogc3RhdGljIHZvaWQgYmluZFN5bWxpbmtzUmVhbFBhdGgoVmVj
dG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFyKiBwYXRoLCBjb25zdCBjaGFyKiBiaW5kT3B0
aW9uID0gIi0tcm8tYmluZCIpCiB7Ci0gICAgV1RGOjpTdHJpbmcgcmVhbFBhdGggPSBGaWxlU3lz
dGVtOjpyZWFsUGF0aChwYXRoKTsKKyAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0
ZW06OnJlYWxQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwogICAgIGlmIChwYXRoICE9IHJl
YWxQYXRoKSB7CiAgICAgICAgIENTdHJpbmcgcnBhdGggPSByZWFsUGF0aC51dGY4KCk7CiAgICAg
ICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7IGJpbmRPcHRpb24sIHJwYXRo
LmRhdGEoKSwgcnBhdGguZGF0YSgpIH0pKTsKQEAgLTc0Niw3ICs3NDYsNyBAQCBHUmVmUHRyPEdT
dWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIs
IGNvbnN0IFByb2NlcwogCiAgICAgICAgIGFkZEV4dHJhUGF0aHMobGF1bmNoT3B0aW9ucy5leHRy
YVNhbmRib3hQYXRocywgc2FuZGJveEFyZ3MpOwogCi0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4
dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5IiwgIm1lZGlhS2V5c0RpcmVj
dG9yeSIsICJ3YXlsYW5kU29ja2V0IiwgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5IiB9OworICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSJfcywgIm1lZGlhS2V5c0RpcmVjdG9yeSJfcywgIndheWxhbmRTb2NrZXQiX3MsICJ3ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSJfcyB9OwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGgg
OiBleHRyYVBhdGhzKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXh0cmFQYXRoID0gbGF1bmNoT3B0
aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQocGF0aCk7CiAgICAgICAgICAgICBpZiAo
IWV4dHJhUGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0Li5mZDcxNGEzMDU5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb246OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKElzUGVyc2lz
dGVudCBpc1BlcnMKICAgICAgICAgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkpOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgICAgICBzZXRQQ01NYWNoU2VydmljZU5hbWUoImNvbS5h
cHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpOworICAgICAgICBzZXRQQ01NYWNo
U2VydmljZU5hbWUoImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSJfcyk7
CiAjZW5kaWYKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
bGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKaW5kZXggMGQxZjQwMGU0NDQxLi5jZmU3YTBlYjNiZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29s
R0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAg
IGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFt
ZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRl
X2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUg
PSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5p
bXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJy
YXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAtODksNyArODksNyBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQt
ZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxh
bmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENs
aWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwot
ICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5
c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBs
ZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxl
bWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBVU0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJz
LndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xl
dG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBhcHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZh
dWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0g
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFw
cGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1l
dGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsgZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRp
b25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsg
Z19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAKICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNl
cnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVy
QWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4ODRkYWRjYjEuLjg2NGQwZTM2ZmI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGli
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hl
cjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBsYXVuY2hPcHRpb25zLmV4
dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJvY2Vzc1Bv
b2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBsYXVuY2hPcHRp
b25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3giX3MsIG1fcHJv
Y2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CiAKICAg
ICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkgewogICAgICAgICBXZWJzaXRl
RGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CmluZGV4IDA3YzIxN2M3ZDZhOS4uNjI2OWNjNGQyODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVEYXRhU3RvcmVHTGliLmNwcApAQCAtMzAsOSAr
MzAsOSBAQAogI2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIAogI2lmIFBMQVRGT1JN
KEdUSykKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndlYmtpdGd0ayIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndlYmtpdGd0ayJfcwogI2VsaWYgUExBVEZPUk0oV1BFKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid3BlIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid3BlIl9zCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xp
cGJvYXJkR3RrMy5jcHAKaW5kZXggZThiOWEwNDdlOGZiLi5lM2UwYzQ0ZDVmYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBD
bGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5o
YXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9m
VGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25l
d19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRh
LmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFy
YWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODguLjRmZDk2MTZjNWY3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcApAQCAtMTg2LDcg
KzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYg
c2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkg
ewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25EYXRhLmN1c3RvbURh
dGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRl
bnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19j
b250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAg
aWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGE4NmIzNGRkYWE4Zi4uZTMxODg5ZjM0
NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bv
b2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9v
bFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQ
YXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5n
ZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmlu
Zzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNw
ZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uOWQ3ZTcxYzIyODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmll
dzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZp
Z3VyYXRpb24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXpl
KHdpbmRvd1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdl
LT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlcjo6Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3Jl
YXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IElu
aXRpYWxpemluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1
dCBzZWVtcyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3Bw
CmluZGV4IDQ1MmNmMGNjOGM3YS4uMzM4NGZhMjU4YzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0
b3JDbGllbnRXUEUuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGlu
dGVycHJldEtleUV2ZW50KGNvbnN0IEtleWJvYXJkRXZlbnQmIGV2ZW50KQogCiBzdGF0aWMgdm9p
ZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25z
dCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIHBsYXRmb3JtRXZlbnQpCiB7Ci0gICAgU3RyaW5nIGNv
bW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5k
TmFtZSB7IGludGVycHJldEtleUV2ZW50KGV2ZW50KSB9OwogCiAgICAgaWYgKCFjb21tYW5kTmFt
ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuY29tbWFuZChjb21tYW5kTmFt
ZSkuZXhlY3V0ZSgpOwpAQCAtMTkwLDcgKzE5MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZUtleVBy
ZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3JtS2V5
CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUtleURvd24oRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50
JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JikKIHsKLSAgICBTdHJpbmcgY29t
bWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1hbmRO
YW1lIHsgaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAgICAgaWYgKGNvbW1hbmROYW1lLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ2YjMyMmEwOTYwZi4uYTJlMWMxMzE1MDUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1Miw3
ICszODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwg
UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3Vs
ZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBK
YXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJf
cywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkK
LSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpT
ZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5q
ZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJv
dW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRp
bmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5v
biBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDcx
YzI5YTkwYzM3NC4uMzRmZjJkNDA1ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9p
ZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBj
YXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIs
Ci0gICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3Ms
ICJ6Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAw
NTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAg
ICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIi
LCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAg
ICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5Iiwg
NzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAg
ICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5
RG93biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJV
KzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJL
ZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAg
InUiX3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQ
YWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJ
T1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0g
ICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAi
MTJfMV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApp
bmRleCBiYjUxMmFlYzM0NTAuLjc2NDQzYTk0MjU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMjY4LDcgKzI2OCw3
IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCku
a2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21t
YW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQo
JmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6
OlJhd0tleURvd24pIHsKICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5m
b3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NC4uYjdmZTgwMDRlNDhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0K
QEAgLTg2LDcgKzg2LDcgQEAgY29uc3QgU3RyaW5nJiBDbGllbnRDb25uZWN0aW9uOjpob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyKCkKICAgICBpZiAoIW1faG9zdEFwcENvZGVTaWduaW5nSWRl
bnRpZmllcikgewogI2lmIFBMQVRGT1JNKE1BQykgJiYgIVVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CiAgICAgICAgIC8vIFRoaXMgaXNuJ3QgZ3JlYXQsIGJ1dCBjdXJyZW50bHkgdGhlIG9ubHkgdXNl
ciBvZiB3ZWJwdXNoZCBpbiBvcGVuIHNvdXJjZSBidWlsZHMgaXMgVGVzdFdlYktpdEFQSSBhbmQg
Y29kZVNpZ25pbmdJZGVudGlmaWVyIHJldHVybnMgdGhlIG51bGwgU3RyaW5nIG9uIHg4Nl82NCBN
YWNzLgotICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIjsKKyAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKICNlbHNlCiAgICAg
ICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikKICAgICAgICAgICAgIG1faG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllciA9IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0K
aW5kZXggMzlkODYwYzI5NWE3Li5hMjYyYmZjMTQwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9N
L0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAK
ICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRp
YVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2Vy
Q29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNj
cmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVy
VmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkp
OworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQs
IGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkg
OiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3Li4wOThmOGVjMjk2MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpj
aGVja1NwZWxsaW5nT2ZTdHJpbmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5s
aW5lIFN0cmluZyBXZWJFZGl0b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1p
c3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNr
R3JhbW1hck9mU3RyaW5nKFN0cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWls
PiYsIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXgg
NWViNWQ2YTE5ZTZkLi5iYzJhMzJlYTMzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KQEAgLTIwOCw3ICsyMDgsNyBAQCAtICh2b2lk
KV9zZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOihCT09MKWZsYWcKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogLSAodm9pZClfc2V0T3ZlcnJpZGVUZXh0RW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWVuY29kaW5nCiB7Ci0gICAgdG9Qcml2YXRlKF9wcml2YXRlKS0+bG9hZGVyLT5zZXRPdmVy
cmlkZUVuY29kaW5nKFtlbmNvZGluZyBVVEY4U3RyaW5nXSk7CisgICAgdG9Qcml2YXRlKF9wcml2
YXRlKS0+bG9hZGVyLT5zZXRPdmVycmlkZUVuY29kaW5nKGVuY29kaW5nKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYjdhZDBk
Njg0NzViLi5mMTRmYTM5OTRmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVm
CiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5h
YmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhz
KHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250
RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwog
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5
YTExLi5jMjkwZGFlMzc5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0Fj
Y2Vzc2libGVCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAKQEAgLTYyLDEzICs2MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJh
c2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKICAgICBBU1NFUlRfQVJH
KG9iaiwgb2JqKTsKICAgICBtX29iamVjdC0+c2V0V3JhcHBlcih0aGlzKTsKICAgICArK2dDbGFz
c0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNz
aWJsZUJhc2U6On5BY2Nlc3NpYmxlQmFzZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNl
KiBBY2Nlc3NpYmxlQmFzZTo6Y3JlYXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
LCBIV05EIHdpbmRvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGlj
dGlvbmFyeVByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlv
bmFyeVByb3BlcnR5QmFnLmNwcAppbmRleCA5YTFmMDExMjIxYmMuLmE1YzA3ZWI5MTJmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFn
LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6fkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5QmFnPiBDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCmluZGV4IDFhODBjNGQ2ZThl
Mi4uMzAyZjYzN2FiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVm
YXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVs
ZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
RGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsK
ICAgICBIYXNoU2V0PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVn
aW4oKTsKICAgICBmb3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgq
aSktPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1
bHRQb2xpY3lEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9s
aWN5RGVsZWdhdGUuY3BwCmluZGV4IGU4ZTVmNWM0Y2MxMS4uMWZhOGMzNTRkZmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKQEAg
LTQzLDEzICs0MywxMyBAQCB0eXBlZGVmIGVudW0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZSB7CiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlOjp+RGVmYXVsdFBvbGljeURlbGVnYXRl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
RGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJE
ZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGUqIERl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6c2hhcmVkSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL01lbW9yeVN0cmVhbS5jcHAKaW5kZXggMzYwYWVkY2VhY2NiLi45ZGE1OTYwNTY0YTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcApAQCAtMzUsMTMgKzM1LDEz
IEBAIE1lbW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIDogbV9idWZmZXIoV1RGTW92ZShidWZmZXIpKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIE1lbW9yeVN0cmVhbTo6
fk1lbW9yeVN0cmVhbSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogQ09NUHRyPE1lbW9yeVN0cmVhbT4gTWVtb3J5U3Ry
ZWFtOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAppbmRleCA2
Zjc1N2IzODZkMTUuLmU5N2M0MTMyNDcxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBhY3Rpb24sIFJlZlB0CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0
eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWci
X3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
QWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFj
dGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlv
blByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rp
b24sIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApp
bmRleCA4ZjI3MTYyYmJhZjEuLmYzMTAyZTUyNjg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBXZWJB
cHBsaWNhdGlvbkNhY2hlOjpXZWJBcHBsaWNhdGlvbkNhY2hlKCkKICAgICA6IG1fcmVmQ291bnQo
MCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGlj
YXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5XZWJBcHBsaWNhdGlv
bkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTgxLDcgKzgxLDcgQEAgc3Rh
dGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlUGF0aCgpCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlJiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKCkKIHsKLSAgICBzdGF0
aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIiku
bGVha1JlZigpOworICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9
IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwg
IkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtSZWYoKTsKIAogICAgIHJldHVybiBzdG9yYWdlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3Njcu
LjE3ZGViYzQ4N2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJj
aGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAKQEAg
LTYyLDEzICs2MiwxMyBAQCBXZWJBcmNoaXZlOjpXZWJBcmNoaXZlKFJlZlB0cjxMZWdhY3lXZWJB
cmNoaXZlPiYmIGNvcmVBcmNoaXZlKQogI2VuZGlmCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFyY2hpdmUiX3MpOwogfQogCiBXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkFyY2hpdmUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFyY2hpdmUiX3Mp
OwogfQogCiBIUkVTVUxUIFdlYkFyY2hpdmU6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKaW5kZXggOTA0YWMyZDI4MTA0Li4xMTZhYTQy
MDE3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJk
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJk
TGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tG
b3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNr
Rm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJk
TGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgp
CkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlz
dCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExp
c3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJC
YWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYg
YmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRl
ODUwZTcxM2IwMy4uOGIxNmI0M2Q0MWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUu
Y3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDYWNo
ZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUi
X3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGUqIFdlYkNhY2hlOjpj
cmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3Li5mMTMxNmRlNDZjMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKQEAgLTQ4LDEzICs0OCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNvcmVTdGF0aXN0aWNzOjpXZWJDb3JlU3Rh
dGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJD
b3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzOjp+V2ViQ29yZVN0YXRp
c3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljcyogV2ViQ29yZVN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE0OSw3ICsxNDksNyBAQCBIUkVTVUxUIFdl
YkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyhfQ09N
X091dHB0cl9vcHRfCiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgp
OwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJh
dG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7
ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJl
bnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5r
ZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3Vs
dHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3Vu
dE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0x
NjcsNyArMTY3LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdE9iamVj
dFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHkKICAgICBJdGVyYXRvciBlbmQg
PSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gdHlw
ZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAgICBD
T01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50
Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8o
dHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTI5NiwxMyArMjk2LDEzIEBAIEhSRVNVTFQgV2ViQ29y
ZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRpc3RpY3MoX0NPTV9PdXRwdHJfb3B0XyBJUHJvcGVydHlC
YWcqKiBzdGF0CiAgICAgR2xvYmFsTWVtb3J5U3RhdGlzdGljcyBnbG9iYWxNZW1vcnlTdGF0cyA9
IGdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKIAogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25l
ZCBsb25nIGxvbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4gZmllbGRzOwotICAgIGZpZWxk
cy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJlc2VydmVkVk1CeXRlcykpOwotICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7Ci0g
ICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKLSAg
ICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiLCBoZWFwU2l6ZSk7Ci0gICAgZmllbGRz
LmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIiwgaGVhcEZyZWUpOwotICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRTdGFja1NpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SklU
U2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMu
SklUQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIl9z
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLnJl
c2VydmVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NDb21taXR0ZWRWTUJ5
dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0
aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxp
c3RCeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBT
aXplIl9zLCBoZWFwU2l6ZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEZyZWVTaXplIl9z
LCBoZWFwRnJlZSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNrU2l6ZSJfcywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiX3MsIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuSklUQnl0ZXMpKTsKIAogICAgICpz
dGF0aXN0aWNzID0gQ09NUHJvcGVydHlCYWc8dW5zaWduZWQgbG9uZyBsb25nLCBTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD46OmFkb3B0KGZpZWxkcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
Y3BwCmluZGV4IDIxMTU5OGQzOWE2YS4uYjlmNDEwOTM1OWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5j
cHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRD
b21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGUsIEtleWJvYXJkRXZlbnQqIGtlKQogICAgICAgICBp
ZiAoZG9tRWxlbWVudCkgewogICAgICAgICAgICAgSURPTUhUTUxJbnB1dEVsZW1lbnQqIGRvbUlu
cHV0RWxlbWVudDsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZG9tRWxlbWVudC0+UXVlcnlJ
bnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCAodm9pZCoqKSZkb21JbnB1dEVsZW1l
bnQpKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kID0gbV93ZWJWaWV3LT5pbnRl
cnByZXRLZXlFdmVudChrZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgeyBtX3dl
YlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKSB9OwogICAgICAgICAgICAgICAgIC8vIFdlIGFs
bG93IGVtcHR5IGNvbW1hbmRzIGhlcmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUgYWN0dWFsbHkgZGVw
ZW5kcyBvbiB0aGlzIGJlaW5nIGNhbGxlZCBmb3IgYWxsIGtleSBwcmVzc2VzLgogICAgICAgICAg
ICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciBiZWNhdXNlIGl0IGRv
ZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gc2VuZCBhbiBlbXB0eSBjb21tYW5kLgogICAgICAg
ICAgICAgICAgIGZvcm1EZWxlZ2F0ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9tSW5wdXRFbGVtZW50
LCBCU3RyaW5nKGNvbW1hbmQpLCBraXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgJnJlc3VsdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDll
ZmI3OS4uZjc4YzFiZDJhODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXZWJEYXRhU291cmNlOjpXZWJEYXRhU291cmNlKFdl
YkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50Kys7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3Vy
Y2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiX3MpOwogfQog
CiBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCkBAIC02Niw3ICs2Niw3IEBAIFdlYkRh
dGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKICAgICAgICAgbV9sb2FkZXItPmRldGFjaERhdGFT
b3VyY2UoKTsKICAgICBXZWJEYXRhU291cmNlQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3Vy
Y2UqIFdlYkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApp
bmRleCA2NzY3NzIwMzE1YzMuLjhmMzc2NTQxMjU2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xNjAsMTMgKzE2MCwxMyBAQCBXZWJE
YXRhYmFzZU1hbmFnZXIqIFdlYkRhdGFiYXNlTWFuYWdlcjo6Y3JlYXRlSW5zdGFuY2UoKQogV2Vi
RGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIFdl
YkRhdGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTJkMGZhNzJjZDZmLi4yNTZhMzU4ODA3
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAK
QEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNo
ZWREYXRhU291cmNlKDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1l
bnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3Vt
ZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExv
YWRlciJfcyk7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0
YWNoZWREYXRhU291cmNlKTsKICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2Li45OTQ2
OTA0NTUxYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJEb3dubG9hZDo6V2ViRG93
bmxvYWQoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQi
X3MpOwogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKQEAgLTYxLDcgKzYxLDcgQEAg
V2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCiAgICAgTE9HKERvd25sb2FkLCAiV2ViRG93bmxv
YWQgLSBEZXN0cm95aW5nIGRvd25sb2FkICglcCkiLCB0aGlzKTsKICAgICBjYW5jZWwoKTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxv
YWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIl9zKTsKIH0K
IAogV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCmluZGV4IDE4MTBhNjY4NTgxOC4u
ZmM2NGI5YmM5OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENG
TmV0LmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIEhSRVNVTFQgV2ViRG93bmxvYWQ6OmNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKF9Jbl9vcHRfIElXZWJVUkxBdXRoZW50aWNhdGlvCiAgICAg
fQogCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgYSBVUkwgb3IgZGVzY3JpcHRpb24gZm9yIHRo
aXMgZXJyb3IgY29kZT8KLSAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJv
ckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwg
IiIpOworICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwg
V2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCBlbXB0eVN0cmlu
ZygpKTsKICAgICBDT01QdHI8V2ViRXJyb3I+IHdlYkVycm9yKEFkb3B0Q09NLCBXZWJFcnJvcjo6
Y3JlYXRlSW5zdGFuY2UoZXJyb3IpKTsKICAgICBtX2RlbGVnYXRlLT5kaWRGYWlsV2l0aEVycm9y
KHRoaXMsIHdlYkVycm9yLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRHJvcFNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9w
U291cmNlLmNwcAppbmRleCA2YmFiZjkwYjg5ZmEuLjViMWM1ZGZjN2U4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJE
cm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZp
ZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJv
cFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNv
dXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSJfcyk7
CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJF
RklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDhhZmJhMGY2
ZDUzYS4uYzYxZjE3MmQ0N2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFbGVtZW50UHJv
cGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1
bHQpCiAgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RSZXN1bHQ+KHJlc3VsdCkpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1l
bnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFBy
b3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnOjp+V2ViRWxlbWVudFBy
b3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVy
dHlCYWcqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgSGl0VGVz
dFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCmluZGV4IDE5
ZGUzNzFiZWExYy4uNzE2MTIxOTIzM2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJFcnJvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3Iu
Y3BwCkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRXJyb3I6OldlYkVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQogICAgICwgbV9lcnJvcihlcnJv
cikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIl9zKTsKIH0KIAog
V2ViRXJyb3I6On5XZWJFcnJvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yKiBXZWJFcnJvcjo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKaW5kZXggNTk0OGIwZWM1YjgwLi4wN2JkNDZm
Yzk5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsyNDMs
NyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewogICAgIFdlYkZyYW1lQ291bnQrKzsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6On5X
ZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAgV2ViRnJhbWU6On5XZWJGcmFtZSgpCiAgICAg
ZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZSogV2ViRnJhbWU6OmNyZWF0
ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShS
ZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeQog
ewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVU
eXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4
dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIl9zOwogCiAgICAg
U3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0
RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6
OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQ
RUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
IikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxl
Y3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVy
biBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDIuLjk0NDY4YmI3M2QwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTM5
LDEzICszOSwxMyBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKICAgICA6IG1fZnJhbWUoV1RGTW92ZShmcmFtZSkp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1l
UG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp+V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4IGRhNGMyMjc3OTZiNy4u
Njg5MmY3NzFhZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoUmVm
UHRyPEdlb2xvY2F0aW9uPiYmCiAgICAgLCBtX2dlb2xvY2F0aW9uKFdURk1vdmUoZ2VvbG9jYXRp
b24pKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcjo6fldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNw
cAppbmRleCA5MjRjNDhiMTNjNDEuLmZmMWZkOTBjNDM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTM2LDEzICszNiwx
MyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggNDZhYWFl
OTdkN2JiLi44NmEzY2I2ZGFhMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50YXRpb246
On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQpAQCAtNTQsNyArNTQsNyBAQCBXZWJIVE1MUmVwcmVz
ZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQogCiAgICAgV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVwcmVzZW50
YXRpb24qIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoV2ViRnJhbWUqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAzZjFlYjZkNzM4
YmQuLjUwYThlNWY2YmNmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeS5jcHAK
QEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIGlubGluZSBDT01QdHI8SVByb3BlcnR5QmFnPiBjcmVh
dGVVc2VySW5mb0Zyb21IaXN0b3J5SXRlbShCU1RSIG5vdGlmaWNhdGkKIFdlYkhpc3Rvcnk6Oldl
Ykhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5
Il9zKTsKIAogICAgIG1fcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6c2hhcmVkU3RhbmRh
cmRQcmVmZXJlbmNlcygpOwogfQpAQCAtOTcsNyArOTcsNyBAQCBXZWJIaXN0b3J5OjpXZWJIaXN0
b3J5KCkKIFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeSJfcyk7CiB9CiAKIFdlYkhpc3RvcnkqIFdlYkhp
c3Rvcnk6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcAppbmRleCBmYjg4ZTM5ZTdiNTYuLjhkZDliZGFhYTI4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJI
aXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJ
dGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwg
dGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJ
dGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCkBAIC02Miw3
ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQogICAgIGhpc3RvcnlJ
dGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7CiAKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAog
V2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCBmNjIxOWE2NmRhYTkuLjQ0N2Q5
MmEzYTNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCkBAIC01
MSwxMyArNTEsMTMgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWMKICAgICBBU1NFUlRfQVJHKGlu
c3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9yOjp+V2Vi
SW5zcGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCogV2ViSW5z
cGVjdG9yOjpmcm9udGVuZENsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCmluZGV4IGM4ZTRiZThhYzIxYi4uNzU4NjYyNzJk
NWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29s
bGVjdG9yLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
V2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxlY3RvcigpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRD
b2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkphdmFTY3JpcHRDb2xs
ZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjp+V2ViSmF2YVNjcmlwdENv
bGxlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkphdmFTY3JpcHRDb2xsZWN0b3IiX3MpOwogfQogCiBXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAppbmRleCBjZTg2MjBm
ZDRiZDcuLjZlZTA3MjUzMmVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAgV2ViS2l0Q2xhc3NGYWN0b3J5
OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiAgICAgV2ViQ29yZTo6cG9w
dWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBXZWJLaXRDbGFzc0ZhY3Rvcnk6
On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIC8vIElVbmtub3du
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1l
c3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29w
LmNwcAppbmRleCA5MzdhNjY2OWU5MDguLmU2OWMwYzgwODk4YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBACiBX
ZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJL
aXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAog
V2ViS2l0TWVzc2FnZUxvb3AqIFdlYktpdE1lc3NhZ2VMb29wOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCmluZGV4IDEyNjNi
YzBjMTFmOS4uZjUxNTFjYmUwYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRTdGF0aXN0aWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJL
aXRTdGF0aXN0aWNzLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIGludCBXZWJGcmFtZVZpZXdDb3Vu
dDsKIFdlYktpdFN0YXRpc3RpY3M6OldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljczo6fldlYktpdFN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2Vi
S2l0U3RhdGlzdGljcyogV2ViS2l0U3RhdGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCmluZGV4IDVj
OTEyNTc3MjUyNi4uMjQ0MTA2Njg4Njc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk11dGFibGVV
UkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0YWJsZSkKICAgICA6IG1f
aXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogV2ViTXV0YWJsZVVSTFJl
cXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC05Myw3ICs5
Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6fldl
Yk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogLy8gSVVua25v
d24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2
aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNi4uNmE5MzNhYmI1Zjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC03MiwxMyArNzIsMTMgQEAg
V2ViTmF2aWdhdGlvbkRhdGE6OldlYk5hdmlnYXRpb25EYXRhKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHRpdGxlLCBJV2UKIAogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0
YTo6fldlYk5hdmlnYXRpb25EYXRhKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlv
bkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVhdGVJbnN0YW5jZShjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJVUkxS
ZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIGNvbnN0IFN0cmluZyYg
Y2xpZW50UmVkaXJlY3RTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uLmNwcAppbmRleCBmNTNiYjcyNjM1M2YuLjk0OTI1NmVlODAyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCkBAIC00Myw3ICs0Myw3IEBAIFdl
Yk5vdGlmaWNhdGlvbjo6V2ViTm90aWZpY2F0aW9uKEJTVFIgbmFtZSwgSVVua25vd24qIGFuT2Jq
ZWN0LCBJUHJvcGVydHlCYWcqIHVzCiAgICAgICAgIG1fdXNlckluZm8tPkFkZFJlZigpOwogCiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNh
dGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIl9zKTsK
IH0KIAogV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViTm90aWZpY2F0aW9uOjp+V2ViTm90aWZpY2F0aW9uKCkKICAgICAgICAgbV91c2VySW5m
by0+UmVsZWFzZSgpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViTm90aWZpY2F0aW9uIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uKiBXZWJOb3RpZmlj
YXRpb246OmNyZWF0ZUluc3RhbmNlKEJTVFIgbmFtZSAvKj0wKi8sIElVbmtub3duKiBhbk9iamVj
dCAvKj0wKi8sIElQcm9wZXJ0eUJhZyogdXNlckluZm8gLyo9MCovKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggOTI1MzJkYmRj
YTQxLi42Y2Q4ODQyZTdhMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdlYk5vdGlmaWNhdGlv
bkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFrZVVuaXF1ZTxXZWJO
b3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNl
bnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50
ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWMuLmZiMTczZGQ1YzFlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgV2Vi
UHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCkK
IFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2Vz
Ojp+V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlcyogV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzguLjNiYmEzMWUzOWQ5NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlJlc291cmNl
OjpXZWJSZXNvdXJjZShJU3RyZWFtKiBkYXRhLCBjb25zdCBXVEY6OlVSTCYgdXJsLCBjb25zdCBX
VEY6OlN0cmluZyYKICAgICAsIG1fZnJhbWVOYW1lKGZyYW1lTmFtZSkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2U6
On5XZWJSZXNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlKiBXZWJSZXNvdXJjZTo6Y3JlYXRl
SW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRPYmplY3QuY3BwCmluZGV4IGI4ZmUzMDdjYjg2Yi4uZGYwNzgxZjQxMjM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEz
ICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3Qi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAK
IFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8g
SVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29y
bGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMC4uN2VmOGE0NTM0NjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBX
ZWJTY3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3
b3JsZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICAr
K2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAog
V2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNj
cmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dv
cmxkLmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6
OnN0YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2VjdXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2Yi4uZWVmMTY0M2I2MTdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCkBAIC00OSwxMyArNDksMTMg
QEAgV2ViU2VjdXJpdHlPcmlnaW46OldlYlNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbikKICAgICA6IG1fc2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3Vy
aXR5T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdp
biJfcyk7CiB9CiAKIFdlYlNlY3VyaXR5T3JpZ2luOjp+V2ViU2VjdXJpdHlPcmlnaW4oKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1
cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlP
cmlnaW4iX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAppbmRleCA4YmI4MGEy
ZmNhMjkuLjdmMTFkZjVmZmUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkK
IHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2Vy
aWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVk
SlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVk
SlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Ny4u
MDQ1MzVmM2Y3MjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJl
cjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0
UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJf
cyk7CiB9CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsK
IH0KIAogSFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlE
IHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmlu
ZGV4IDU5Nzg4YzRmNWUyNC4uNDBiN2I2NmZhN2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCkBAIC00
NiwxMyArNDYsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW8KICAgICAsIG1fc2VuZGVyKHNl
bmRlcikKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCmluZGV4IDM1YTg0NWVkNjkzYy4uNTA5OWJh
MGFmMTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMg
QEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsK
IH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0
aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjUuLmE1MzFkMTA2OTk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEz
ICszNywxMyBAQCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRl
bnRpYWwmIGNyZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVu
dGlhbCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlh
bCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7
CiB9CiAKIFdlYlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25T
cGFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2Uu
Y3BwCmluZGV4IDE5ZWQ5NmY4MjEwZC4uMzFiMDlhYzRjYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKQEAgLTM3LDEzICszNywx
MyBAQCBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZShjb25zdCBQ
cm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcAogICAgIDogbV9wcm90ZWN0aW9uU3BhY2UocHJv
dGVjdGlvblNwYWNlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFj
ZTo6fldlYlVSTFByb3RlY3Rpb25TcGFjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAog
V2ViVVJMUHJvdGVjdGlvblNwYWNlKiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6OmNyZWF0ZUluc3Rh
bmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNl
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAppbmRleCBh
NWIyM2RiZmE1NDkuLjYxMjI5NmNiNTUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2Nh
bGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVS
TFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2Vi
VVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwog
ICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApp
bmRleCA0ODEyMzg0NzEzYzguLmVkZjMzNTg2YjFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUs
MTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7
CiB9CiAKIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVy
bigpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250
ZW50VVJMUGF0dGVybj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNC4uZTU1YTI0
MmRjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcApAQCAtNDQ2LDcgKzQ0Niw3
IEBAIFdlYlZpZXc6OldlYlZpZXcoKQogCiAgICAgV2ViVmlld0NvdW50Kys7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlZpZXciX3MpOwogfQogCiBXZWJWaWV3Ojp+V2ViVmlldygp
CkBAIC00NjksNyArNDY5LDcgQEAgV2ViVmlldzo6fldlYlZpZXcoKQogCiAgICAgV2ViVmlld0Nv
dW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlZpZXciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlZpZXciX3MpOwog
fQogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xOTk1LDExICsxOTk1
LDExIEBAIGJvb2wgV2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8q
bFBhcmFtKi8pCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBzd2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7CiAgICAg
ICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBV
bmRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iKS5l
eGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5k
byJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAgICAgICAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJSZWRvIl9zKS5leGVjdXRlKCk7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTIxNDcsNyArMjE0Nyw3IEBAIGJvb2wgV2ViVmlldzo6
aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAgICAgaWYg
KGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYmIGV2ZW50LnR5cGUo
KSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoaW50ZXJwcmV0S2V5
RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAogICAgIGlmIChrZXlF
dmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsKICAgICAgICAgLy8g
V2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQgbW9kZSB0byBkZWNp
ZGUgaG93IGNvbW1hbmRzIHRoYXQganVzdCBpbnNlcnQgdGV4dCBpZiBleGVjdXRlZCB2aWEgRWRp
dG9yIHNob3VsZCBiZSB0cmVhdGVkLApAQCAtNDcyNSw3ICs0NzI1LDcgQEAgSFJFU1VMVCBXZWJW
aWV3Ojpjb3B5KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgp
OworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29tbWFuZCgiQ29weSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC00NzM0LDcgKzQ3MzQsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmN1dChfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ3V0Il9zKS5l
eGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NDMsNyArNDc0Myw3IEBAIEhS
RVNVTFQgV2ViVmlldzo6cGFzdGUoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1
cm4gU19PSzsKIH0KIApAQCAtNDc1Miw3ICs0NzUyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpjb3B5
VVJMKF9Jbl8gQlNUUiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
LmVkaXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksICIi
KTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvcHlVUkwoTWFyc2hhbGxpbmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCksIGVtcHR5
U3RyaW5nKCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzczLDcgKzQ3NzMsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6OmRlbGV0ZV8oX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRl
bGV0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkRlbGV0ZSJfcykuZXhlY3V0ZSgpOwogICAg
IHJldHVybiBTX09LOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29y
a2Vyc1ByaXZhdGUuY3BwCmluZGV4IDA0NTE4ZmFkMWE3Ni4uMmU5MzFlMDhlNzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSAr
OTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0
YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwog
fQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9z
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGNmN2I3ODliMzVlYS4uZTE5NjY4Y2NkNzQ5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMDQsNyArMTEwNCw3IEBAIHN0YXRpYyB2b2lkIHNp
emVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJh
Y2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJh
Y2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGhPclVybCk7CisgICAgU3RyaW5nIHBhdGhU
b0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgoU3RyaW5nOjpmcm9tVVRGOChw
YXRoT3JVcmwpKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhbX01BWF9QQVRIXTsKICAgICBpZiAo
IV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxsYmFjay53aWRlQ2hhcmFjdGVycygp
LmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTExMTUsNyArMTExNSw3IEBAIHN0YXRpYyBTdHJpbmcg
ZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAKICAgICBTdHJpbmcgcGF0
aFRvQ2hlY2sgPSBmdWxsUGF0aDsKIAotICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVz
dHMgPSAiTGF5b3V0VGVzdHMiOworICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMg
PSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9u
IHRoZSBjdXJyZW50IHBhdGg6CiAgICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmlu
ZChsYXlvdXRUZXN0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jv
c3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5NjkuLmZhNjE4YmIxYjc5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCkBA
IC0xMTMsMTUgKzExMywxNSBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAg
IH0KIAogICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LnNpemUoKSk7Ci0g
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0w
LTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0wLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0wLTAiX3MpKTsKIAogICAgIEFTU0VSVF9FUSgzdSwgY29weUNvbnN0cnVjdG9yU2V0
LnNpemUoKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoImxv
Z2dlci0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTAiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTAiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0
b3JTZXQuY291bnQoImxvZ2dlci0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgxdSwg
Y29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIl9zKSk7CiAKICNpZiAhQ09N
UElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoNnUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkp
OwpAQCAtMTMwLDEyICsxMzAsMTIgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykK
ICAgICAvLyBUaGlzIHNlZW1zIHRvIGJlIGNhdXNlZCBieSBkaWZmZXJlbmNlcyBpbiBNU1ZDJ3Mg
aW1wbGVtZW50YXRpb24gb2YgbGFtYmRhcyBvciBzdGQgZnVuY3Rpb25zIGxpa2Ugc3RkOjptYWtl
X3R1cGxlLgogICAgIEFTU0VSVF9FUSg5dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CiAj
ZW5kaWYKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9n
Z2VyLTEtMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgiPGRlZmF1bHQ+LTItMiIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIl9zKSk7CisgICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiX3MpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMiJf
cykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
IjxkZWZhdWx0Pi0xLTIiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9F
USgxMnUsIHRvdGFsRGVzdHJ1Y3RvckNhbGxzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZmYmEwMGI4MDIxYS4uZTgwNzA3
NGY0Y2M1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UFBhcnNlcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQ
UGFyc2Vycy5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNy
b3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAjaWYgVVNFKEdMSUIpCiBURVNUKEhUVFBQ
YXJzZXJzLCBWYWxpZGF0ZVVzZXJBZ2VudFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCIpKTsKLSAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIikp
OwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEw
LjAgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2Ug
R2Vja28pIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkpIikpOwotICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
bGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmlj
IHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFy
YWN0ZXIgdG9rZW4pIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCJf
cykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbyki
X3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChs
ZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJp
YyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xl
IGNoYXJhY3RlciB0b2tlbikiX3MpKTsKIAotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIiAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRl
c3BhY2UpICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8g
dmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVu
ZWQgY29tbWFuZW50KSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRl
ZCBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3Qg
dG9rZW4pIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IiAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIg
U2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFy
aSAobGVhZGluZyBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNp
b24gdG9rZW4gYWZ0ZXIgc2xhc2gpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5l
ZCBjb21tYW5lbnQpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIl9zKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1i
ZWRlZCBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIl9zKSk7CisgICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBw
cm9kdWN0IHRva2VuKSJfcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYjAxMTI4YjI2YjFjLi4w
N2E0NWUwZWY0MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVF9GKEZyYWdtZW50ZWRT
aGFyZWRCdWZmZXJUZXN0LCBjb3B5SXNDb250aWd1b3VzKQogdGVtcGxhdGU8IHR5cGVuYW1lIFQs
IHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXplKCBjb25zdCBUICgmKVtOXSAp
IHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxT
dHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZhbHNlKQor
c3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAi
XHJcbiJfcywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCiB7CiAgICAgU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2VwYXJhdG9yLnV0ZjgoKS5kYXRh
KCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5leHRDaHVua0FzVVRGOFN0cmlu
Z1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsKQEAgLTQ3NywzMiArNDc3LDMy
IEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIHJlYWRBbGxDaHVua3NJbk11
bHRpU2VnbWVudCkKICAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYg
c2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwogICAg
ICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJjdWxvdXMgaCIsICJzdG9yeSB0
aGVyZSAiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImkiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzMVdpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGkiLCAicyBp
IiwgInMgdGhlIG1vc3QgcmkiLCAiZGkiLCAiY3Vsb3VzIGhpIiwgInN0b3J5IHRoZXJlIGkiLCAi
cy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIs
IHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImki
X3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVj
dGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczFXaXRoU2Vw
YXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFy
KiBjb25zdCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICIgIiwg
IiB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAidG9yeSB0aGVyZSAiLCAiLiIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIpOworICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAg
ICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MyV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMiLCAiIHRoZSBtb3N0IHJpZGljdWxv
dXMgaGlzIiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtz
KCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3Mu
Y2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MzV2l0aG91
dFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAib3J5IHRo
ZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpc3QiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
c3QiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzM1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNXaXRob3V0
U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIGlzIHRo
ZSBtb3N0IHJpZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUgaXMuIiB9OwotICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIsIHRydWUpOworICAgICAgICBy
ZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJfcywgdHJ1ZSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MzV2l0aFNl
cGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRl
eHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC01NTcsMTIgKzU1NywxMiBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0
aG91dFNlcGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNo
dW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ci
KTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3Mp
OwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtz
V2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRv
cikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29u
c3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJkb2ciIH07Ci0gICAgICAgIHJl
YWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIiwgdHJ1ZSk7CisgICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIl9zLCB0cnVlKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IpKSk7CiAgICAg
fQogCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAi
QmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIgfTsKICAgICAgICAgc3RkOjp2ZWN0
b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVk
QnVmZmVyLCAiY2F0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiY2F0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBl
eHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dp
dGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcltdID0geyAiQmVhdWNv
dXAgZGUgY2hhdHMgY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiwgImNhdCIgfTsKLSAgICAgICAg
cmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiLCB0cnVlKTsKKyAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQiX3MsIHRydWUpOwog
ICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0
aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAg
ICB9CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA1ZjkyNTMyNzkxYTQuLjJkZDdlNGFlN2EwMSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJr
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1
aXJrcy5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29u
c3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNl
ckFnZW50Rm9yVVJMKFVSTCggU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVh
U3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTQ1LDcgKzQ1LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIAogc3Rh
dGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25z
dCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2Vy
QWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfRkFMU0UodWFT
dHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuY29u
dGFpbnMoIlNhZmFyaSIpKTsKQEAgLTU2LDcgKzU2LDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAKIHN0
YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoY29uc3Qg
Y2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJp
bmcuY29udGFpbnMoIk1hY2ludG9zaCIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250
YWlucygiTWFjIE9TIFgiKSk7CkBAIC03MiwxNCArNzIsMTQgQEAgc3RhdGljIHZvaWQgYXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiAvLyB0
aGF0IHRoZSBzdGFuZGFyZCB1c2VyIGFnZW50IHNob3VsZCBiZSB1c2VkLikKIHN0YXRpYyB2b2lk
IGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0VtcHR5UXVpcmsoY29uc3QgY2hhciogdXJsKQogewot
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVy
bCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChT
dHJpbmcgeyB1cmwgfSkpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5pc051bGwoKSk7CiB9
CiAKIFRFU1QoVXNlckFnZW50VGVzdCwgUXVpcmtzKQogewogICAgIC8vIEEgc2l0ZSB3aXRoIG5v
IHF1aXJrcyBzaG91bGQgcmV0dXJuIGEgbnVsbCBTdHJpbmcuCi0gICAgU3RyaW5nIHVhU3RyaW5n
ID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgImh0dHA6Ly93d3cud2Via2l0Lm9y
Zy8iKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIl9zKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
aXNOdWxsKCkpOwogCiAgICAgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1
aXJrKCJodHRwOi8vdHlwZWtpdC5jb20vIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMw
YzIzOGMzLi5kZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQs
NyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3Vi
RnJhbWUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKQEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246
ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IGVudW0gY2xhc3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNs
YXNzIElzQXBwSW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0
IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJ
bml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFT
Q0lJTGl0ZXJhbCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsK
IAogICAgIHN3aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5
bnRoZXRpYzoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJs
b2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0
eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5
bnRoZXRpYyByZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpGZXRjaGVkOgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwog
ICAgICAgICBleHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0g
ICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20g
c2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1s
Il9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3Mg
fSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CiAKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjks
MTMgKzM2OSwxMyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRo
U2hhcmVkU2VydmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVu
ZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hl
ZC5odG1sJykpIH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0
Y2hlZC5odG1sJykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3Lmpz
IiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9
IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVk
IGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hl
ZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtNDUyLDEyICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0
aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3Jp
cHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0
L2h0bWwnfSkpKTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5l
dyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2Vc
Iik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBqcyB9IH0sCiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0g
c2VydmVyMS5wb3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBk
YXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7
ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgdGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFi
bGVVUkxSZXF1ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcg
QEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRp
YXRlZCkKIAogI2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1h
aW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9u
OiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwog
Ci1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQp
ID0+IHsKICAgICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVu
Y3Rpb24gcXVlcnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1l
c3NhZ2UpCiAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcp
OwogfQogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5n
IGV4cGVjdGVkTWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBv
cnQsIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkK
ICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21h
aW4uaHRtbCIsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7
IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsg
eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlw
dEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3
aXRoIGFuIGFwcCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4
IGNkYjkxMDRhZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMx
Nyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVu
dHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJF
UShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25z
dGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlz
c2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0Ui
X3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hl
Y2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7
ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQog
ICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRl
RGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5
NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1
ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZy
YW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0
ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5
MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+
PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0Mi
OworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlz
c2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7
Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQg
fSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIs
IDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4
NWY3ZDg5ZGJkODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAt
MTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRp
b25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAg
ICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJy
b3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0
aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZp
ZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVu
dGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERv
bWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQp
dXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250
ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBA
QCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlv
bihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBu
YXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihy
ZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAot
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1l
c3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7
ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQi
IH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5C
eXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7
CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUg
c3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2Vy
OiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4i
OworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29y
a2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1s
IildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUg
PSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVu
cmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7
ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIv
c3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFT
dG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5
NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBm
YWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsK
KyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0
bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBU
RVNUKFByb2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAg
IHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rl
c3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9
LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1s
Il9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3Mg
fSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwog
CiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uKCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENv
bnRlbnRNb2RlSW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
IHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwi
X3MsIHsgImZvbyJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1s
IiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1P
cGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAi
L2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwi
X3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9
IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAog
ICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhk
YmM1YjcxZS4uZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVs
Lm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERl
bGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJB
ZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9z
LCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1MWZl
Li4yZjE5NTJjMjk4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyAr
MTkyLDcgQEAgcHVibGljOgogICAgICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxz
ZTsKICAgICAgICAgbV9tZXNzYWdlID0gQ1N0cmluZygpOwogICAgICAgICBhdXRvIHNpZ25hbElE
ID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExC
QUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRv
QmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9C
YWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MpOwogICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdl
YlZpZXdXYXNDYWxsZWQpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9j
cmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdl
ID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Np
b24sICJjcmVhdGUtd2ViLXZpZXc6OndpbmRvdyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0lu
V2luZG93Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNy
ZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0i
KTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJf
cywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFp
bl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1f
Y3JlYXRlV2ViVmlld0luV2luZG93V2FzQ2FsbGVkKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld0luVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAg
ICAgIG1fbWVzc2FnZSA9IHsgfTsKICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nv
bm5lY3QobV9zZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0
ZVdlYlZpZXdJblRhYkNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFi
XCJ9Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRl
eHQiX3MsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21h
aW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZSht
X2NyZWF0ZVdlYlZpZXdJblRhYldhc0NhbGxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggNTFjODE1MWM5MGFhLi4wNTQwNTUz
N2E3NTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0U1NMLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFNTTC5jcHAKQEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFzc2VydE9iamVj
dElzRGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY2VydGlmaWNhdGUpKTsKICAgICAg
ICAgbV9jZXJ0aWZpY2F0ZSA9IGNlcnRpZmljYXRlOwogICAgICAgICBtX3Rsc0Vycm9ycyA9IHRs
c0Vycm9yczsKLSAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKHsgfSwgZmFpbGluZ1VSSSk7Cisg
ICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTChTdHJpbmcgeyBmYWlsaW5nVVJJIH0pOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAKaW5kZXggMjg0ZjgwNGI2NDEwLi5iN2Mx
Y2MxYzVjNTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0VUlDbGllbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgd2luZG93UHJvcGVydGllc05vdGlmeUNhbGxiYWNrKEdPYmplY3QqLCBHUGFy
YW1TcGVjKiBwYXJhbVNwZWMsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIHRl
c3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShw
YXJhbVNwZWMpKTsKKyAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5hZGQo
U3RyaW5nIHsgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykgfSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFdlYktpdFdlYlZpZXcqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uLCBVSUNsaWVudFRl
c3QqIHRlc3QpCkBAIC03NjAsMTEgKzc2MCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dp
bmRvd1Byb3BlcnRpZXMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRl
c3QtPmxvYWRIdG1sKGh0bWxTdHJpbmcuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRV
bnRpbE1haW5Mb29wRmluaXNoZXMoKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcm9wZXJ0
aWVzQ2hhbmdlZFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb3Bl
cnRpZXNDaGFuZ2VkW10gPSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAiZ2VvbWV0cnki
LAorICAgICAgICAiZ2VvbWV0cnkiX3MsCiAjZW5kaWYKLSAgICAgICAgImxvY2F0aW9uYmFyLXZp
c2libGUiLCAibWVudWJhci12aXNpYmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXIt
dmlzaWJsZSIsICJzY3JvbGxiYXJzLXZpc2libGUiCisgICAgICAgICJsb2NhdGlvbmJhci12aXNp
YmxlIl9zLCAibWVudWJhci12aXNpYmxlIl9zLCAic3RhdHVzYmFyLXZpc2libGUiX3MsICJ0b29s
YmFyLXZpc2libGUiX3MsICJzY3JvbGxiYXJzLXZpc2libGUiX3MKICAgICB9OwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKHByb3BlcnRpZXNDaGFuZ2VkKTsgKytpKQog
ICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29u
dGFpbnMocHJvcGVydGllc0NoYW5nZWRbaV0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDQw
ZWFlYjdiZjI3YS4uYzU2OTAyYTIyOTcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTQ3Niw3
ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uUGFnZUlEKFdlYlZpZXdUZXN0
KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFJlZ2lzdGVyIGEgY3VzdG9tIFVSSSBzY2hl
bWUgdG8gdGVzdCBoaXN0b3J5IG5hdmlnYXRpb24uCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3Jl
Z2lzdGVyX3VyaV9zY2hlbWUodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCAiZm9vIiwKICAgICAg
ICAgW10oV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIpIHsKLSAgICAg
ICAgICAgIFVSTCB1cmwgPSBVUkwoeyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91
cmkocmVxdWVzdCkpOworICAgICAgICAgICAgVVJMIHVybCA9IFVSTChTdHJpbmcgeyB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgICAgICAgICBHUmVm
UHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRf
c3RyZWFtX25ldygpKTsKICAgICAgICAgICAgIGNoYXIqIGh0bWwgPSBnX3N0cmR1cF9wcmludGYo
IjxodG1sPjxoZWFkPjx0aXRsZT4lczwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+
IiwgdXJsLmhvc3QoKSA9PSAiaG9zdDUiID8gIlRpdGxlNSIgOiAiVGl0bGU2Iik7CiAgICAgICAg
ICAgICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRkX2RhdGEoR19NRU1PUllfSU5QVVRfU1RSRUFN
KGlucHV0U3RyZWFtLmdldCgpKSwgaHRtbCwgc3RybGVuKGh0bWwpLCBnX2ZyZWUpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZl
ci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2Vy
dmVyLmNwcAppbmRleCBmMGJkODY2NWY3MGEuLjI4MDM0MTE0MGYwMiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5j
cHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBXZWJLaXRUZXN0U2VydmVyOjpydW4oU291cFNlcnZl
ckNhbGxiYWNrIHNlcnZlckNhbGxiYWNrKQogCiB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OmFkZFdl
YlNvY2tldEhhbmRsZXIoU291cFNlcnZlcldlYnNvY2tldENhbGxiYWNrIGNhbGxiYWNrLCBncG9p
bnRlciB1c2VyRGF0YSkKIHsKLSAgICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJM
LCAiL3dlYnNvY2tldC8iKTsKKyAgICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJM
LCAiL3dlYnNvY2tldC8iX3MpOwogICAgIG1fYmFzZVdlYlNvY2tldFVSTC5zZXRQcm90b2NvbCht
X2Jhc2VXZWJTb2NrZXRVUkwucHJvdG9jb2xJcygiaHR0cCIpID8gIndzIiA6ICJ3c3MiKTsKIAog
ICAgIGlmIChtX3F1ZXVlKSB7CkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBDU3RyaW5nIFdlYktpdFRl
c3RTZXJ2ZXI6OmdldFdlYlNvY2tldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QK
IHsKICAgICBnX2Fzc2VydF9mYWxzZShtX2Jhc2VXZWJTb2NrZXRVUkwuaXNOdWxsKCkpOwogICAg
IGdfYXNzZXJ0X3RydWUocGF0aCAmJiAqcGF0aCA9PSAnLycpOwotICAgIHJldHVybiBVUkwobV9i
YXNlV2ViU29ja2V0VVJMLCBwYXRoICsgMSkuc3RyaW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhl
IGxlYWRpbmcgc2xhc2guCisgICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIFN0cmlu
ZyB7IHBhdGggKyAxIH0pLnN0cmluZygpLnV0ZjgoKTsgLy8gSWdub3JlIHRoZSBsZWFkaW5nIHNs
YXNoLgogfQogCiBDU3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3Qg
Y2hhciogcGF0aCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgcGF0aCkuc3Ry
aW5nKCkudXRmOCgpOworICAgIHJldHVybiBVUkwobV9iYXNlVVJMLCBTdHJpbmcgeyBwYXRoIH0p
LnN0cmluZygpLnV0ZjgoKTsKIH0KIAogdW5zaWduZWQgV2ViS2l0VGVzdFNlcnZlcjo6cG9ydCgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250
ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2Rl
Lm1tCmluZGV4IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBA
IEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENv
bnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxX
S0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBD
R1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0
aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1v
ZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0
LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkK
QEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBS
ZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBk
ZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENH
U2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0
YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJl
ZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVm
YXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25O
YW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENH
U2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZp
ZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQs
IHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRN
b2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAg
VEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91
c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlcklu
dGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktp
dEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7
ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRl
bnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJW
aWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUu
MCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3
IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BV
c2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBs
aWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUv
MTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdG
b3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVz
a3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVn
YXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZp
ZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9u
SGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWlu
c1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEF0c3BpLmNwcAppbmRleCA4Y2QyMmU0ZDM3MmEuLjg5NWYyZTY5OTAzNSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcApAQCAtMzk4
LDE4ICszOTgsMTggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmUKICAgICBtX2VsZW1lbnQtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0
cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWFBsYWNlaG9sZGVyVmFsdWUi
KQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdl
dCgicGxhY2Vob2xkZXItdGV4dCIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVK
U1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0Il9zKSku
bGVha1JlZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEludmFsaWQiKSB7CiAgICAg
ICAgIGF1dG8gdGV4dEF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPnRleHRBdHRyaWJ1dGVzKCk7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxp
ZCIpOworICAgICAgICBhdXRvIHZhbHVlID0gdGV4dEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5nZXQo
ImludmFsaWQiX3MpOwogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
dmFsdWUgPSBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQuZ2V0KCksIFdlYkNvcmU6OkF0c3Bp
OjpTdGF0ZTo6SW52YWxpZEVudHJ5KSA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgICAgICAgICB2
YWx1ZSA9IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6
OlN0YXRlOjpJbnZhbGlkRW50cnkpID8gInRydWUiX3MgOiAiZmFsc2UiX3M7CiAgICAgICAgIHJl
dHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHZhbHVlKS5sZWFrUmVmKCk7CiAgICAgfQog
ICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikKLSAgICAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQoImxpdmUiKSkubGVha1JlZigp
OworICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdl
dCgibGl2ZSJfcykpLmxlYWtSZWYoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
UmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRy
aWJ1dGVzLmdldCgicmVsZXZhbnQiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVsZXZhbnQiX3MpKS5sZWFrUmVm
KCk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAw
KTsKIH0KQEAgLTQyMCwyMSArNDIwLDIxIEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVt
ZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1l
bnQtPmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6
ZSIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0c2l6ZSIpLnRvRG91YmxlKCk7
CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0c2l6ZSJfcykudG9Eb3VibGUoKTsK
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAgICAgICByZXR1
cm4gYXR0cmlidXRlcy5nZXQoInBvc2luc2V0IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZXMuZ2V0KCJwb3NpbnNldCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uQ291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRl
cy5nZXQoImNvbGNvdW50IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMu
Z2V0KCJjb2xjb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAi
QVhBUklBUm93Q291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50
IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3djb3VudCJf
cykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uSW5k
ZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGluZGV4IikudG9Eb3VibGUo
KTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xpbmRleCJfcykudG9Eb3VibGUo
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93SW5kZXgiKQotICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2luZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uU3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzLmdldCgiY29sc3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVz
LmdldCgiY29sc3BhbiJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAi
QVhBUklBUm93U3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiIp
LnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiJfcyku
dG9Eb3VibGUoKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDQyLDggKzQ0Miw4IEBAIGRvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y3VycmVudFN0YXRlVmFsdWUoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygp
LmdldCgiY3VycmVudCIpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2
YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZhbHNlIikubGVha1JlZigpOworICAgIGF1dG8gdmFs
dWUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImN1cnJlbnQiX3MpOworICAgIHJldHVy
biBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZh
bHNlIl9zKS5sZWFrUmVmKCk7CiB9CiAKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNv
bnN0CkBAIC01MTQsNyArNTE0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29s
QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEludGVyZmFjZVRhYmxlQ2VsbCIpCiAgICAgICAgIHJldHVybiBtX2VsZW1lbnQt
PmludGVyZmFjZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OkludGVyZmFjZTo6VGFibGVDZWxsKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
QXRvbWljIikKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiYXRv
bWljIikgPT0gInRydWUiOworICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCku
Z2V0KCJhdG9taWMiX3MpID09ICJ0cnVlIjsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTUz
Niw3ICs1MzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0
dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwotICAgIFN0cmluZyBp
c1JlYWRPbmx5ID0gYXR0cmlidXRlcy5nZXQoInJlYWRvbmx5Iik7CisgICAgU3RyaW5nIGlzUmVh
ZE9ubHkgPSBhdHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiX3MpOwogICAgIGlmICghaXNSZWFkT25s
eS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpc1JlYWRPbmx5ID09ICJ0cnVlIiA/IGZhbHNl
IDogdHJ1ZTsKIApAQCAtNTczLDE3ICs1NzMsMTcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9l
bGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2Vs
ZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0
U2l6ZSIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRzaXplIik7Cisg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRzaXplIl9zKTsKICAgICBpZiAo
YXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmli
dXRlcy5jb250YWlucygicG9zaW5zZXQiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29u
dGFpbnMoInBvc2luc2V0Il9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBTGl2
ZSIpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIik7CisgICAg
ICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVzLmdldCgibGl2ZSJfcyk7CiAgICAgICAgIHJldHVy
biAhdmFsdWUuaXNFbXB0eSgpICYmIHZhbHVlICE9ICJvZmYiOwogICAgIH0KICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRl
cy5jb250YWlucygicmVsZXZhbnQiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFp
bnMoInJlbGV2YW50Il9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWlj
IikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoImF0b21pYyIpOworICAgICAg
ICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIl9zKTsKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhFbGVtZW50QnVzeSIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01
OTgsMjcgKzU5OCwyNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKIHN0YXRpYyBTdHJpbmcgeG1s
Um9sZVZhbHVlU3RyaW5nKGNvbnN0IFN0cmluZyYgeG1sUm9sZXMpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBy
ZWdpb25Sb2xlcyA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KHsK
LSAgICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMiLAotICAgICAgICAiZG9jLWFmdGVyd29yZCIs
Ci0gICAgICAgICJkb2MtYXBwZW5kaXgiLAotICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSIsCi0g
ICAgICAgICJkb2MtY2hhcHRlciIsCi0gICAgICAgICJkb2MtY29uY2x1c2lvbiIsCi0gICAgICAg
ICJkb2MtY3JlZGl0cyIsCi0gICAgICAgICJkb2MtZW5kbm90ZXMiLAotICAgICAgICAiZG9jLWVw
aWxvZ3VlIiwKLSAgICAgICAgImRvYy1lcnJhdGEiLAotICAgICAgICAiZG9jLWZvcmV3b3JkIiwK
LSAgICAgICAgImRvYy1nbG9zc2FyeSIsCi0gICAgICAgICJkb2MtZ2xvc3NyZWYiLAotICAgICAg
ICAiZG9jLWluZGV4IiwKLSAgICAgICAgImRvYy1pbnRyb2R1Y3Rpb24iLAotICAgICAgICAiZG9j
LXBhZ2VsaXN0IiwKLSAgICAgICAgImRvYy1wYXJ0IiwKLSAgICAgICAgImRvYy1wcmVmYWNlIiwK
LSAgICAgICAgImRvYy1wcm9sb2d1ZSIsCi0gICAgICAgICJkb2MtdG9jIiwKLSAgICAgICAgInJl
Z2lvbiIKKyAgICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMiX3MsCisgICAgICAgICJkb2MtYWZ0
ZXJ3b3JkIl9zLAorICAgICAgICAiZG9jLWFwcGVuZGl4Il9zLAorICAgICAgICAiZG9jLWJpYmxp
b2dyYXBoeSJfcywKKyAgICAgICAgImRvYy1jaGFwdGVyIl9zLAorICAgICAgICAiZG9jLWNvbmNs
dXNpb24iX3MsCisgICAgICAgICJkb2MtY3JlZGl0cyJfcywKKyAgICAgICAgImRvYy1lbmRub3Rl
cyJfcywKKyAgICAgICAgImRvYy1lcGlsb2d1ZSJfcywKKyAgICAgICAgImRvYy1lcnJhdGEiX3Ms
CisgICAgICAgICJkb2MtZm9yZXdvcmQiX3MsCisgICAgICAgICJkb2MtZ2xvc3NhcnkiX3MsCisg
ICAgICAgICJkb2MtZ2xvc3NyZWYiX3MsCisgICAgICAgICJkb2MtaW5kZXgiX3MsCisgICAgICAg
ICJkb2MtaW50cm9kdWN0aW9uIl9zLAorICAgICAgICAiZG9jLXBhZ2VsaXN0Il9zLAorICAgICAg
ICAiZG9jLXBhcnQiX3MsCisgICAgICAgICJkb2MtcHJlZmFjZSJfcywKKyAgICAgICAgImRvYy1w
cm9sb2d1ZSJfcywKKyAgICAgICAgImRvYy10b2MiX3MsCisgICAgICAgICJyZWdpb24iX3MKICAg
ICB9KTsKIAogICAgIGlmIChyZWdpb25Sb2xlcy0+Y29udGFpbnMoeG1sUm9sZXMpKQpAQCAtNzYy
LDcgKzc2Miw3IEBAIHN0YXRpYyBTdHJpbmcgcm9sZVZhbHVlVG9TdHJpbmcodW5zaWduZWQgcm9s
ZVZhbHVlKQogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNjcm9sbEJhcjoKICAgICAg
ICAgcmV0dXJuICJBWFNjcm9sbEJhciJfczsKICAgICBjYXNlIFdlYkNvcmU6OkF0c3BpOjpSb2xl
OjpTY3JvbGxQYW5lOgotICAgICAgICByZXR1cm4gIkFYU2Nyb2xsQXJlYSI7CisgICAgICAgIHJl
dHVybiAiQVhTY3JvbGxBcmVhIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNl
Y3Rpb246CiAgICAgICAgIHJldHVybiAiQVhTZWN0aW9uIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6
QXRzcGk6OlJvbGU6OlNlcGFyYXRvcjoKQEAgLTgxNyw3ICs4MTcsNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiB7CiAgICAgbV9lbGVt
ZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIHJvbGVWYWx1ZSA9IG1fZWxlbWVu
dC0+cm9sZSgpOwotICAgIGF1dG8gcm9sZVZhbHVlU3RyaW5nID0gcm9sZVZhbHVlID09IFdlYkNv
cmU6OkF0c3BpOjpSb2xlOjpMYW5kbWFyayA/IHhtbFJvbGVWYWx1ZVN0cmluZyhtX2VsZW1lbnQt
PmF0dHJpYnV0ZXMoKS5nZXQoInhtbC1yb2xlcyIpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVW
YWx1ZSk7CisgICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6
QXRzcGk6OlJvbGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0
cmlidXRlcygpLmdldCgieG1sLXJvbGVzIl9zKSkgOiByb2xlVmFsdWVUb1N0cmluZyhyb2xlVmFs
dWUpOwogICAgIGlmIChyb2xlVmFsdWVTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtODMyLDE0ICs4
MzIsMTQgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnN1YnJvbGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvbGVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKLSAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygp
LmdldCgicm9sZWRlc2NyaXB0aW9uIik7CisgICAgYXV0byByb2xlRGVzY3JpcHRpb24gPSBtX2Vs
ZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInJvbGVkZXNjcmlwdGlvbiJfcyk7CiAgICAgcmV0dXJu
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWFrZVN0cmluZygiQVhSb2xlRGVzY3JpcHRpb246
ICIsIHJvbGVEZXNjcmlwdGlvbikpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAg
ICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGNvbXB1dGVkUm9s
ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY29tcHV0ZWQtcm9sZSIpOworICAgIGF1
dG8gY29tcHV0ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1y
b2xlIl9zKTsKICAgICBpZiAoY29tcHV0ZWRSb2xlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKQEAgLTk3Miw3ICs5
NzIsNyBAQCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAog
CiAgICAgLy8gQ29uc2lkZXIgaGVhZGluZ3MgYXMgYW4gc3BlY2lhbCBjYXNlIHdoZW4gcmV0dXJu
aW5nIHRoZSBpbnQgdmFsdWUuCiAgICAgaWYgKG1fZWxlbWVudC0+cm9sZSgpID09IFdlYkNvcmU6
OkF0c3BpOjpSb2xlOjpIZWFkaW5nKQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJsZXZlbCIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQt
PmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIl9zKS50b0RvdWJsZSgpOwogCiAgICAgcmV0dXJuIDA7
CiB9CkBAIC05OTksNyArOTk5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQogewogICAgIG1fZWxlbWVudC0+dXBk
YXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRy
aWJ1dGVzKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1ha2VTdHJpbmcoIkFYVmFsdWVEZXNjcmlwdGlv
bjogIiwgYXR0cmlidXRlcy5nZXQoInZhbHVldGV4dCIpKTsKKyAgICBhdXRvIHZhbHVlID0gbWFr
ZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0
Il9zKSk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtS
ZWYoKTsKIH0KIApAQCAtMTA3Niw3ICsxMDc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwotICAgIGF1dG8gbGV2ZWwgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQo
ImxldmVsIik7CisgICAgYXV0byBsZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgi
bGV2ZWwiX3MpOwogICAgIGlmIChsZXZlbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwog
CkBAIC0xMDkxLDEzICsxMDkxLDEzIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXJpYUlzR3JhYmJlZCgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKLSAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJncmFiYmVkIikg
PT0gInRydWUiOworICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJi
ZWQiX3MpID09ICJ0cnVlIjsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVtZW50
LT5hdHRyaWJ1dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Iik7CisgICAgYXV0byBkcm9wRWZmZWN0cyA9
IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZHJvcGVmZmVjdCJfcyk7CiAgICAgaWYgKGRy
b3BFZmZlY3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUoZHJvcEVmZmVjdHMpLmxlYWtSZWYoKTsKQEAgLTE0MjksNyArMTQyOSw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5n
KCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwg
MCk7CiAKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVu
Y29kaW5nIikpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJFbmNvZGluZyJfcykpLmxlYWtSZWYoKTsK
IH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRv
Y3VtZW50VVJJKCkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCiAgICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCiAgICAgbV9lbGVtZW50
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJVUkkiKSkubGVha1JlZigpOworICAg
IHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRy
aWJ1dGUoIlVSSSJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFp
bi5jcHAKaW5kZXggMTIwNGNiNTI4YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvbWFpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFN1bW1h
cnlQcm92aWRlcnMoKQogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgdWludDhfdD4g
ZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44Qml0U3RyaW5nLCAy
NTUgfTsKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIGJvb2w+IGV4YW1wbGVDb21w
YWN0UG9pbnRlclR1cGxlU2ltcGxlQm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRydWUgfTsKICAgICAK
LSAgICBVUkwgYVVSTCh7IH0sICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIpOworICAgIFVSTCBh
VVJMKCJodHRwczovL3d3dy5leGFtcGxlLmNvbSJfcyk7CiAKICAgICBicmVha0ZvclRlc3RpbmdT
dW1tYXJ5UHJvdmlkZXJzKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="484842"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456522</attachid>
            <date>2022-04-03 16:04:44 -0700</date>
            <delta_ts>2022-04-03 17:49:08 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>343155</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5iNzcxY2FkZTU0YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50
c0NhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXMKIAogICAg
IGF1dG8qIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSk7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfZmlsZV9nZXRfcGF0aChmaWxlKSk7Ci0gICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUocGF0aC5nZXQoKSkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFN0cmluZzo6ZnJv
bVVURjgocGF0aC5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZURpYWxvZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhMjYzMDg4NTcz
Y2YuLmI2NjQzNzEzZjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94
eSwKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3Nh
Z2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsK
IAogICAgIC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9h
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1v
dGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3Yjgw
NDc3YmRjLi5hMWM2OGU0MjBlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVBy
b3h5V2luLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIExSRVNVTFQgUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eTo6b25DbG9zZSgpCiAKIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewotICAgIFJlZlB0
cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0
cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3Rv
clVJUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9X
ZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAppbmRleCBmNDAwZDVlNzM3MTkuLjFhMTkxNTU1Zjll
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxP
UEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5z
cGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHBy
ZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1
bmNoZXIuY3BwCmluZGV4IDlkM2Y5OGEzNDk0MC4uZTJmOTcxMzI1NTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3Mgewog
CiBzdGF0aWMgdm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3Ms
IGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikK
IHsKLSAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgp
OworICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5n
Ojpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAg
Q1N0cmluZyBycGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0
b3IoVmVjdG9yPENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRh
KCkgfSkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdy
YXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAg
ICAgICAgYWRkRXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5k
Ym94QXJncyk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2Nr
ZXQiLCAid2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlz
RGlyZWN0b3J5Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
Il9zIH07CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAg
ICAgICAgICAgIFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5
ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAg
ICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFw
cGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCAwZDFmNDAwZTQ0NDEuLmNmZTdhMGViM2JlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlz
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50Rmls
ZURlc2NyaXB0b3IgPSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25f
bGlicmFyeV9uYW1lKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFy
eU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3Bl
X2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAg
IH0KICNlbmRpZgogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAg
ICAgICAgIHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvLjEiKTsKICAg
ICAgICAgaWYgKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVu
dHMoKSkgewogICAgICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3Ig
PSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmcgeyB3cGVfbG9h
ZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkgfSk7CiAgICAgICAg
IH0KICNlbGlmIFVTRShFR0wpCiAgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5TmFtZSA9IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNwbGF5TmFtZSgp
OwpAQCAtMTE2LDggKzExNiw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAKICAgICBHQXBw
bGljYXRpb24qIGFwcCA9IGdfYXBwbGljYXRpb25fZ2V0X2RlZmF1bHQoKTsKICAgICBpZiAoYXBw
KQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQgPSBnX2FwcGxpY2F0aW9uX2dldF9h
cHBsaWNhdGlvbl9pZChhcHApOwotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gZ19n
ZXRfYXBwbGljYXRpb25fbmFtZSgpOworICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQg
PSBTdHJpbmcgeyBnX2FwcGxpY2F0aW9uX2dldF9hcHBsaWNhdGlvbl9pZChhcHApIH07CisgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbk5hbWUgPSBTdHJpbmcgeyBnX2dldF9hcHBsaWNhdGlvbl9u
YW1lKCkgfTsKIAogICAgIHBhcmFtZXRlcnMuaW5zcGVjdG9yU2VydmVyQWRkcmVzcyA9IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjppbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3Bw
CmluZGV4IDYzMzg4NGRhZGNiMS4uODY0ZDBlMzZmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQo
KSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVu
YWJsZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29s
LT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5
Li42MjY5Y2M0ZDI4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3Rr
Il9zCiAjZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisj
ZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiX3MKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRl
eCBlOGI5YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJv
YXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGlj
YXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OlNtYXJ0UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAg
ICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3Rh
dGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwg
Q2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRh
cmdldFR5cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1Rh
cmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0Lmdl
dCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2Fy
ZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAg
ICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAg
ICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmlu
ZGV4IDA3YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAg
ICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMo
KTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9y
X2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdl
dCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJh
Y3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKaW5kZXggMTU5OTcxYWNjNmYwLi5mZTEwZGUyNmEyNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cApAQCAtMTk4LDIzICsxOTgsMjMgQEAgS2V5QmluZGluZ1RyYW5zbGF0b3I6On5LZXlCaW5kaW5n
VHJhbnNsYXRvcigpCiBzdHJ1Y3QgS2V5Q29tYmluYXRpb25FbnRyeSB7CiAgICAgdW5zaWduZWQg
Z2RrS2V5Q29kZTsKICAgICB1bnNpZ25lZCBzdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogfTsKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9u
RW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9IHsKLSAgICB7IEdES19LRVlfYiwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgIH0sCi0g
ICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlSXRhbGljIiAgICB9LAotICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdE
S19LRVlfZ3JlYXRlciwgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDYW5j
ZWwiICAgICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICB9LAotICAgIHsgR0RLX0tFWV9U
YWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0
YWIiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVy
LCAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9
LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAg
eyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
SW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9N
QVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19L
RVlfViwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJQYXN0ZUFz
UGxhaW5UZXh0IiB9LAorICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiX3MgICAgICB9LAorICAgIHsgR0RLX0tFWV9p
LCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2dsZUl0YWxp
YyJfcyAgICB9LAorICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9ncmVh
dGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAg
ICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiJfcyAgICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiX3Mg
ICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9
LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAg
IHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywg
IlBhc3RlQXNQbGFpblRleHQiX3MgfSwKIH07CiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBoYW5k
bGVLZXlCaW5kaW5nc0Zvck1hcChjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5KiBtYXAsIHVuc2ln
bmVkIG1hcFNpemUsIHVuc2lnbmVkIGtleXZhbCwgR2RrTW9kaWZpZXJUeXBlIHN0YXRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5k
ZXggYTg2YjM0ZGRhYThmLi5lMzE4ODlmMzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0
aWMgU3RyaW5nIGJhY2tlbmRDb21tYW5kc1BhdGgoKQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24odXJsUmVmLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxV
SW50OCo+KHBhdGgpLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1
cm4gcGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKIH0KIAogc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZTVhOGMzYjY5ZTE3
Li45ZDdlNzFjMjI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9X
ZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAK
QEAgLTI0MCw3ICsyNDAsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJ
OjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3Bh
Z2UtPmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVN
T1RFX0lOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUo
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0
b3IiKTsKKyAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwog
I2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBo
ZXJlIG1hdGNoZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2Vi
S2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1Li40NGNiZjczYzZh
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTczMywxMCArNzMz
LDEwIEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2Uq
IHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGlmIChtZXNzYWdlTmFtZSA9PSBTdHJpbmcoIkdldFNuYXBzaG90IikpIHsKLSAgICAgICAgU25h
cHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9u
cz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RPcHRpb25z
IikpLT52YWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0
PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSktPnZhbHVlKCk7Ci0gICAg
ICAgIFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9uPihz
dGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+
dmFsdWUoKSk7Ci0gICAgICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nh
c3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRyYW5zcGFyZW50QmFja2dyb3VuZCIpKS0+
dmFsdWUoKTsKKyAgICAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRp
Y19jYXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdl
LmdldCgiU25hcHNob3RPcHRpb25zIl9zKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJh
Y2tJRCJfcykpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0
aWNfY2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdl
LmdldCgiU25hcHNob3RSZWdpb24iX3MpKS0+dmFsdWUoKSk7CisgICAgICAgIGJvb2wgdHJhbnNw
YXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQo
IlRyYW5zcGFyZW50QmFja2dyb3VuZCJfcykpLT52YWx1ZSgpOwogCiAgICAgICAgIFJlZlB0cjxX
ZWJJbWFnZT4gc25hcHNob3RJbWFnZTsKICAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2Ut
PnByaXYtPndlYlBhZ2U7CkBAIC03NjUsMTAgKzc2NSwxMCBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VE
aWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYQogICAgICAgICB9CiAKICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3Nh
Z2VSZXBseTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSIsIHdlYlBhZ2UpOwotICAg
ICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lEIiwgQVBJOjpVSW50NjQ6OmNyZWF0ZShj
YWxsYmFja0lEKSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNo
b3RJbWFnZSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxl
KCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5
OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CisgICAgICAgIG1lc3NhZ2VS
ZXBseS5zZXQoIlBhZ2UiX3MsIHdlYlBhZ2UpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJD
YWxsYmFja0lEIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAg
bWVzc2FnZVJlcGx5LnNldCgiU25hcHNob3QiX3MsIHNuYXBzaG90SW1hZ2UpOworICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2Vi
UGFnZS5EaWRHZXRTbmFwc2hvdCJfcywgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZSht
ZXNzYWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAKaW5kZXgg
NDUyY2YwY2M4YzdhLi4zMzg0ZmEyNThjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVu
dFdQRS5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0
S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKIHN0YXRpYyB2b2lkIGhhbmRs
ZUtleVByZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAgICBTdHJpbmcgY29tbWFuZE5h
bWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1hbmROYW1lIHsg
aW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAKICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1w
dHkoKSkgewogICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVj
dXRlKCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJh
bWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXkKIAogc3Rh
dGljIHZvaWQgaGFuZGxlS2V5RG93bihGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50
LCBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKQogewotICAgIFN0cmluZyBjb21tYW5kTmFt
ZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgeyBp
bnRlcnByZXRLZXlFdmVudChldmVudCkgfTsKICAgICBpZiAoY29tbWFuZE5hbWUuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZDZiMzIyYTA5NjBmLi5hMmUxYzEzMTUwNTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUyLDcgKzM4NTIs
NyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3Jp
cHQgaW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAw
LCBFeGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9t
YWluLiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1
bkphdmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1i
b3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBj
Mzc0Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBh
Z2U6OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1h
bmRUeXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3lu
dGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAg
ICAgInoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBs
YXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3Ms
CisgICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJ5IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSsw
MDU5Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93
KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZTo6VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlC
Il9zLAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIi
X3MsICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIs
ICJpIiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
aSJfcywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJf
cywgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRv
Z2dsZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3Ms
Ci0gICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywg
V2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZl
bnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywg
IktleVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBs
YXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9y
R21haWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAg
cmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMi
KTsKKyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7
IH0sICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGJi
NTEyYWVjMzQ1MC4uNzY0NDNhOTQyNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgYm9v
bCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2
ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3du
RXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBm
cmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQp
IH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5
RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlv
biBhYm91dCBtb2RlIHRvIGRlY2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENs
aWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYs
NyArODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2ln
bmluZ0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
KSB7CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAg
ICAgLy8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdl
YnB1c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2ln
bmluZ0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0g
ICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0
LlRlc3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIg
PSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYg
KCFtX2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9ET00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAz
OWQ4NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
CkBAIC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlT
ZXQgPSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0
KGRvY3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwg
ZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCkt
PnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAg
cmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1l
bnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxw
dHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuaAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3Ry
aW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxl
ZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFy
T2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50
KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZh
MTllNmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERl
ZmVyTWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5j
b2RpbmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5j
b2RpbmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5s
b2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIu
LmYxNGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdp
dGhTdHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtw
cmVmZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7
Ci0gICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHko
IkFwcGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBp
Y3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUt
PnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMy
OTBkYWUzNzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJs
ZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNw
cApAQCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBv
YmopOwogICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFz
ZTo6fkFjY2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vz
c2libGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQg
d2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5
UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBA
IC0zNCwxMyArMzQsMTMgQEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWci
X3MpOwogfQogCiBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVBy
b3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJm
NjM3YWJjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3du
bG9hZERlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1
bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVm
YXVsdERvd25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhh
c2hTZXQ8SVdlYkRvd25sb2FkKj46Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwog
ICAgIGZvciAoO2kgIT0gbV9kb3dubG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVs
ZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGlj
eURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxl
Z2F0ZS5jcHAKaW5kZXggZThlNWY1YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMg
KzQzLDEzIEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwog
fQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0
UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBv
bGljeURlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVt
b3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVt
b3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAg
ICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5
U3RyZWFtKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1v
cnlTdHJlYW0iX3MpOwogfQogCiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4
NmQxNS4uZTk3YzQxMzI0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QWN0aW9uUHJvcGVydHlCYWcuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVy
dHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgUmVmUHQKICAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9
CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Q
cm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJv
cGVydHlCYWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVm
UHRyPEhUTUxGb3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhm
MjcxNjJiYmFmMS4uZjMxMDJlNTI2ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0
aW9uQ2FjaGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNh
Y2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJB
cHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGlj
YXRpb25DYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3Ry
aW5nIGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIAogV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2UmIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
cmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5sZWFrUmVm
KCk7CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGlj
YXRpb25DYWNoZSJfcykubGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2Ny4uMTdkZWJj
NDg3ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtNjIsMTMg
KzYyLDEzIEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+
JiYgY29yZUFyY2hpdmUpCiAjZW5kaWYKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViQXJjaGl2ZSJfcyk7CiB9CiAKIFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSJfcyk7CiB9CiAK
IEhSRVNVTFQgV2ViQXJjaGl2ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA5MDRhYzJkMjgxMDQuLjExNmFhNDIwMTc2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBA
IC01NCw3ICs1NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFJl
ZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0CiAgICAgYmFja0ZvcndhcmRM
aXN0V3JhcHBlcnMoKS5zZXQobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCksIHRoaXMpOwogCiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJk
TGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Il9z
KTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKQEAgLTY1
LDcgKzY1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKICAg
ICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnJlbW92ZShtX2JhY2tGb3J3YXJkTGlzdC5nZXQo
KSk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJC
YWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3QqIFdlYkJhY2tGb3J3
YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9y
d2FyZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKaW5kZXggZGU4NTBlNzEz
YjAzLi44YjE2YjQzZDQxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKQEAg
LTQ3LDEzICs0NywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNhY2hlOjpXZWJD
YWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSJfcyk7CiB9
CiAKIFdlYkNhY2hlOjp+V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZSogV2ViQ2FjaGU6OmNyZWF0ZUlu
c3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0
aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNw
cAppbmRleCAzNTY5ODNjNTJiMzcuLmYxMzE2ZGU0NmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ29yZVN0YXRpc3RpY3M6OldlYkNvcmVTdGF0aXN0aWNz
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
Q29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0
aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3M6On5XZWJDb3JlU3RhdGlzdGljcygp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkNvcmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3Jl
U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzKiBXZWJDb3JlU3RhdGlzdGlj
czo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0
YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRy
X29wdF8KICAgICBJdGVyYXRvciBlbmQgPSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAg
SGFzaE1hcDxTdHJpbmcsIGludD4gdHlwZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3Vy
cmVudCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJy
ZW50KQotICAgICAgICB0eXBlQ291bnRNYXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFs
dWUpOworICAgICAgICB0eXBlQ291bnRNYXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBj
dXJyZW50LT52YWx1ZSk7CiAKICAgICBDT01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9w
dENPTSwgQ09NUHJvcGVydHlCYWc8aW50Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7
CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8odHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0VHlwZUNv
dW50cyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eQogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2Jq
ZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRN
YXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2lu
KCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQo
Y3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQo
U3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJ
UHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVh
dGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFt
ZXNBbmRDb3VudHMpOwpAQCAtMjk2LDEzICsyOTYsMTMgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlz
dGljczo6bWVtb3J5U3RhdGlzdGljcyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHN0
YXQKICAgICBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFs
TWVtb3J5U3RhdGlzdGljcygpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIGxvbmcg
bG9uZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBmaWVsZHM7Ci0gICAgZmllbGRzLmFkZCgi
RmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9u
Zz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSk7Ci0gICAgZmllbGRzLmFk
ZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
IGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKLSAgICBmaWVs
ZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxpc3RCeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOwotICAgIGZpZWxk
cy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSIsIGhlYXBTaXplKTsKLSAgICBmaWVsZHMuYWRkKCJK
YXZhU2NyaXB0RnJlZVNpemUiLCBoZWFwRnJlZSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlw
dFN0YWNrU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5
U3RhdHMuc3RhY2tCeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRl
cykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiX3MsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRW
TUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiX3Ms
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29t
bWl0dGVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVz
Il9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNz
LmZyZWVMaXN0Qnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiX3Ms
IGhlYXBTaXplKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiX3MsIGhlYXBG
cmVlKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIl9zLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKKyAg
ICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SklUU2l6ZSJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcykpOwogCiAgICAgKnN0YXRpc3Rp
Y3MgPSBDT01Qcm9wZXJ0eUJhZzx1bnNpZ25lZCBsb25nIGxvbmcsIFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPjo6YWRvcHQoZmllbGRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5k
ZXggMjExNTk4ZDM5YTZhLi5iOWY0MTA5MzU5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAt
NDU0LDcgKzQ1NCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRG
cm9tRXZlbnQoRWxlbWVudCogZSwgS2V5Ym9hcmRFdmVudCoga2UpCiAgICAgICAgIGlmIChkb21F
bGVtZW50KSB7CiAgICAgICAgICAgICBJRE9NSFRNTElucHV0RWxlbWVudCogZG9tSW5wdXRFbGVt
ZW50OwogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkb21FbGVtZW50LT5RdWVyeUludGVyZmFj
ZShJSURfSURPTUhUTUxJbnB1dEVsZW1lbnQsICh2b2lkKiopJmRvbUlucHV0RWxlbWVudCkpKSB7
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgPSBtX3dlYlZpZXctPmludGVycHJldEtl
eUV2ZW50KGtlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCB7IG1fd2ViVmlldy0+
aW50ZXJwcmV0S2V5RXZlbnQoa2UpIH07CiAgICAgICAgICAgICAgICAgLy8gV2UgYWxsb3cgZW1w
dHkgY29tbWFuZHMgaGVyZSBiZWNhdXNlIHRoZSBhcHAgY29kZSBhY3R1YWxseSBkZXBlbmRzIG9u
IHRoaXMgYmVpbmcgY2FsbGVkIGZvciBhbGwga2V5IHByZXNzZXMuCiAgICAgICAgICAgICAgICAg
Ly8gV2UgbWF5IHdhbnQgdG8gcmV2aXNpdCB0aGlzIGxhdGVyIGJlY2F1c2UgaXQgZG9lc24ndCBy
ZWFsbHkgbWFrZSBzZW5zZSB0byBzZW5kIGFuIGVtcHR5IGNvbW1hbmQuCiAgICAgICAgICAgICAg
ICAgZm9ybURlbGVnYXRlLT5kb1BsYXRmb3JtQ29tbWFuZChkb21JbnB1dEVsZW1lbnQsIEJTdHJp
bmcoY29tbWFuZCksIGtpdChlLT5kb2N1bWVudCgpLmZyYW1lKCkpLCAmcmVzdWx0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5m
NzhjMWJkMmE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3Bw
CkBAIC01Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRh
dGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJj
ZTo6fldlYkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgp
OwogICAgIFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2Vi
RGF0YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3
Njc3MjAzMTVjMy4uOGYzNzY1NDEyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNl
TWFuYWdlciogV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFz
ZU1hbmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJh
c2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAv
LyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUs
NyArMzUsNyBAQCBXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFT
b3VyY2UoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRv
Y3VtZW50TG9hZGVyIl9zKTsKIH0KIAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVu
dExvYWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vi
c3RpdHV0ZURhdGEmIGRhdGEpCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRl
cj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsCiBXZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2Fk
ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9z
KTsKICAgICBpZiAobV9kYXRhU291cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERh
dGFTb3VyY2UpOwogICAgICAgICBtX2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMs
NyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRv
d25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9
CiAKIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3du
bG9hZDo6fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERl
c3Ryb3lpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJE
b3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggMTgxMGE2Njg1ODE4Li5mYzY0Yjli
Yzk5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZO
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3Bw
CkBAIC0zMDYsNyArMzA2LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW8KICAgICB9CiAKICAg
ICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhIFVSTCBvciBkZXNjcmlwdGlvbiBmb3IgdGhpcyBlcnJv
ciBjb2RlPwotICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWlu
KSwgV2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCAiIik7Cisg
ICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxF
cnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksIGVtcHR5U3RyaW5nKCkpOwog
ICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3IoQWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJ
bnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdhdGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywg
d2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEcm9wU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2Uu
Y3BwCmluZGV4IDZiYWJmOTBiODlmYS4uNWIxYzVkZmM3ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIFdlYkRyb3BTb3Vy
Y2U6OldlYkRyb3BTb3VyY2UoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJW
aWV3KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJEcm9wU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEcm9wU291cmNl
Il9zKTsKIH0KIAogV2ViRHJvcFNvdXJjZTo6fldlYkRyb3BTb3VyY2UoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIl9zKTsKIH0KIAog
U1RETUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJp
aWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOGFmYmEwZjZkNTNhLi5j
NjFmMTcyZDQ3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1l
bnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVu
dFByb3BlcnR5QmFnLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQcm9wZXJ0eUJh
Zzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAg
ICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3Bl
cnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlC
YWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJvcGVydHlC
YWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyog
V2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRUZXN0UmVzdWx0
JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTlkZTM3MWJl
YTFjLi43MTYxMjE5MjMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKQEAg
LTQ2LDEzICs0NiwxMyBAQCBXZWJFcnJvcjo6V2ViRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCiAgICAgLCBtX2Vycm9yKGVycm9yKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJv
cjo6fldlYkVycm9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkVycm9yIl9zKTsKIH0KIAogV2ViRXJyb3IqIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA1OTQ4YjBlYzViODAuLjA3YmQ0NmZjOTk4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIFdl
YkZyYW1lOjpXZWJGcmFtZSgpCiB7CiAgICAgV2ViRnJhbWVDb3VudCsrOwogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZTo6fldlYkZyYW1l
KCkKQEAgLTI1MSw3ICsyNTEsNyBAQCBXZWJGcmFtZTo6fldlYkZyYW1lKCkKICAgICBkZWxldGUg
ZDsKICAgICBXZWJGcmFtZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lKiBXZWJGcmFtZTo6Y3JlYXRlSW5zdGFu
Y2UoKQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJD
b3JlOjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5CiB7CiAgICAg
U3RyaW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsK
ICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwi
OworICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAgICBTdHJpbmcg
ZW5jb2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRleHRFbmNvZGlu
Z05hbWUpKTsKIApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c2VsZWN0
QWxsKCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsK
IAotICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVj
dXRlKCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJf
cykuZXhlY3V0ZSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgcmV0dXJuIFNfT0s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3Rl
bmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIu
Y3BwCmluZGV4IGFmZWQyYjRlNmE0Mi4uOTQ0NjhiYjczZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcApAQCAtMzksMTMgKzM5
LDEzIEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIoUmVm
UHRyPEZyYW1lPiYmIGZyYW1lKQogICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGlj
eUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxG
cmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3Li42ODkyZjc3
MWFkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lcjo6V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihSZWZQdHI8R2Vv
bG9jYXRpb24+JiYKICAgICAsIG1fZ2VvbG9jYXRpb24oV1RGTW92ZShnZW9sb2NhdGlvbikpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyOjp+V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4
IDkyNGM0OGIxM2M0MS4uZmYxZmQ5MGM0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIENP
TVB0cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVh
dGVJbnN0YW5jZSgpCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2NhdGlvblBvc2l0
aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5X
ZWJHZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIEhS
RVNVTFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQg
cmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAppbmRleCA0NmFhYWU5N2Q3YmIu
Ljg2YTNjYjZkYWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRN
TFJlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1M
UmVwcmVzZW50YXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlv
bjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIHsKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25D
b3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhU
TUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhU
TUxSZXByZXNlbnRhdGlvbigpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlv
bjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiAKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25D
b3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbiog
V2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjcmVhdGVJbnN0YW5jZShXZWJGcmFtZSogZnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDNmMWViNmQ3MzhiZC4uNTBh
OGU1ZjZiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtODks
NyArODksNyBAQCBzdGF0aWMgaW5saW5lIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJ
bmZvRnJvbUhpc3RvcnlJdGVtKEJTVFIgbm90aWZpY2F0aQogV2ViSGlzdG9yeTo6V2ViSGlzdG9y
eSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
Ykhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnkiX3MpOwog
CiAgICAgbV9wcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZl
cmVuY2VzKCk7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIFdlYkhpc3Rvcnk6OldlYkhpc3RvcnkoKQog
V2ViSGlzdG9yeTo6fldlYkhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJIaXN0b3J5Il9zKTsKIH0KIAogV2ViSGlzdG9yeSogV2ViSGlzdG9yeTo6
Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0u
Y3BwCmluZGV4IGZiODhlMzllN2I1Ni4uOGRkOWJkYWFhMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdlYkhpc3RvcnlJ
dGVtOjpXZWJIaXN0b3J5SXRlbShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0ZW0pCiAg
ICAgaGlzdG9yeUl0ZW1XcmFwcGVycygpLnNldChtX2hpc3RvcnlJdGVtLmdldCgpLCB0aGlzKTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0
b3J5SXRlbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0ZW0iX3Mp
OwogfQogCiBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKQEAgLTYyLDcgKzYyLDcg
QEAgV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCiAgICAgaGlzdG9yeUl0ZW1XcmFw
cGVycygpLnJlbW92ZShtX2hpc3RvcnlJdGVtLmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iX3MpOwogfQogCiBXZWJIaXN0
b3J5SXRlbSogV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGY2MjE5YTY2ZGFhOS4uNDQ3ZDkyYTNhM2Nj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTUxLDEzICs1
MSwxMyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNwZWN0ZWRXZWJW
aWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlYwogICAgIEFTU0VSVF9BUkcoaW5zcGVjdGVk
V2ViVmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0
b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3Bl
Y3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6
OmZyb250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2
YVNjcmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhlNGJlOGFjMjFiLi43NTg2NjI3MmQ1ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3Iu
Y3BwCkBAIC00MiwxMyArNDIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yOjpXZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciJf
cyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJKYXZhU2NyaXB0Q29sbGVjdG9y
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViSmF2YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViSmF2YVNjcmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3Iq
IFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCmluZGV4IGNlODYyMGZkNGJkNy4u
NmVlMDcyNTMyZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRD
bGFzc0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNz
RmFjdG9yeS5jcHAKQEAgLTY5LDEzICs2OSwxMyBAQCBXZWJLaXRDbGFzc0ZhY3Rvcnk6OldlYktp
dENsYXNzRmFjdG9yeShDTFNJRCB0YXJnZXRDbGFzcykKICAgICBXZWJDb3JlOjpwb3B1bGF0ZUpJ
VE9wZXJhdGlvbnMoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIFdlYktpdENsYXNzRmFjdG9yeTo6fldlYktp
dENsYXNzRmFjdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxv
b3AuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCmlu
ZGV4IDkzN2E2NjY5ZTkwOC4uZTY5YzBjODA4OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYktpdE1l
c3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3Nh
Z2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJLaXRN
ZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKaW5kZXggMTI2M2JjMGMxMWY5
Li5mNTE1MWNiZTBiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRp
c3RpY3MuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgaW50IFdlYkZyYW1lVmlld0NvdW50OwogV2Vi
S2l0U3RhdGlzdGljczo6V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJLaXRTdGF0
aXN0aWNzOjp+V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJLaXRTdGF0
aXN0aWNzKiBXZWJLaXRTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggNWM5MTI1Nzcy
NTI2Li4yNDQxMDY2ODg2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk11dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTXV0YWJsZVVSTFJlcXVl
c3Q6OldlYk11dGFibGVVUkxSZXF1ZXN0KGJvb2wgaXNNdXRhYmxlKQogICAgIDogbV9pc011dGFi
bGUoaXNNdXRhYmxlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiBXZWJNdXRhYmxlVVJMUmVxdWVzdCog
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkzLDcgKzkzLDcgQEAg
V2ViTXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbW11dGFi
bGVJbnN0YW5jZShjb25zdCBSZXNvdXIKIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojp+V2ViTXV0YWJs
ZVVSTFJlcXVlc3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9u
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAK
aW5kZXggYmM0ZjI2ODRhZDE2Li42YTkzM2FiYjVmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcyLDEzICs3MiwxMyBAQCBXZWJOYXZp
Z2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhOjp+V2Vi
TmF2aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0YSog
V2ViTmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNl
KiByZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwgY29uc3QgU3RyaW5nJiBjbGllbnRS
ZWRpcmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5v
dGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24u
Y3BwCmluZGV4IGY1M2JiNzI2MzUzZi4uOTQ5MjU2ZWU4MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViTm90aWZp
Y2F0aW9uOjpXZWJOb3RpZmljYXRpb24oQlNUUiBuYW1lLCBJVW5rbm93biogYW5PYmplY3QsIElQ
cm9wZXJ0eUJhZyogdXMKICAgICAgICAgbV91c2VySW5mby0+QWRkUmVmKCk7CiAKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQogCiBX
ZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJO
b3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQogICAgICAgICBtX3VzZXJJbmZvLT5SZWxl
YXNlKCk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViTm90aWZpY2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJO
b3RpZmljYXRpb24iX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlmaWNhdGlvbjo6
Y3JlYXRlSW5zdGFuY2UoQlNUUiBuYW1lIC8qPTAqLywgSVVua25vd24qIGFuT2JqZWN0IC8qPTAq
LywgSVByb3BlcnR5QmFnKiB1c2VySW5mbyAvKj0wKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA5MjUzMmRiZGNhNDEuLjZj
ZDg4NDJlN2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZp
Y2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmlj
YXRpb25DZW50ZXIuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgV2ViTm90aWZpY2F0aW9uQ2VudGVy
OjpXZWJOb3RpZmljYXRpb25DZW50ZXIoKQogICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNh
dGlvbkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0
aW9uQ2VudGVyOjp+V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3Mp
OwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJl
ZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
CmluZGV4IDljZjhjYzAyYTIxYy4uZmIxNzNkZDVjMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBXZWJQcmVmZXJl
bmNlcyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKQogV2ViUHJl
ZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXM6On5XZWJQ
cmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3Bw
CmluZGV4IDk0M2ZhN2FiNDVjOC4uM2JiYTMxZTM5ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3VyY2U6OldlYlJl
c291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3Ry
aW5nJgogICAgICwgbV9mcmFtZU5hbWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZTo6fldlYlJl
c291cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJl
c291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5j
ZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNj
cmlwdE9iamVjdC5jcHAKaW5kZXggYjhmZTMwN2NiODZiLi5kZjA3ODFmNDEyMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBACiBXZWJTY3JpcHRPYmplY3Q6OldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogV2ViU2Ny
aXB0T2JqZWN0Ojp+V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiAvLyBJVW5rbm93
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3Jp
cHRXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAK
aW5kZXggMjY4MTAxYTZjMGYwLi43ZWY4YTQ1MzQ2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIFdlYlNjcmlw
dFdvcmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxkKQog
ICAgIGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAgICsrZ0NsYXNz
Q291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3Jp
cHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2ViU2NyaXB0V29y
bGQ6On5XZWJTY3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0
KCkpOwogCiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3Jp
cHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6c3RhbmRh
cmRXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0
eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5j
cHAKaW5kZXggOTQ1Yjg2OTIzZjZiLi5lZWYxNjQzYjYxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBXZWJT
ZWN1cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5
T3JpZ2luKQogICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmln
aW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsK
IH0KIAogV2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3Jp
Z2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdpbiJf
cyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgwYTJmY2EyOS4u
N2YxMWRmNWZmZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJp
YWxpemVkSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFs
aXplZEpTVmFsdWUuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAg
ICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVk
SlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFs
dWUiX3MpOwogfQogCiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6ZWRKU1ZhbHVl
KCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogQ09NUHRyPFdlYlNlcmlhbGl6ZWRKU1ZhbHVl
PiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKaW5kZXggNjIwN2I1NmE3ZjY3Li4wNDUzNWYz
ZjcyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcApA
QCAtNDAsMTMgKzQwLDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVyOjpjcmVh
dGVJbnN0YW5jZSgpCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0K
IAogV2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBI
UkVTVUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwg
X0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKaW5kZXggNTk3
ODhjNGY1ZTI0Li40MGI3YjY2ZmE3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAgLTQ2LDEzICs0
NiwxMyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIoc2VuZGVyKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0YW5jZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKaW5kZXggMzVhODQ1ZWQ2OTNjLi41MDk5YmEwYWYxN2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIoUmVmUHRyPAogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBX
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENy
ZWRlbnRpYWwuY3BwCmluZGV4IGU3NTk0NmIyODQyNS4uYTUzMWQxMDY5OTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcsMTMgKzM3LDEz
IEBAIFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYg
Y3JlZGVudGlhbCkKICAgICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAog
V2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAog
V2ViVVJMQ3JlZGVudGlhbCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKaW5k
ZXggMTllZDk2ZjgyMTBkLi4zMWIwOWFjNGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdl
YlVSTFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rp
b25TcGFjZSYgcHJvdGVjdGlvblNwCiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9u
U3BhY2UpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMUHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjp+V2Vi
VVJMUHJvdGVjdGlvblNwYWNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQ
cm90ZWN0aW9uU3BhY2UqIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5zdGFuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE1YjIzZGJm
YTU0OS4uNjEyMjk2Y2I1NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVz
cG9uc2UuY3BwCkBAIC0yMTUsMjAgKzIxNSwyMCBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsaXplZFNo
b3J0RGVzY3JpcHRpb25Gb3JTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogV2ViVVJMUmVzcG9u
c2U6OldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2U6On5XZWJVUkxSZXNw
b25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
UkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNwb25zZTo6Y3Jl
YXRlSW5zdGFuY2UoKQogewogICAgIFdlYlVSTFJlc3BvbnNlKiBpbnN0YW5jZSA9IG5ldyBXZWJV
UkxSZXNwb25zZSgpOwogICAgIC8vIGZha2UgYW4gaHR0cCByZXNwb25zZSAtIHNvIGl0IGhhcyB0
aGUgSVdlYkhUVFBVUkxSZXNwb25zZSBpbnRlcmZhY2UKLSAgICBpbnN0YW5jZS0+bV9yZXNwb25z
ZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwg
MCwgU3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25z
ZShXVEY6OlVSTCgiaHR0cDovLyJfcyksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5z
dGFuY2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDQ4
MTIzODQ3MTNjOC4uZWRmMzM1ODZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46
OldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAog
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsK
ICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuPiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0Li5lNTVhMjQyZGNlYjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgV2Vi
Vmlldzo6V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3KCkKQEAgLTQ2
OSw3ICs0NjksNyBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQtLTsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmll
dyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7CiB9CiAKIFdl
YlZpZXcqIFdlYlZpZXc6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5OTUsMTEgQEAg
Ym9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0q
LykKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpOwogICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2Fz
ZSBTZWxlY3RBbGw6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgi
U2VsZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigp
LmNvbW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVuZG86Ci0g
ICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUo
KTsKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIl9zKS5l
eGVjdXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZy
YW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwogfQpAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVF
ZGl0aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQu
dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2
ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBh
dXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgm
ZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJp
bmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50
eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQg
ZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cg
Y29tbWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hv
dWxkIGJlIHRyZWF0ZWQsCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNv
cHkoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAg
ICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJDb3B5Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3
MzQsNyArNDczNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElVbmtub3duKiAv
KnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0g
ICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3Io
KS5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUo
KTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAgSFJFU1VMVCBX
ZWJWaWV3OjpwYXN0ZShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1f
cGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVj
dXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09L
OwogfQogCkBAIC00NzUyLDcgKzQ3NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHlVUkwoX0lu
XyBCU1RSIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9y
KCkuY29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCku
Y29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1wdHlTdHJpbmco
KSk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBAIEhSRVNVTFQg
V2ViVmlldzo6ZGVsZXRlXyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIiku
ZXhlY3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZy
YW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJX
b3JrZXJzUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJp
dmF0ZS5jcHAKaW5kZXggMDQ1MThmYWQxYTc2Li4yZTkzMWUwOGU3NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKQEAgLTkwLDExICs5MCwxMSBA
QCBXZWJXb3JrZXJzUHJpdmF0ZSogV2ViV29ya2Vyc1ByaXZhdGU6OmNyZWF0ZUluc3RhbmNlKCkK
IFdlYldvcmtlcnNQcml2YXRlOjpXZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CiAKIFdl
YldvcmtlcnNQcml2YXRlOjp+V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggY2Y3Yjc4
OWIzNWVhLi5lMTk2NjhjY2Q3NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBS
ZW5kZXJUcmVlLmNwcApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIHZvaWQgc2l6ZVdlYlZp
ZXdGb3JDdXJyZW50VGVzdCgpCiAKIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25z
dCBjaGFyKiBwYXRoT3JVcmwpCiB7Ci0gICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZp
bGVTeXN0ZW06OnBhcmVudFBhdGgocGF0aE9yVXJsKTsKKyAgICBTdHJpbmcgcGF0aFRvRm9udEZh
bGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChTdHJpbmc6OmZyb21VVEY4KHBhdGhPclVy
bCkpOwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwogICAgIGlmICghX3dmdWxs
cGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgp
LCBfTUFYX1BBVEgpKQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9u
dEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIAogICAgIFN0cmluZyBwYXRoVG9DaGVj
ayA9IGZ1bGxQYXRoOwogCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJM
YXlvdXRUZXN0cyI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJMYXlv
dXRUZXN0cyJfczsKIAogICAgIC8vIEZpbmQgdGhlIGxheW91dCB0ZXN0IHJvb3Qgb24gdGhlIGN1
cnJlbnQgcGF0aDoKICAgICBzaXplX3QgbG9jYXRpb24gPSBwYXRoVG9DaGVjay5maW5kKGxheW91
dFRlc3RzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3Nz
VGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVh
ZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywx
NSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAg
ICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NF
UlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsK
KyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAt
MCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgp
KTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEt
MCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihN
U1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0x
MzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8v
IFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1l
bnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUu
CiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgot
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikp
OwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0y
IikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVs
dD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7Cisg
ICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1
bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwg
dG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKaW5kZXggZmZiYTAwYjgwMjFhLi5lODA3MDc0ZjRjYzUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vy
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJz
LmNwcApAQCAtNTksMzIgKzU5LDMyIEBAIFRFU1QoSFRUUFBhcnNlcnMsIFBhcnNlQ3Jvc3NPcmln
aW5SZXNvdXJjZVBvbGljeUhlYWRlcikKICNpZiBVU0UoR0xJQikKIFRFU1QoSFRUUFBhcnNlcnMs
IFZhbGlkYXRlVXNlckFnZW50VmFsdWVzKQogewotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIikpOwotICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiKSk7Ci0gICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJL
aXQiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkvMTAuMCBXZWJLaXQvMTYzIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbyki
KSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkg
KGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKCkgKDwtIEVtcHR5IGNvbW1lbnQpIikpOwotICAg
IEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChsZWZ0IHBh
cmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4g
Y2hhcmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCIwMTIzNDU2Nzg5IChudW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVD
VF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xlIGNoYXJhY3RlciB0
b2tlbikiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8xMC4wIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0Il9zKSk7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBX
ZWJLaXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSJfcykpOwor
ICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChjb21t
ZW50IChuZXN0ZWQgY29tbWVudCkpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKCkgKDwtIEVtcHR5IGNvbW1lbnQpIl9zKSk7CisgICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFy
ZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmljIHRva2Vu
IGNoYXJhY3RlcnMpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCIwMTIzNDU2Nzg5IChudW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIl9zKSk7CisgICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFj
dGVyIHRva2VuKSJfcykpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCIgU2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIikpOwotICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgd2hpdGVzcGFjZSkg
IikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlxuU2Fm
YXJpIChsZWFkaW5nIG5ld2xpbmUpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiIpKTsKLSAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvIChubyB2ZXJzaW9u
IHRva2VuIGFmdGVyIHNsYXNoKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKHVudGVybWluYXRlZCBjb21tZW50IikpOwotICAgIEVYUEVD
VF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5lZCBjb21t
YW5lbnQpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
Ilx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVyKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvXG4xMC4wIChlbWJlZGVkIG5ld2xp
bmUpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIldQ
RVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIikpOwotICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbiki
KSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiICJfcykp
OworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkg
KGxlYWRpbmcgd2hpdGVzcGFjZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRlc3BhY2UpICJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlxuU2FmYXJpIChsZWFk
aW5nIG5ld2xpbmUpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXdsaW5lKVxuIl9zKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8gdmVyc2lvbiB0b2tl
biBhZnRlciBzbGFzaCkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkgKHVudGVybWluYXRlZCBjb21tZW50Il9zKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1h
bmVudCkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiX3MpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvXG4xMC4wIChlbWJlZGVkIG5l
d2xpbmUpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiX3MpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3Qg
dG9rZW4pIl9zKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiMDExMjhiMjZiMWMuLjA3YTQ1ZTBl
ZjQxNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90
IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1
cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4q
IGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNl
cGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMg
dm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRl
ZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIl9z
LCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVu
a1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAg
ICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExh
dGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtNDc3LDMyICs0NzcsMzIgQEAgVEVT
VF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdt
ZW50KQogICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRC
dWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRo
IiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJlICIs
ICJzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSJfcyk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3Mx
V2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0
b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaSIsICJzIGkiLCAicyB0
aGUgbW9zdCByaSIsICJkaSIsICJjdWxvdXMgaGkiLCAic3RvcnkgdGhlcmUgaSIsICJzLiIgfTsK
LSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIiwgdHJ1ZSk7
CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSJfcywgdHJ1
ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVu
a3MxV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3Ip
KSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwgIiAiLCAiIHRoZSBt
b3N0IHJpZGljdWxvdXMgaCIsICJ0b3J5IHRoZXJlICIsICIuIiB9OwotICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIik7CisgICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShj
aGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3IsIGFycmF5
c2l6ZShleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5r
cy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczJXaXRo
U2VwYXJhdG9yW10gPSB7ICJUaGlzIiwgIiBpcyIsICIgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXMi
LCAidG9yeSB0aGVyZSBpcyIsICIuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3Ms
IHNoYXJlZEJ1ZmZlciwgImlzIiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5r
cywgc2hhcmVkQnVmZmVyLCAiaXMiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVj
a0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShl
eHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigp
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJh
dG9yW10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaCIsICJvcnkgdGhlcmUgaXMu
IiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIp
OworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJfcyk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3Mz
V2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0
b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaXMgaXMgdGhlIG1vc3Qg
cmlkaWN1bG91cyBoaXN0IiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zLCB0cnVlKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9OwogICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKQEAgLTU1NywxMiArNTU3LDEyIEBAIFRFU1RfRihTaGFyZWRCdWZm
ZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hhcmVk
QnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRl
eHQpKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2Vw
YXJhdG9yW10gPSB7ICIiIH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwot
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyIpOworICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyJfcyk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRob3V0
U2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkpOwog
CiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBl
Y3RlZENodW5rc1dpdGhTZXBhcmF0b3JbXSA9IHsgImRvZyIgfTsKLSAgICAgICAgcmVhZEFsbENo
dW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciLCB0cnVlKTsKKyAgICAgICAgcmVhZEFs
bENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3MsIHRydWUpOwogICAgICAgICBF
WFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRv
ciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9CiAKQEAg
LTU3MiwxMiArNTcyLDEyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNo
YW5naW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgY29uc3Qg
Y2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJCZWF1Y291
cCBkZSBjaGF0cyAiLCAiIiwgIiIsICIiLCAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJp
bmc+IGNodW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJjYXQiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJj
YXQiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVk
Q2h1bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNl
cGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hh
ciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJCZWF1Y291cCBkZSBj
aGF0cyBjYXQiLCAiY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiB9OwotICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIsIHRydWUpOworICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcywgdHJ1ZSk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJh
dG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yKSkpOwogICAgIH0KICAg
ICB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFn
ZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdl
bnRRdWlya3MuY3BwCmluZGV4IDVmOTI1MzI3OTFhNC4uMmRkN2U0YWU3YTAxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNw
cApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyB2
b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhjb25zdCBjaGFy
KiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwo
VVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoVVJMKCBTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
Y29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygi
U2FmYXJpIikpOwpAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRG
b3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogCiBzdGF0aWMgdm9p
ZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNGaXJlZm94QnJvd3NlclF1aXJrKGNvbnN0IGNoYXIq
IHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChV
UkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZv
clVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5j
b250YWlucygiQ2hyb21lIikpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygi
U2FmYXJpIikpOwpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRG
b3JVUkxIYXNGaXJlZm94QnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIAogc3RhdGljIHZv
aWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1
cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JV
UkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250
YWlucygiTWFjaW50b3NoIikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJN
YWMgT1MgWCIpKTsKQEAgLTcyLDE0ICs3MiwxNCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdl
bnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIC8vIHRoYXQgdGhl
IHN0YW5kYXJkIHVzZXIgYWdlbnQgc2hvdWxkIGJlIHVzZWQuKQogc3RhdGljIHZvaWQgYXNzZXJ0
VXNlckFnZW50Rm9yVVJMSGFzRW1wdHlRdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3Ry
aW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7Cisg
ICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7
IHVybCB9KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmlzTnVsbCgpKTsKIH0KIAogVEVT
VChVc2VyQWdlbnRUZXN0LCBRdWlya3MpCiB7CiAgICAgLy8gQSBzaXRlIHdpdGggbm8gcXVpcmtz
IHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFu
ZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpKTsK
KyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoImh0dHA6
Ly93d3cud2Via2l0Lm9yZy8iX3MpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwo
KSk7CiAKICAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0
dHA6Ly90eXBla2l0LmNvbS8iKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRleCA4MDhiMzBjMjM4YzMu
LmRkYzE4NWQ5NmJjNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRF
U1QoQXBwUHJpdmFjeVJlcG9ydCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykg
ewpAQCAtMjY0LDcgKzI2NCw3IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUp
OwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBj
bGFzcyBSZXNwb25zZVR5cGUgeyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNB
cHBJbml0aWF0ZWQgOiBib29sIHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3Rh
dGljIHZvaWQgcnVuVGVzdChSZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRl
cmFsIGpzOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwogCiAgICAg
c3dpdGNoIChyZXNwb25zZVR5cGUpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6U3ludGhldGlj
OgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxl
cnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwn
fSkpKTsgfSkiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxz
Y3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0
ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGlj
IHJlc3BvbnNlIjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNo
ZWQ6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQp
ID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiX3M7CiAgICAgICAg
IGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAg
eyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXIn
KTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAg
ICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsg
IjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTM2OSwxMyArMzY5
LDEzIEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRT
ZXJ2aWNlV29ya2VyKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwn
KSkgfSkiOworICAgIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
ZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0
bWwnKSkgfSkiX3M7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZy
b20gc2VydmVyIjsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAg
ICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7
ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBz
ZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwi
X3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9
IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
IAogICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC00NTIs
MTIgKzQ1MiwxMiBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBp
c0FwcEluaXRpYXRlZCkKICAgICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKIAogICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVy
dChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9
KSkpOyB9KSI7CisgICAgc3RhdGljIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3Bv
bnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2Ny
aXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKIAogICAgIHsKICAgICAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICAgICAg
eyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsg
e3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0g
fSwKICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
LCBudWxscHRyLCB0ZXN0SWRlbnRpdHkoKSk7CiAgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIx
LnBvcnQoKTsKIApAQCAtNDc2LDggKzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0
KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogCiAgICAgewogICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNX
Qnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0KICAgICAg
ICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRy
LCB0ZXN0SWRlbnRpdHkyKCksIHNlcnZlclBvcnQpOwogCiAgICAgICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnJlcXVlc3QyID0gW05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEy
Ny4wLjAuMTolZC8iLCBzZXJ2ZXIyLnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNU
KEFwcFByaXZhY3lSZXBvcnQsIFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5pdGlhdGVkKQog
CiAjaWYgV0tfSEFWRV9DX1NQSQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZh
dWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2co
bXNnKQpAQCAtNTg5LDkgKzU4OSw5IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNlcHRpb246ICcgKyBl
KTsKIH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRp
YyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJD
RSgKIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkgPT4gewog
ICAgIGlmICghc2VsZi5pbnRlcm5hbHMpIHsKICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNz
YWdlKCdObyBpbnRlcm5hbHMnKTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBhc3luYyBmdW5jdGlvbiBx
dWVyeUFwcFByaXZhY3lSZXBvcnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkK
ICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVkJyk7CiB9CiAK
LSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0
ZWRNZXNzYWdlOwpAQCAtNjY2LDggKzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVlKQogICAgIHdl
YlZpZXcyLmdldCgpLm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1s
IiwgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsg
eyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRC
eXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblNX
Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXNE
ZWZhdWx0VmFsdWUgfSB9LAogICAgIH0pOwogCiAgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4g
YXBwIGluaXRpYXRlZCByZXF1ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSB0byBiZSBhcHAgaW5pdGlhdGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5kZXggY2RiOTEw
NGFlYjVmLi4zMjRiZDAyNDY4ZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpAQCAtMzE3LDcgKzMx
Nyw3IEBAIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIEZpcmVPcmllbnRhdGlvbkV2ZW50c1JpZ2h0
QXdheUlmUGVybWlzc2lvbkFscmVhZHlHcmFudGVkCiAgICAgRVhQRUNUX1dLX1NUUkVRKEAicmVj
ZWl2ZWQtZXZlbnQiLCByZWNlaXZlZE1lc3NhZ2VzLmdldCgpWzFdKTsKIH0KIAotc3RhdGljIGNv
bnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIG1haW5CeXRlcyA9IFIiVEVTVFJFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9n
KG1zZykKQEAgLTMzMiwxMiArMzMyLDEyIEBAIGZ1bmN0aW9uIHJlcXVlc3RQZXJtaXNzaW9uKCkg
ewogfQogCiA8L3NjcmlwdD4KLSlURVNUUkVTT1VSQ0UiOworKVRFU1RSRVNPVVJDRSJfczsKIAog
VEVTVChEZXZpY2VPcmllbnRhdGlvbiwgUGVybWlzc2lvblNlY3VyZUNvbnRleHRDaGVjaykKIHsK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5CeXRlcyB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluQnl0ZXMgfSB9CiAgICAgfSk7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdOwpAQCAtMzk1LDIzICsz
OTUsMjMgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3REZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvblBlcm1pc3Npb24KIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0
IGNoYXIqIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCiA8aHRtbD48Ym9keT4KIDxpZnJhbWUgc3Jj
PSdodHRwczovLzEyNy4wLjAuMTo5MDkxL2ZyYW1lJyBhbGxvdz0nYWNjZWxlcm9tZXRlcjpodHRw
czovLzEyNy4wLjAuMTo5MDkxO2d5cm9zY29wZTpodHRwczovLzEyNy4wLjAuMTo5MDkxO21hZ25l
dG9tZXRlcjpodHRwczovLzEyNy4wLjAuMTo5MDkxJz48L2lmcmFtZT4KIDwvYm9keT48L2h0bWw+
Ci0pRE9DRE9DRE9DIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RP
QygKKylET0NET0NET0MiX3M7CitzdGF0aWMgY29uc3RleHByIGF1dG8gZnJhbWVUZXh0ID0gUiJE
T0NET0NET0MoCiA8aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7CispRE9D
RE9DRE9DIl9zOwogCiBURVNUKFdlYktpdCwgRGV2aWNlT3JpZW50YXRpb25QZXJtaXNzaW9uSW5J
RnJhbWUpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpbkZyYW1lVGV4dCB9IH0KKyAgICAgICAgeyAiLyJfcywgeyBtYWluRnJh
bWVUZXh0IH0gfQogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZnJhbWUiLCB7IGZyYW1lVGV4dCB9IH0sCisg
ICAgICAgIHsgIi9mcmFtZSJfcywgeyBmcmFtZVRleHQgfSB9LAogICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgbnVsbHB0ciwgOTA5MSk7
CiAKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDg1ZjdkODlk
YmQ4MS4uZjZkYjE2N2E1YmQxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMzEsMTQg
KzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRl
c3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50
aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSIpOworICAgIFdlYkNv
cmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclBy
aXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
ICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVy
cmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiaW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7CisgICAgV2ViQ29yZTo6c2V0QXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIi
X3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJvdW5kRG9tYWluRmFp
bGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1LDcgQEAgLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5CeXRlcyA9IFIiU1dS
RVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0Uo
CiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODUwLDkgKzg1MCw5IEBAIG5hdmln
YXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykg
ewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0
aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNj
cmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwxNSArODc1LDE1IEBAIG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewog
fQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMg
Y29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAKIHNlbGYuYWRkRXZlbnRMaXN0ZW5l
cigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgi
U2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwogfSk7CiAKLSlTV1JFU09V
UkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJv
dW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBAIC04OTksOCArODk5LDggQEAgVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJz
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5q
cyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBz
Y3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpbkJ5dGVzIH0g
fSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAg
IFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lu
c107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIAog
ICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21wbGV0ZSBzdWNjZXNz
ZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZp
Y2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiI7CisgICAg
ZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVj
ZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiJfczsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNl
OwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblVucmVnaXN0ZXJCeXRl
cyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWlu
Lmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTY3LDcgKzk2Nyw3IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9uZSA9IGZhbHNlOwog
Ci0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiOworICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIl9zOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4uaHRtbCIpXTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYi4uNWJjZWE4MTA5M2NmIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTgzMTcsOCArODMxNyw4IEBAIFRFU1QoUHJv
Y2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZDb29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsgImZvbyIgfSB9LAotICAgICAgICB7ICIvZGVzdGluYXRp
b24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1P
cmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAg
ICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKKyAgICAgICAgeyAiL2Rlc3Rp
bmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwg
eyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJi
YXIiX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBh
dXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24oKTsKQEAgLTgzODksMTEgKzgzODksMTEgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1v
ZGVJbkNhc2VPZlBTT05UaGVuQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiL3Nv
dXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAi
Zm9vIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAg
SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvZGVzdGlu
YXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7
ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJh
ciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOwogCiAgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzNjOGRiYzViNzFl
Li5mZGQ2NzA4NjgzZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KQEAg
LTI0MTYsNyArMjQxNiw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgRGVsZXRlT25l
Q3JlZGVudGlhbCkKIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUmVjb3ZlckFmdGVyQXV0
aE5Qcm9jZXNzQ3Jhc2gpCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyAiRk9PIl9zdHIgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgIkZP
TyJfcyB9IH0KICAgICB9KTsKIAogICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZ
RVNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCA5YTY4ZTZlNDUxZmUuLjJmMTk1
MmMyOTg5YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTE5Miw3ICsxOTIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCA9IGZhbHNlOwogICAg
ICAgICBtX21lc3NhZ2UgPSBDU3RyaW5nKCk7CiAgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3Np
Z25hbF9jb25uZWN0KG1fc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FMTEJBQ0soY3Jl
YXRlV2ViVmlld0NhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5k
KCJjcmVhdGVCcm93c2luZ0NvbnRleHQiKTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQo
ImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21h
aW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vz
c2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRlV2ViVmlld1dh
c0NhbGxlZCk7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgICAgICBtX2NyZWF0ZVdl
YlZpZXdJbldpbmRvd1dhc0NhbGxlZCA9IGZhbHNlOwogICAgICAgICBtX21lc3NhZ2UgPSB7IH07
CiAgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fc2Vzc2lvbiwgImNy
ZWF0ZS13ZWItdmlldzo6d2luZG93IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3SW5XaW5kb3dD
YWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJv
d3NpbmdDb250ZXh0IiwgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRvd1wifSIpOworICAg
ICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Il9zLCAie1wi
cHJlc2VudGF0aW9uSGludFwiOlwiV2luZG93XCJ9Il9zKTsKICAgICAgICAgZ19tYWluX2xvb3Bf
cnVuKG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUobV9jcmVhdGVX
ZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9jcmVhdGVXZWJWaWV3SW5UYWJXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9t
ZXNzYWdlID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdCht
X3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OnRhYiIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmll
d0luVGFiQ2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNy
ZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJUYWJcIn0iKTsK
KyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywg
IntcInByZXNlbnRhdGlvbkhpbnRcIjpcIlRhYlwifSJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29w
X3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRl
V2ViVmlld0luVGFiV2FzQ2FsbGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0U1NMLmNwcAppbmRleCA1MWM4MTUxYzkwYWEuLjA1NDA1NTM3YTc1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNw
cApAQCAtMjMyLDcgKzIzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxl
dGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVDVChjZXJ0aWZpY2F0ZSkpOwogICAgICAgICBtX2Nl
cnRpZmljYXRlID0gY2VydGlmaWNhdGU7CiAgICAgICAgIG1fdGxzRXJyb3JzID0gdGxzRXJyb3Jz
OwotICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoeyB9LCBmYWlsaW5nVVJJKTsKKyAgICAgICAg
bV9mYWlsaW5nVVJMID0gVVJMKFN0cmluZyB7IGZhaWxpbmdVUkkgfSk7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAppbmRleCAyODRmODA0YjY0MTAuLmI3YzFjYzFjNWM1
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RV
SUNsaWVudC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RVSUNsaWVudC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCB3aW5kb3dQcm9wZXJ0aWVzTm90aWZ5Q2FsbGJhY2soR09iamVjdCosIEdQYXJhbVNwZWMq
IHBhcmFtU3BlYywgVUlDbGllbnRUZXN0KiB0ZXN0KQogICAgIHsKLSAgICAgICAgdGVzdC0+bV93
aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5hZGQoZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3Bl
YykpOworICAgICAgICB0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmFkZChTdHJpbmcg
eyBnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSB9KTsKICAgICB9CiAKICAgICBzdGF0
aWMgV2ViS2l0V2ViVmlldyogdmlld0NyZWF0ZUNhbGxiYWNrKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIFdlYktpdE5hdmlnYXRpb25BY3Rpb24qIG5hdmlnYXRpb24sIFVJQ2xpZW50VGVzdCogdGVz
dCkKQEAgLTc2MCwxMSArNzYwLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3V2luZG93UHJv
cGVydGllcyhVSUNsaWVudFRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgdGVzdC0+bG9h
ZEh0bWwoaHRtbFN0cmluZy5nZXQoKSwgbnVsbHB0cik7CiAgICAgdGVzdC0+d2FpdFVudGlsTWFp
bkxvb3BGaW5pc2hlcygpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHByb3BlcnRpZXNDaGFu
Z2VkW10gPSB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgcHJvcGVydGllc0No
YW5nZWRbXSA9IHsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAgICJnZW9tZXRyeSIsCisgICAg
ICAgICJnZW9tZXRyeSJfcywKICNlbmRpZgotICAgICAgICAibG9jYXRpb25iYXItdmlzaWJsZSIs
ICJtZW51YmFyLXZpc2libGUiLCAic3RhdHVzYmFyLXZpc2libGUiLCAidG9vbGJhci12aXNpYmxl
IiwgInNjcm9sbGJhcnMtdmlzaWJsZSIKKyAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiX3Ms
ICJtZW51YmFyLXZpc2libGUiX3MsICJzdGF0dXNiYXItdmlzaWJsZSJfcywgInRvb2xiYXItdmlz
aWJsZSJfcywgInNjcm9sbGJhcnMtdmlzaWJsZSJfcwogICAgIH07CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBHX05fRUxFTUVOVFMocHJvcGVydGllc0NoYW5nZWQpOyArK2kpCiAgICAgICAg
IGdfYXNzZXJ0X3RydWUodGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5jb250YWlucyhw
cm9wZXJ0aWVzQ2hhbmdlZFtpXSkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggNDBlYWViN2Jm
MjdhLi5jNTY5MDJhMjI5NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtNDc2LDcgKzQ3Niw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25QYWdlSUQoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCiAgICAgLy8gUmVnaXN0ZXIgYSBjdXN0b20gVVJJIHNjaGVtZSB0byB0
ZXN0IGhpc3RvcnkgbmF2aWdhdGlvbi4KICAgICB3ZWJraXRfd2ViX2NvbnRleHRfcmVnaXN0ZXJf
dXJpX3NjaGVtZSh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJmb28iLAogICAgICAgICBbXShX
ZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBncG9pbnRlcikgewotICAgICAgICAgICAg
VVJMIHVybCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1
ZXN0KSk7CisgICAgICAgICAgICBVUkwgdXJsID0gVVJMKFN0cmluZyB7IHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSB9KTsKICAgICAgICAgICAgIEdSZWZQdHI8R0lu
cHV0U3RyZWFtPiBpbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9zdHJlYW1f
bmV3KCkpOwogICAgICAgICAgICAgY2hhciogaHRtbCA9IGdfc3RyZHVwX3ByaW50ZigiPGh0bWw+
PGhlYWQ+PHRpdGxlPiVzPC90aXRsZT48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iLCB1cmwu
aG9zdCgpID09ICJob3N0NSIgPyAiVGl0bGU1IiA6ICJUaXRsZTYiKTsKICAgICAgICAgICAgIGdf
bWVtb3J5X2lucHV0X3N0cmVhbV9hZGRfZGF0YShHX01FTU9SWV9JTlBVVF9TVFJFQU0oaW5wdXRT
dHJlYW0uZ2V0KCkpLCBodG1sLCBzdHJsZW4oaHRtbCksIGdfZnJlZSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3Bw
CmluZGV4IGYwYmQ4NjY1ZjcwYS4uMjgwMzQxMTQwZjAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcApAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OnJ1bihTb3VwU2VydmVyQ2FsbGJh
Y2sgc2VydmVyQ2FsbGJhY2spCiAKIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0
SGFuZGxlcihTb3VwU2VydmVyV2Vic29ja2V0Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVz
ZXJEYXRhKQogewotICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vi
c29ja2V0LyIpOworICAgIG1fYmFzZVdlYlNvY2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vi
c29ja2V0LyJfcyk7CiAgICAgbV9iYXNlV2ViU29ja2V0VVJMLnNldFByb3RvY29sKG1fYmFzZVdl
YlNvY2tldFVSTC5wcm90b2NvbElzKCJodHRwIikgPyAid3MiIDogIndzcyIpOwogCiAgICAgaWYg
KG1fcXVldWUpIHsKQEAgLTEwMSwxMiArMTAxLDEyIEBAIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZl
cjo6Z2V0V2ViU29ja2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAogewogICAg
IGdfYXNzZXJ0X2ZhbHNlKG1fYmFzZVdlYlNvY2tldFVSTC5pc051bGwoKSk7CiAgICAgZ19hc3Nl
cnRfdHJ1ZShwYXRoICYmICpwYXRoID09ICcvJyk7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJT
b2NrZXRVUkwsIHBhdGggKyAxKS5zdHJpbmcoKS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGlu
ZyBzbGFzaC4KKyAgICByZXR1cm4gVVJMKG1fYmFzZVdlYlNvY2tldFVSTCwgU3RyaW5nIHsgcGF0
aCArIDEgfSkuc3RyaW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCiB9
CiAKIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBw
YXRoKSBjb25zdAogewotICAgIHJldHVybiBVUkwobV9iYXNlVVJMLCBwYXRoKS5zdHJpbmcoKS51
dGY4KCk7CisgICAgcmV0dXJuIFVSTChtX2Jhc2VVUkwsIFN0cmluZyB7IHBhdGggfSkuc3RyaW5n
KCkudXRmOCgpOwogfQogCiB1bnNpZ25lZCBXZWJLaXRUZXN0U2VydmVyOjpwb3J0KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2Rl
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5k
ZXggZjIyYzM3MjI3OTY5Li45ODVkNDkxNWM2YWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCkBAIC0xNjksNyArMTY5LDcgQEAgQGVuZAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNz
PgotUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1v
ZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVu
dE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBz
aXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQorUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxl
Z2F0ZShzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsg
fSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsg
IlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkp
CiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBpZiAoZGVmYXVsdENvbnRlbnRNb2RlKQpAQCAtMTgy
LDcgKzE4Miw3IEBAIFJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBWaWV3Q2xhc3M+Ci1zdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0
cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRD
b250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZv
clVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQorc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29u
dGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGU8Vmlld0NsYXNz
PihkZWZhdWx0Q29udGVudE1vZGUsIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgc2l6ZSk7
CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbQ29udGVudE1vZGVOYXZp
Z2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTM3Miw3ICszNzIsNyBAQCBURVNUKFBy
ZWZlcnJlZENvbnRlbnRNb2RlLCBSZWNvbW1lbmRlZENvbnRlbnRNb2RlQXRWYXJpb3VzVmlld1dp
ZHRocykKIHsKICAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyIGlQYWRVc2VySW50ZXJmYWNl
OwogCi0gICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIiB9
LCBDR1NpemVaZXJvKTsKKyAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RX
ZWJLaXRBUEkiX3MgfSwgQ0dTaXplWmVybyk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJzaW1wbGUiIGFuZEV4cGVjdEVmZmVjdGl2ZUNvbnRlbnRNb2RlOldLQ29udGVudE1vZGVE
ZXNrdG9wIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICBbW3dlYlZpZXcgbmF2
aWdhdG9yVXNlckFnZW50XSBzaG91bGRDb250YWluU3RyaW5nczpAIk1vemlsbGEvNS4wIChNYWNp
bnRvc2giLCBAIlRlc3RXZWJLaXRBUEkiLCBuaWxdOwogCkBAIC00MTksNyArNDE5LDcgQEAgVEVT
VChQcmVmZXJyZWRDb250ZW50TW9kZSwgQXBwbGljYXRpb25OYW1lRm9yRGVza3RvcFVzZXJBZ2Vu
dCkKICAgICB9CiAgICAgewogICAgICAgICAvLyBNYW51YWxseSBzZXQgdGhlIGFwcGxpY2F0aW9u
IG5hbWUgZm9yIHVzZXIgYWdlbnQgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIE1vYmlsZS8xNUUxNDgu
Ci0gICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7
ICJNb2JpbGUvMTVFMTQ4IiB9KTsKKyAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0g
c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tD
b250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiX3MgfSk7CiAgICAgICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVy
Om5pbF07CiAgICAgICAgIE5TU3RyaW5nICp1c2VyQWdlbnQgPSBbd2ViVmlldyBuYXZpZ2F0b3JV
c2VyQWdlbnRdOwogICAgICAgICBFWFBFQ1RfVFJVRShbdXNlckFnZW50IGNvbnRhaW5zU3RyaW5n
OkAiTW9iaWxlIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRzcGkuY3BwCmluZGV4IDhjZDIyZTRkMzcyYS4uODk1ZjJlNjk5MDM1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdHNwaS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBAIC0zOTgsMTggKzM5
OCwxOCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZQogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFj
a2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVz
KCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYUGxhY2Vob2xkZXJWYWx1ZSIpCi0gICAg
ICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJwbGFj
ZWhvbGRlci10ZXh0IikpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQoInBsYWNlaG9sZGVyLXRleHQiX3MpKS5sZWFrUmVm
KCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW52YWxpZCIpIHsKICAgICAgICAgYXV0
byB0ZXh0QXR0cmlidXRlcyA9IG1fZWxlbWVudC0+dGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAg
YXV0byB2YWx1ZSA9IHRleHRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMuZ2V0KCJpbnZhbGlkIik7Cisg
ICAgICAgIGF1dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxp
ZCJfcyk7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB2YWx1ZSA9
IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRl
OjpJbnZhbGlkRW50cnkpID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAgICAgIHZhbHVlID0g
Y2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LmdldCgpLCBXZWJDb3JlOjpBdHNwaTo6U3RhdGU6
OkludmFsaWRFbnRyeSkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfczsKICAgICAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKICAgICB9CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUxpdmUiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNT
dHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSIpKS5sZWFrUmVmKCk7CisgICAg
ICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJsaXZl
Il9zKSkubGVha1JlZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSZWxldmFu
dCIpCi0gICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMu
Z2V0KCJyZWxldmFudCIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCJfcykpLmxlYWtSZWYoKTsKIAog
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogfQpA
QCAtNDIwLDIxICs0MjAsMjEgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJl
ckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0
cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikKLSAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIikudG9Eb3VibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIl9zKS50b0RvdWJsZSgpOwogICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzLmdldCgicG9zaW5zZXQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmli
dXRlcy5nZXQoInBvc2luc2V0Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEFSSUFDb2x1bW5Db3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgi
Y29sY291bnQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNv
bGNvdW50Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFS
b3dDb3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93Y291bnQiKS50b0Rv
dWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50Il9zKS50b0Rv
dWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1bW5JbmRleCIpCi0g
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29saW5kZXgiKS50b0RvdWJsZSgpOworICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGluZGV4Il9zKS50b0RvdWJsZSgpOwogICAg
IGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dJbmRleCIpCi0gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVzLmdldCgicm93aW5kZXgiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0
cmlidXRlcy5nZXQoInJvd2luZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEFSSUFDb2x1bW5TcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0
KCJjb2xzcGFuIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJj
b2xzcGFuIl9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFS
b3dTcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIikudG9Eb3Vi
bGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIl9zKS50b0RvdWJs
ZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NDIsOCArNDQyLDggQEAgZG91YmxlIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJp
YnV0ZSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
dXJyZW50U3RhdGVWYWx1ZSgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKLSAgICBhdXRvIHZhbHVlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJj
dXJyZW50Iik7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVlLmlz
TnVsbCgpID8gdmFsdWUgOiAiZmFsc2UiKS5sZWFrUmVmKCk7CisgICAgYXV0byB2YWx1ZSA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCJfcyk7CisgICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVlLmlzTnVsbCgpID8gdmFsdWUgOiAiZmFsc2UiX3Mp
LmxlYWtSZWYoKTsKIH0KIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVs
ZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKQEAg
LTUxNCw3ICs1MTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1
dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0g
IkFYSW50ZXJmYWNlVGFibGVDZWxsIikKICAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+aW50ZXJm
YWNlcygpLmNvbnRhaW5zKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50ZXJm
YWNlOjpUYWJsZUNlbGwpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMi
KQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiKSA9
PSAidHJ1ZSI7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImF0
b21pYyJfcykgPT0gInRydWUiOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTM2LDcgKzUz
Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0byBh
dHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgU3RyaW5nIGlzUmVhZE9u
bHkgPSBhdHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiKTsKKyAgICBTdHJpbmcgaXNSZWFkT25seSA9
IGF0dHJpYnV0ZXMuZ2V0KCJyZWFkb25seSJfcyk7CiAgICAgaWYgKCFpc1JlYWRPbmx5LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGlzUmVhZE9ubHkgPT0gInRydWUiID8gZmFsc2UgOiB0cnVl
OwogCkBAIC01NzMsMTcgKzU3MywxNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
QXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+
YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikK
LSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUiKTsKKyAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUiX3MpOwogICAgIGlmIChhdHRyaWJ1
dGVOYW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNv
bnRhaW5zKCJwb3NpbnNldCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygi
cG9zaW5zZXQiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikgewot
ICAgICAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlcy5nZXQoImxpdmUiKTsKKyAgICAgICAgYXV0
byB2YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIl9zKTsKICAgICAgICAgcmV0dXJuICF2YWx1
ZS5pc0VtcHR5KCkgJiYgdmFsdWUgIT0gIm9mZiI7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEFSSUFSZWxldmFudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRh
aW5zKCJyZWxldmFudCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVs
ZXZhbnQiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIik7CisgICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJhdG9taWMiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEVsZW1lbnRCdXN5IikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTU5OCwyNyAr
NTk4LDI3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQogc3RhdGljIFN0cmluZyB4bWxSb2xlVmFs
dWVTdHJpbmcoY29uc3QgU3RyaW5nJiB4bWxSb2xlcykKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHJlZ2lvblJv
bGVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oewotICAgICAg
ICAiZG9jLWFja25vd2xlZGdtZW50cyIsCi0gICAgICAgICJkb2MtYWZ0ZXJ3b3JkIiwKLSAgICAg
ICAgImRvYy1hcHBlbmRpeCIsCi0gICAgICAgICJkb2MtYmlibGlvZ3JhcGh5IiwKLSAgICAgICAg
ImRvYy1jaGFwdGVyIiwKLSAgICAgICAgImRvYy1jb25jbHVzaW9uIiwKLSAgICAgICAgImRvYy1j
cmVkaXRzIiwKLSAgICAgICAgImRvYy1lbmRub3RlcyIsCi0gICAgICAgICJkb2MtZXBpbG9ndWUi
LAotICAgICAgICAiZG9jLWVycmF0YSIsCi0gICAgICAgICJkb2MtZm9yZXdvcmQiLAotICAgICAg
ICAiZG9jLWdsb3NzYXJ5IiwKLSAgICAgICAgImRvYy1nbG9zc3JlZiIsCi0gICAgICAgICJkb2Mt
aW5kZXgiLAotICAgICAgICAiZG9jLWludHJvZHVjdGlvbiIsCi0gICAgICAgICJkb2MtcGFnZWxp
c3QiLAotICAgICAgICAiZG9jLXBhcnQiLAotICAgICAgICAiZG9jLXByZWZhY2UiLAotICAgICAg
ICAiZG9jLXByb2xvZ3VlIiwKLSAgICAgICAgImRvYy10b2MiLAotICAgICAgICAicmVnaW9uIgor
ICAgICAgICAiZG9jLWFja25vd2xlZGdtZW50cyJfcywKKyAgICAgICAgImRvYy1hZnRlcndvcmQi
X3MsCisgICAgICAgICJkb2MtYXBwZW5kaXgiX3MsCisgICAgICAgICJkb2MtYmlibGlvZ3JhcGh5
Il9zLAorICAgICAgICAiZG9jLWNoYXB0ZXIiX3MsCisgICAgICAgICJkb2MtY29uY2x1c2lvbiJf
cywKKyAgICAgICAgImRvYy1jcmVkaXRzIl9zLAorICAgICAgICAiZG9jLWVuZG5vdGVzIl9zLAor
ICAgICAgICAiZG9jLWVwaWxvZ3VlIl9zLAorICAgICAgICAiZG9jLWVycmF0YSJfcywKKyAgICAg
ICAgImRvYy1mb3Jld29yZCJfcywKKyAgICAgICAgImRvYy1nbG9zc2FyeSJfcywKKyAgICAgICAg
ImRvYy1nbG9zc3JlZiJfcywKKyAgICAgICAgImRvYy1pbmRleCJfcywKKyAgICAgICAgImRvYy1p
bnRyb2R1Y3Rpb24iX3MsCisgICAgICAgICJkb2MtcGFnZWxpc3QiX3MsCisgICAgICAgICJkb2Mt
cGFydCJfcywKKyAgICAgICAgImRvYy1wcmVmYWNlIl9zLAorICAgICAgICAiZG9jLXByb2xvZ3Vl
Il9zLAorICAgICAgICAiZG9jLXRvYyJfcywKKyAgICAgICAgInJlZ2lvbiJfcwogICAgIH0pOwog
CiAgICAgaWYgKHJlZ2lvblJvbGVzLT5jb250YWlucyh4bWxSb2xlcykpCkBAIC03NjIsNyArNzYy
LDcgQEAgc3RhdGljIFN0cmluZyByb2xlVmFsdWVUb1N0cmluZyh1bnNpZ25lZCByb2xlVmFsdWUp
CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2Nyb2xsQmFyOgogICAgICAgICByZXR1
cm4gIkFYU2Nyb2xsQmFyIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNjcm9s
bFBhbmU6Ci0gICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIjsKKyAgICAgICAgcmV0dXJuICJB
WFNjcm9sbEFyZWEiX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2VjdGlvbjoK
ICAgICAgICAgcmV0dXJuICJBWFNlY3Rpb24iX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6
Um9sZTo6U2VwYXJhdG9yOgpAQCAtODE3LDcgKzgxNyw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKIHsKICAgICBtX2VsZW1lbnQtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gcm9sZVZhbHVlID0gbV9lbGVtZW50LT5yb2xl
KCk7Ci0gICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRz
cGk6OlJvbGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0cmli
dXRlcygpLmdldCgieG1sLXJvbGVzIikpIDogcm9sZVZhbHVlVG9TdHJpbmcocm9sZVZhbHVlKTsK
KyAgICBhdXRvIHJvbGVWYWx1ZVN0cmluZyA9IHJvbGVWYWx1ZSA9PSBXZWJDb3JlOjpBdHNwaTo6
Um9sZTo6TGFuZG1hcmsgPyB4bWxSb2xlVmFsdWVTdHJpbmcobV9lbGVtZW50LT5hdHRyaWJ1dGVz
KCkuZ2V0KCJ4bWwtcm9sZXMiX3MpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CiAg
ICAgaWYgKHJvbGVWYWx1ZVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCkBAIC04MzIsMTQgKzgzMiwxNCBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9s
ZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9s
ZURlc2NyaXB0aW9uKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwot
ICAgIGF1dG8gcm9sZURlc2NyaXB0aW9uID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJy
b2xlZGVzY3JpcHRpb24iKTsKKyAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+
YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9uIl9zKTsKICAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShtYWtlU3RyaW5nKCJBWFJvbGVEZXNjcmlwdGlvbjogIiwgcm9s
ZURlc2NyaXB0aW9uKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBtX2Vs
ZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIik7CisgICAgYXV0byBjb21w
dXRlZFJvbGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImNvbXB1dGVkLXJvbGUiX3Mp
OwogICAgIGlmIChjb21wdXRlZFJvbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtOTcyLDcgKzk3Miw3IEBA
IGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiAKICAgICAv
LyBDb25zaWRlciBoZWFkaW5ncyBhcyBhbiBzcGVjaWFsIGNhc2Ugd2hlbiByZXR1cm5pbmcgdGhl
IGludCB2YWx1ZS4KICAgICBpZiAobV9lbGVtZW50LT5yb2xlKCkgPT0gV2ViQ29yZTo6QXRzcGk6
OlJvbGU6OkhlYWRpbmcpCi0gICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5n
ZXQoImxldmVsIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmli
dXRlcygpLmdldCgibGV2ZWwiX3MpLnRvRG91YmxlKCk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAg
LTk5OSw3ICs5OTksNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNr
aW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMo
KTsKLSAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBh
dHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0IikpOworICAgIGF1dG8gdmFsdWUgPSBtYWtlU3RyaW5n
KCJBWFZhbHVlRGVzY3JpcHRpb246ICIsIGF0dHJpYnV0ZXMuZ2V0KCJ2YWx1ZXRleHQiX3MpKTsK
ICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh2YWx1ZSkubGVha1JlZigpOwog
fQogCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlz
SW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFy
Y2hpY2FsTGV2ZWwoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3Jl
KCk7Ci0gICAgYXV0byBsZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwi
KTsKKyAgICBhdXRvIGxldmVsID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCJf
cyk7CiAgICAgaWYgKGxldmVsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEw
OTEsMTMgKzEwOTEsMTMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNwZWFrQXMoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNH
cmFiYmVkKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwot
ICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiKSA9PSAidHJ1
ZSI7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZ3JhYmJlZCJfcykg
PT0gInRydWUiOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gZHJvcEVmZmVjdHMgPSBtX2VsZW1lbnQtPmF0dHJp
YnV0ZXMoKS5nZXQoImRyb3BlZmZlY3QiKTsKKyAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Il9zKTsKICAgICBpZiAoZHJvcEVmZmVj
dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVy
cyhudWxscHRyLCAwKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShkcm9w
RWZmZWN0cykubGVha1JlZigpOwpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQogICAg
ICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIAog
ICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiRW5jb2Rpbmci
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxl
bWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIl9zKSkubGVha1JlZigpOwogfQogCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRV
UkkoKQpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQtPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1f
ZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSIpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgi
VVJJIl9zKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApp
bmRleCAxMjA0Y2I1MjhiYzYuLmNmMTMxYWViYTBhZSAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9tYWluLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3Zp
ZGVycygpCiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxl
Q29tcGFjdFBvaW50ZXJUdXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9Owog
ICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2lu
dGVyVHVwbGVTaW1wbGVCb29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVS
TCBhVVJMKHsgfSwgImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0
dHBzOi8vd3d3LmV4YW1wbGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQ
cm92aWRlcnMoKTsKIH0K
</data>
<flag name="commit-queue"
          id="484844"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456523</attachid>
            <date>2022-04-03 17:13:24 -0700</date>
            <delta_ts>2022-04-03 18:10:42 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>357815</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5iNzcxY2FkZTU0YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50
c0NhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXMKIAogICAg
IGF1dG8qIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSk7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfZmlsZV9nZXRfcGF0aChmaWxlKSk7Ci0gICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUocGF0aC5nZXQoKSkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFN0cmluZzo6ZnJv
bVVURjgocGF0aC5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZURpYWxvZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhMjYzMDg4NTcz
Y2YuLmI2NjQzNzEzZjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94
eSwKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3Nh
Z2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsK
IAogICAgIC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9h
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1v
dGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3Yjgw
NDc3YmRjLi5hMWM2OGU0MjBlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVBy
b3h5V2luLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIExSRVNVTFQgUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eTo6b25DbG9zZSgpCiAKIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewotICAgIFJlZlB0
cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0
cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3Rv
clVJUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9X
ZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAppbmRleCBmNDAwZDVlNzM3MTkuLjFhMTkxNTU1Zjll
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxP
UEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5z
cGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHBy
ZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1
bmNoZXIuY3BwCmluZGV4IDlkM2Y5OGEzNDk0MC4uZTJmOTcxMzI1NTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3Mgewog
CiBzdGF0aWMgdm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3Ms
IGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikK
IHsKLSAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgp
OworICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5n
Ojpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAg
Q1N0cmluZyBycGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0
b3IoVmVjdG9yPENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRh
KCkgfSkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdy
YXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAg
ICAgICAgYWRkRXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5k
Ym94QXJncyk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2Nr
ZXQiLCAid2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlz
RGlyZWN0b3J5Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
Il9zIH07CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAg
ICAgICAgICAgIFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5
ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAg
ICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFw
cGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCAwZDFmNDAwZTQ0NDEuLmNmZTdhMGViM2JlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlz
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50Rmls
ZURlc2NyaXB0b3IgPSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25f
bGlicmFyeV9uYW1lKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFy
eU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3Bl
X2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAg
IH0KICNlbmRpZgogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAg
ICAgICAgIHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvLjEiKTsKICAg
ICAgICAgaWYgKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVu
dHMoKSkgewogICAgICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3Ig
PSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmcgeyB3cGVfbG9h
ZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkgfSk7CiAgICAgICAg
IH0KICNlbGlmIFVTRShFR0wpCiAgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5TmFtZSA9IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNwbGF5TmFtZSgp
OwpAQCAtMTE2LDggKzExNiw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAKICAgICBHQXBw
bGljYXRpb24qIGFwcCA9IGdfYXBwbGljYXRpb25fZ2V0X2RlZmF1bHQoKTsKICAgICBpZiAoYXBw
KQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQgPSBnX2FwcGxpY2F0aW9uX2dldF9h
cHBsaWNhdGlvbl9pZChhcHApOwotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gZ19n
ZXRfYXBwbGljYXRpb25fbmFtZSgpOworICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQg
PSBTdHJpbmcgeyBnX2FwcGxpY2F0aW9uX2dldF9hcHBsaWNhdGlvbl9pZChhcHApIH07CisgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbk5hbWUgPSBTdHJpbmcgeyBnX2dldF9hcHBsaWNhdGlvbl9u
YW1lKCkgfTsKIAogICAgIHBhcmFtZXRlcnMuaW5zcGVjdG9yU2VydmVyQWRkcmVzcyA9IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjppbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3Bw
CmluZGV4IDYzMzg4NGRhZGNiMS4uODY0ZDBlMzZmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQo
KSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVu
YWJsZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29s
LT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5
Li42MjY5Y2M0ZDI4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3Rr
Il9zCiAjZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisj
ZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiX3MKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRl
eCBlOGI5YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJv
YXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGlj
YXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OlNtYXJ0UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAg
ICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3Rh
dGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwg
Q2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRh
cmdldFR5cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1Rh
cmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0Lmdl
dCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2Fy
ZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAg
ICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAg
ICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmlu
ZGV4IDA3YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAg
ICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMo
KTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9y
X2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdl
dCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJh
Y3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKaW5kZXggMTU5OTcxYWNjNmYwLi5jYmYxYTI5ZmRhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cApAQCAtMTk4LDIzICsxOTgsMjMgQEAgS2V5QmluZGluZ1RyYW5zbGF0b3I6On5LZXlCaW5kaW5n
VHJhbnNsYXRvcigpCiBzdHJ1Y3QgS2V5Q29tYmluYXRpb25FbnRyeSB7CiAgICAgdW5zaWduZWQg
Z2RrS2V5Q29kZTsKICAgICB1bnNpZ25lZCBzdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogfTsKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9u
RW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9IHsKLSAgICB7IEdES19LRVlfYiwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgIH0sCi0g
ICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlSXRhbGljIiAgICB9LAotICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdE
S19LRVlfZ3JlYXRlciwgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDYW5j
ZWwiICAgICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICB9LAotICAgIHsgR0RLX0tFWV9U
YWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0
YWIiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVy
LCAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9
LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAg
eyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
SW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9N
QVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19L
RVlfViwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJQYXN0ZUFz
UGxhaW5UZXh0IiB9LAorICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiX3MgICAgICB9LAorICAgIHsgR0RLX0tFWV9p
LCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2dsZUl0YWxp
YyJfcyAgICB9LAorICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9ncmVh
dGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAg
ICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiJfcyAgICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiX3Mg
ICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9
LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAg
IHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywg
IlBhc3RlQXNQbGFpblRleHQiX3MgfSwKIH07CiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBoYW5k
bGVLZXlCaW5kaW5nc0Zvck1hcChjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5KiBtYXAsIHVuc2ln
bmVkIG1hcFNpemUsIHVuc2lnbmVkIGtleXZhbCwgR2RrTW9kaWZpZXJUeXBlIHN0YXRlKQpAQCAt
MjY3LDcxICsyNjcsNzEgQEAgVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNv
bW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogI2VuZGlmCiAKIHN0YXRpYyBj
b25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IHByZWRlZmluZWRLZXlCaW5kaW5nc1tdID0gewotICAg
IHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0
LCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVCYWNrd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1Bf
TGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJh
Y2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sg
fCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElG
VF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIiB9LAotICAgIHsgR0RL
X0tFWV9SaWdodCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAg
ICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9SaWdodCwg
ICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIg
fSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NI
SUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBH
REtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAi
TW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9VcCwg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgfSwK
LSAgICB7IEdES19LRVlfS1BfVXAsICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlVXAiIH0sCi0gICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAot
ICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAg
ICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRG93biwg
ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgfSwK
LSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93biIgfSwKLSAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlf
SG9tZSwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9C
ZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAotICAg
IHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfSG9tZSwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZ
X0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
IiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtf
U0hJRlRfTUFTSywgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0VuZCwgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiB9
LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfRW5kLCAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0VuZCwg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZE
b2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNL
LCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tF
WV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVU
b0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0Vu
ZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9QYWdlX0Rvd24sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlRG93biIgfSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2Vf
RG93biwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKLSAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9EZWxl
dGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0RlbGV0ZSwgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0
ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndh
cmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFj
ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9hLCAgICAg
ICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwK
LSAgICB7IEdES19LRVlfYSwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZU
X01BU0ssICJVbnNlbGVjdCIgfSwKLSAgICB7IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJTZWxlY3RBbGwiIH0sCi0gICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiIH0sCi0gICAgeyBHREtfS0VZX3gsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX3Ys
ICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9M
X01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX0tQX0luc2Vy
dCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0KKyAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlTGVmdCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0sCisgICAgeyBHREtfS0VZX0xl
ZnQsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9MZWZ0LCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1v
dmVXb3JkQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIl9z
IH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAg
eyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1Bf
UmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdE
S19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAg
ICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAg
IEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05U
Uk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9VcCwgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwgICAg
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAg
IHsgR0RLX0tFWV9VcCwgICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwg
ICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlm
eVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0Rvd24sICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
X3MgfSwKKyAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAg
ICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9Eb3duLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIl9zIH0sCisgICAgeyBHREtf
S0VZX0hvbWUsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92
ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0hvbWUsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hv
bWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQi
X3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RL
X1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdE
S19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlv
biJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9F
bmQsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9m
TGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAg
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9
LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsg
R0RLX0tFWV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
Ik1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50Il9z
IH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRf
TUFTSywgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7
IEdES19LRVlfUGFnZV9VcCwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1BhZ2VfVXAsICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCJfcyB9LAorICAgIHsgR0RLX0tF
WV9QYWdlX1VwLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX1BhZ2VfRG93biwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtf
S0VZX0RlbGV0ZSwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVs
ZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiX3MgfSwKKyAgICB7IEdES19L
RVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19DT05U
Uk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAg
eyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRGVsZXRlQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCJfcyB9LAorICAg
IHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCJfcyB9LAorICAg
IHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFT
SywgIlVuc2VsZWN0Il9zIH0sCisgICAgeyBHREtfS0VZX3NsYXNoLCAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiX3MgfSwKKyAgICB7IEdES19LRVlfeCwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfYywgICAgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX3YsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX0tQX0luc2VydCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfQogfTsKIAogVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1h
bmRzRm9yS2V5dmFsKHVuc2lnbmVkIGtleXZhbCwgdW5zaWduZWQgbW9kaWZpZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXgg
YTg2YjM0ZGRhYThmLi5lMzE4ODlmMzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
U3RyaW5nIGJhY2tlbmRDb21tYW5kc1BhdGgoKQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24odXJsUmVmLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxVSW50
OCo+KHBhdGgpLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
cGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKIH0KIAogc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZTVhOGMzYjY5ZTE3Li45
ZDdlNzFjMjI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3BhZ2Ut
PmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3Ii
KTsKKyAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJl
IG1hdGNoZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1Li40NGNiZjczYzZhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTczMywxMCArNzMzLDEw
IEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBTdHJpbmcoIkdldFNuYXBzaG90IikpIHsKLSAgICAgICAgU25hcHNo
b3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4o
c3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RPcHRpb25zIikp
LT52YWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PEFQ
STo6VUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSktPnZhbHVlKCk7Ci0gICAgICAg
IFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9uPihzdGF0
aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+dmFs
dWUoKSk7Ci0gICAgICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8
QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRyYW5zcGFyZW50QmFja2dyb3VuZCIpKS0+dmFs
dWUoKTsKKyAgICAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19j
YXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RPcHRpb25zIl9zKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJ
RCJfcykpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNf
Y2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RSZWdpb24iX3MpKS0+dmFsdWUoKSk7CisgICAgICAgIGJvb2wgdHJhbnNwYXJl
bnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRy
YW5zcGFyZW50QmFja2dyb3VuZCJfcykpLT52YWx1ZSgpOwogCiAgICAgICAgIFJlZlB0cjxXZWJJ
bWFnZT4gc25hcHNob3RJbWFnZTsKICAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnBy
aXYtPndlYlBhZ2U7CkBAIC03NjUsMTAgKzc2NSwxMCBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRS
ZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YQogICAgICAgICB9CiAKICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VS
ZXBseTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSIsIHdlYlBhZ2UpOwotICAgICAg
ICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lEIiwgQVBJOjpVSW50NjQ6OmNyZWF0ZShjYWxs
YmFja0lEKSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJ
bWFnZSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkt
PnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CisgICAgICAgIG1lc3NhZ2VSZXBs
eS5zZXQoIlBhZ2UiX3MsIHdlYlBhZ2UpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxs
YmFja0lEIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVz
c2FnZVJlcGx5LnNldCgiU25hcHNob3QiX3MsIHNuYXBzaG90SW1hZ2UpOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2ViUGFn
ZS5EaWRHZXRTbmFwc2hvdCJfcywgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNz
YWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAKaW5kZXggNDUy
Y2YwY2M4YzdhLi4zMzg0ZmEyNThjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQ
RS5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5
RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKIHN0YXRpYyB2b2lkIGhhbmRsZUtl
eVByZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAgICBTdHJpbmcgY29tbWFuZE5hbWUg
PSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1hbmROYW1lIHsgaW50
ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAKICAgICBpZiAoIWNvbW1hbmROYW1lLmlzRW1wdHko
KSkgewogICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRl
KCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJhbWUm
IGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXkKIAogc3RhdGlj
IHZvaWQgaGFuZGxlS2V5RG93bihGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKQogewotICAgIFN0cmluZyBjb21tYW5kTmFtZSA9
IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgeyBpbnRl
cnByZXRLZXlFdmVudChldmVudCkgfTsKICAgICBpZiAoY29tbWFuZE5hbWUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggZDZiMzIyYTA5NjBmLi5hMmUxYzEzMTUwNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zODUyLDcgKzM4NTIsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGlmIChmcmFtZS0+c2hvdWxkRW5hYmxlSW5B
cHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQg
aW4gYSBmcmFtZSB0aGF0IGlzIG5vdCBpbiBhbiBhcHAtYm91bmQgZG9tYWluIl9zLCAwLCAwLCBF
eGNlcHRpb25EZXRhaWxzOjpUeXBlOjpBcHBCb3VuZERvbWFpbiB9KTsKICAgICAgICAgaWYgKGF1
dG8qIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICAg
ICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9y
IG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcs
ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWlu
LiJfcyk7CiAgICAgICAgIFdFQlBBR0VfUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgInJ1bkph
dmFTY3JpcHQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uIGFwcC1ib3Vu
ZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0
Li4zNGZmMmQ0MDU4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC03MTMsMjkgKzcxMywyOSBAQCB2b2lkIFdlYlBhZ2U6
OmdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoU3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlIGNvbW1hbgogICAgIAogICAgIHN3aXRjaCAoY29tbWFuZCkgewogICAgIGNhc2UgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlOjpVbmRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiIsICJ6IiwKLSAgICAgICAg
InoiLCAiS2V5WiJfcywKLSAgICAgICAgQCJVKzAwNUEiLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieiJfcywgInoiX3MsCisg
ICAgICAgICJ6Il9zLCAiS2V5WiJfcywKKyAgICAgICAgIlUrMDA1QSJfcywgOTAsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlJlZG86Ci0gICAgICAgIGtl
eUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ5
IiwgInkiLAotICAgICAgICAieSIsICJLZXlZIl9zLAotICAgICAgICBAIlUrMDA1OSIsIDg5LCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAg
IGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24s
ICJ5Il9zLCAieSJfcywKKyAgICAgICAgInkiX3MsICJLZXlZIl9zLAorICAgICAgICAiVSswMDU5
Il9zLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6
VG9nZ2xlQm9sZGZhY2U6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIiwgImIiLAotICAgICAgICAiYiIsICJLZXlCIl9z
LAotICAgICAgICBAIlUrMDA0MiIsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJiIl9zLCAiYiJfcywKKyAgICAgICAgImIiX3Ms
ICJLZXlCIl9zLAorICAgICAgICAiVSswMDQyIl9zLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlSXRhbGljOgotICAgICAgICBrZXlFdmVu
dCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSIsICJp
IiwKLSAgICAgICAgImkiLCAiS2V5SSJfcywKLSAgICAgICAgQCJVKzAwNDkiLCA3MywgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiaSJf
cywgImkiX3MsCisgICAgICAgICJpIl9zLCAiS2V5SSJfcywKKyAgICAgICAgIlUrMDA0OSJfcywg
NzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2ds
ZVVuZGVybGluZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgInUiLCAidSIsCi0gICAgICAgICJ1IiwgIktleVUiX3MsCi0g
ICAgICAgIEAiVSswMDU1IiwgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInUiX3MsICJ1Il9zLAorICAgICAgICAidSJfcywgIktl
eVUiX3MsCisgICAgICAgICJVKzAwNTUiX3MsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwpAQCAtNDMyNCw3ICs0MzI0LDcgQEAgU3RyaW5nIFdlYlBhZ2U6OnBsYXRm
b3JtVXNlckFnZW50KGNvbnN0IFVSTCYpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAogICAgIGlmIChkb2N1bWVudC0+cXVpcmtzKCkuc2hvdWxkQXZvaWRVc2luZ0lPUzEzRm9yR21h
aWwoKSAmJiBvc05hbWVGb3JVc2VyQWdlbnQoKSA9PSAiaVBob25lIE9TIikKLSAgICAgICAgcmV0
dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0sICIxMl8xXzMiKTsK
KyAgICAgICAgcmV0dXJuIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSh7IH0s
ICIxMl8xXzMiX3MpOwogCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGJiNTEy
YWVjMzQ1MC4uNzY0NDNhOTQyNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBX
ZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2ZW50
JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZl
bnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFt
ZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0p
OwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93
bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBh
Ym91dCBtb2RlIHRvIGRlY2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVu
dENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0Li5iN2ZlODAwNGU0OGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyAr
ODYsNyBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAg
Ly8gVGhpcyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1
c2hkIGluIG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmlu
Z0lkZW50aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAg
ICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRl
c3RXZWJLaXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAi
Y29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFt
X2hvc3RBcHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVu
dGlmaWVyID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9E
T00vRE9NLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4
NjBjMjk1YTcuLmEyNjJiZmMxNDAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvRE9NL0RPTS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBA
IC03MTYsNyArNzE2LDcgQEAgLSAoQk9PTClfbWVkaWFRdWVyeU1hdGNoZXMKIAogICAgIERvY3Vt
ZW50JiBkb2N1bWVudCA9IGxpbmsuZG9jdW1lbnQoKTsKICAgICBhdXRvIG1lZGlhUXVlcnlTZXQg
PSBNZWRpYVF1ZXJ5U2V0OjpjcmVhdGUobWVkaWEsIE1lZGlhUXVlcnlQYXJzZXJDb250ZXh0KGRv
Y3VtZW50KSk7Ci0gICAgcmV0dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIiwgZG9j
dW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0
eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CisgICAgcmV0
dXJuIE1lZGlhUXVlcnlFdmFsdWF0b3IgeyAic2NyZWVuIl9zLCBkb2N1bWVudCwgZG9jdW1lbnQu
cmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIg
fS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQu
aAppbmRleCA0MjAxMDdkYTY1YjcuLjA5OGY4ZWMyOTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAg
LTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxp
bmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5n
IFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdv
cmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZT
dHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBi
YWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTll
NmQuLmJjMmEzMmVhMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVy
TWFpblJlc291cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAtICh2b2lkKV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2Rp
bmcKIHsKLSAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2Rp
bmcoW2VuY29kaW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2Fk
ZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWIuLmYx
NGZhMzk5NGY0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQpAQCAtMTg3Niw3ICsxODc2LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhT
dHlsZTooTlNTdHJpbmcgKilzdHlsZSBmcmFtZTooQ0dSZWN0KWZyYW1lIHByZWYKICAgICBfcHJp
dmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXREaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkKFtwcmVm
ZXJlbmNlcyBkaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkXSk7CiAKICAgICBfcHJpdmF0ZS0+cGFn
ZS0+c2V0dGluZ3MoKS5zZXRGb250RmFsbGJhY2tQcmVmZXJzUGljdG9ncmFwaHModHJ1ZSk7Ci0g
ICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFw
cGxlQ29sb3JFbW9qaSIpOworICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3Rv
Z3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiX3MpOwogCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0TWFya3VwRW5hYmxlZChmYWxzZSk7CiAgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAppbmRleCA1ZDYzMGE3ZDlhMTEuLmMyOTBk
YWUzNzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApA
QCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmop
OwogICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6
fkFjY2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2li
bGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2lu
ZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYy4uYTVjMDdlYjkxMmZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0z
NCwxMyArMzQsMTMgQEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5
QmFnOjp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3Mp
OwogfQogCiBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3Bl
cnR5QmFnOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyLi4zMDJmNjM3
YWJjMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9h
ZERlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVs
dERvd25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogICAgIEhhc2hT
ZXQ8SVdlYkRvd25sb2FkKj46Oml0ZXJhdG9yIGkgPSBtX2Rvd25sb2Fkcy5iZWdpbigpOwogICAg
IGZvciAoO2kgIT0gbV9kb3dubG9hZHMuZW5kKCk7ICsraSkKICAgICAgICAgKCppKS0+UmVsZWFz
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURl
bGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0
ZS5jcHAKaW5kZXggZThlNWY1YzRjYzExLi4xZmE4YzM1NGRmYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQz
LDEzIEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQog
CiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9s
aWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGlj
eURlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IuLjlkYTU5NjA1NjRhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5
U3RyZWFtOjpNZW1vcnlTdHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAg
OiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiTWVtb3J5U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3Ry
ZWFtKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlT
dHJlYW0iX3MpOwogfQogCiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0
ZUluc3RhbmNlKFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQx
NS4uZTk3YzQxMzI0NzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0
aW9uUHJvcGVydHlCYWcuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgV2ViQWN0aW9uUHJvcGVydHlC
YWc6OldlYkFjdGlvblByb3BlcnR5QmFnKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwg
UmVmUHQKICAgICAsIG1fZnJhbWUoV1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAK
IFdlYkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9w
ZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVy
dHlCYWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZyogV2ViQWN0aW9uUHJvcGVydHlC
YWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgUmVmUHRy
PEhUTUxGb3JtRWxlbWVudD4mJiBmb3JtLCBSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCmluZGV4IDhmMjcx
NjJiYmFmMS4uZjMxMDJlNTI2ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9u
Q2FjaGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlv
bkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hl
Il9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJB
cHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBs
aWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRp
b25DYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5n
IGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIAogV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UmIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVh
dGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5sZWFrUmVmKCk7
CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRp
b25DYWNoZSJfcykubGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2Ny4uMTdkZWJjNDg3
ZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtNjIsMTMgKzYy
LDEzIEBAIFdlYkFyY2hpdmU6OldlYkFyY2hpdmUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+JiYg
Y29yZUFyY2hpdmUpCiAjZW5kaWYKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViQXJjaGl2ZSJfcyk7CiB9CiAKIFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSJfcyk7CiB9CiAKIEhS
RVNVTFQgV2ViQXJjaGl2ZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9P
dXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcAppbmRleCA5MDRhYzJkMjgxMDQuLjExNmFhNDIwMTc2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFJlZlB0
cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0CiAgICAgYmFja0ZvcndhcmRMaXN0
V3JhcHBlcnMoKS5zZXQobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCksIHRoaXMpOwogCiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJkTGlz
dCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsK
IH0KIAogV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKQEAgLTY1LDcg
KzY1LDcgQEAgV2ViQmFja0ZvcndhcmRMaXN0Ojp+V2ViQmFja0ZvcndhcmRMaXN0KCkKICAgICBi
YWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnJlbW92ZShtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSk7
CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
QmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNr
Rm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3QqIFdlYkJhY2tGb3J3YXJk
TGlzdDo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNrRm9yd2Fy
ZExpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKaW5kZXggZGU4NTBlNzEzYjAz
Li44YjE2YjQzZDQxZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNh
Y2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKQEAgLTQ3
LDEzICs0NywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNhY2hlOjpXZWJDYWNo
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSJfcyk7CiB9CiAK
IFdlYkNhY2hlOjp+V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZSogV2ViQ2FjaGU6OmNyZWF0ZUluc3Rh
bmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApp
bmRleCAzNTY5ODNjNTJiMzcuLmYxMzE2ZGU0NmMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogV2ViQ29yZVN0YXRpc3RpY3M6OldlYkNvcmVTdGF0aXN0aWNzKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29y
ZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0
aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3M6On5XZWJDb3JlU3RhdGlzdGljcygpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNv
cmVTdGF0aXN0aWNzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3Rh
dGlzdGljcyJfcyk7CiB9CiAKIFdlYkNvcmVTdGF0aXN0aWNzKiBXZWJDb3JlU3RhdGlzdGljczo6
Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRp
c3RpY3M6OmphdmFTY3JpcHRQcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29w
dF8KICAgICBJdGVyYXRvciBlbmQgPSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIGludD4gdHlwZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVu
dCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50
KQotICAgICAgICB0eXBlQ291bnRNYXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUp
OworICAgICAgICB0eXBlQ291bnRNYXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJy
ZW50LT52YWx1ZSk7CiAKICAgICBDT01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENP
TSwgQ09NUHJvcGVydHlCYWc8aW50Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAg
ICAgcmVzdWx0cy5jb3B5UmVmVG8odHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTE2Nyw3ICsxNjcs
NyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50
cyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eQogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0
VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7
CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7
IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3Vy
cmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3Ry
aW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJv
cGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJ
bnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNB
bmRDb3VudHMpOwpAQCAtMjk2LDEzICsyOTYsMTMgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGlj
czo6bWVtb3J5U3RhdGlzdGljcyhfQ09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHN0YXQK
ICAgICBHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVt
b3J5U3RhdGlzdGljcygpOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIGxvbmcgbG9u
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiBmaWVsZHM7Ci0gICAgZmllbGRzLmFkZCgiRmFz
dE1hbGxvY1Jlc2VydmVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
ZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgi
RmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMu
YWRkKCJGYXN0TWFsbG9jRnJlZUxpc3RCeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOwotICAgIGZpZWxkcy5h
ZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSIsIGhlYXBTaXplKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZh
U2NyaXB0RnJlZVNpemUiLCBoZWFwRnJlZSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0
YWNrU2l6ZSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3Rh
dHMuc3RhY2tCeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcykp
OworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiX3MsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5
dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiX3MsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0
dGVkVk1CeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIl9z
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZy
ZWVMaXN0Qnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiX3MsIGhl
YXBTaXplKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiX3MsIGhlYXBGcmVl
KTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIl9zLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKKyAgICBm
aWVsZHMuYWRkKCJKYXZhU2NyaXB0SklUU2l6ZSJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcykpOwogCiAgICAgKnN0YXRpc3RpY3Mg
PSBDT01Qcm9wZXJ0eUJhZzx1bnNpZ25lZCBsb25nIGxvbmcsIFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVIYXNoPjo6YWRvcHQoZmllbGRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXgg
MjExNTk4ZDM5YTZhLi5iOWY0MTA5MzU5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtNDU0
LDcgKzQ1NCw3IEBAIGJvb2wgV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9t
RXZlbnQoRWxlbWVudCogZSwgS2V5Ym9hcmRFdmVudCoga2UpCiAgICAgICAgIGlmIChkb21FbGVt
ZW50KSB7CiAgICAgICAgICAgICBJRE9NSFRNTElucHV0RWxlbWVudCogZG9tSW5wdXRFbGVtZW50
OwogICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChkb21FbGVtZW50LT5RdWVyeUludGVyZmFjZShJ
SURfSURPTUhUTUxJbnB1dEVsZW1lbnQsICh2b2lkKiopJmRvbUlucHV0RWxlbWVudCkpKSB7Ci0g
ICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgPSBtX3dlYlZpZXctPmludGVycHJldEtleUV2
ZW50KGtlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgY29tbWFuZCB7IG1fd2ViVmlldy0+aW50
ZXJwcmV0S2V5RXZlbnQoa2UpIH07CiAgICAgICAgICAgICAgICAgLy8gV2UgYWxsb3cgZW1wdHkg
Y29tbWFuZHMgaGVyZSBiZWNhdXNlIHRoZSBhcHAgY29kZSBhY3R1YWxseSBkZXBlbmRzIG9uIHRo
aXMgYmVpbmcgY2FsbGVkIGZvciBhbGwga2V5IHByZXNzZXMuCiAgICAgICAgICAgICAgICAgLy8g
V2UgbWF5IHdhbnQgdG8gcmV2aXNpdCB0aGlzIGxhdGVyIGJlY2F1c2UgaXQgZG9lc24ndCByZWFs
bHkgbWFrZSBzZW5zZSB0byBzZW5kIGFuIGVtcHR5IGNvbW1hbmQuCiAgICAgICAgICAgICAgICAg
Zm9ybURlbGVnYXRlLT5kb1BsYXRmb3JtQ29tbWFuZChkb21JbnB1dEVsZW1lbnQsIEJTdHJpbmco
Y29tbWFuZCksIGtpdChlLT5kb2N1bWVudCgpLmZyYW1lKCkpLCAmcmVzdWx0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKaW5kZXggOWUwMzFkOWVmYjc5Li5mNzhj
MWJkMmE4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFT
b3VyY2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6
fldlYkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwog
ICAgIFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0
YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3
MjAzMTVjMy4uOGYzNzY1NDEyNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFu
YWdlciogV2ViRGF0YWJhc2VNYW5hZ2VyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1h
bmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VN
YW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRv
Y3VtZW50TG9hZGVyLmNwcAppbmRleCA5MmQwZmE3MmNkNmYuLjI1NmEzNTg4MDdkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcApAQCAtMzUsNyAr
MzUsNyBAQCBXZWJEb2N1bWVudExvYWRlcjo6V2ViRG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdAogICAgICwgbV9kZXRhY2hlZERhdGFTb3Vy
Y2UoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRG9jdW1lbnRMb2FkZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3Vt
ZW50TG9hZGVyIl9zKTsKIH0KIAogUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3Rp
dHV0ZURhdGEmIGRhdGEpCkBAIC00Niw3ICs0Niw3IEBAIFJlZjxXZWJEb2N1bWVudExvYWRlcj4g
V2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
CiBXZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIl9zKTsK
ICAgICBpZiAobV9kYXRhU291cmNlKSB7CiAgICAgICAgIEFTU0VSVCghbV9kZXRhY2hlZERhdGFT
b3VyY2UpOwogICAgICAgICBtX2RhdGFTb3VyY2UtPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkLmNwcAppbmRleCBhZjc5NTJhN2U3NTYuLjk5NDY5MDQ1NTFjMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25s
b2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAK
IFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9h
ZDo6fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ry
b3lpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3du
bG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggMTgxMGE2Njg1ODE4Li5mYzY0YjliYzk5
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBA
IC0zMDYsNyArMzA2LDcgQEAgSFJFU1VMVCBXZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVSTEF1dGhlbnRpY2F0aW8KICAgICB9CiAKICAgICAv
LyBGSVhNRTogRG8gd2UgbmVlZCBhIFVSTCBvciBkZXNjcmlwdGlvbiBmb3IgdGhpcyBlcnJvciBj
b2RlPwotICAgIFJlc291cmNlRXJyb3IgZXJyb3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwg
V2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0aGVudGljYXRpb24sIFVSTCgpLCAiIik7CisgICAg
UmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJv
clVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksIGVtcHR5U3RyaW5nKCkpOwogICAg
IENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3IoQWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0
YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdhdGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2Vi
RXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJE
cm9wU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3Bw
CmluZGV4IDZiYWJmOTBiODlmYS4uNWIxYzVkZmM3ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEcm9wU291cmNlLmNwcApAQCAtNTMsMTMgKzUzLDEzIEBAIFdlYkRyb3BTb3VyY2U6
OldlYkRyb3BTb3VyY2UoV2ViVmlldyogd2ViVmlldykKICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3
KQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJE
cm9wU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEcm9wU291cmNlIl9z
KTsKIH0KIAogV2ViRHJvcFNvdXJjZTo6fldlYkRyb3BTb3VyY2UoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEcm9wU291cmNlIl9zKTsKIH0KIAogU1RE
TUVUSE9ESU1QIFdlYkRyb3BTb3VyY2U6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQs
IF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOGFmYmEwZjZkNTNhLi5jNjFm
MTcyZDQ3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQ
cm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFBy
b3BlcnR5QmFnLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6
V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICA6
IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5
QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWci
X3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJvcGVydHlCYWco
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyogV2Vi
RWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRUZXN0UmVzdWx0JiBy
ZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTlkZTM3MWJlYTFj
Li43MTYxMjE5MjMzZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVy
cm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKQEAgLTQ2
LDEzICs0NiwxMyBAQCBXZWJFcnJvcjo6V2ViRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCiAgICAgLCBtX2Vycm9yKGVycm9yKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvcjo6
fldlYkVycm9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRXJyb3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVy
cm9yIl9zKTsKIH0KIAogV2ViRXJyb3IqIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA1OTQ4YjBlYzViODAuLjA3YmQ0NmZjOTk4ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIFdlYkZy
YW1lOjpXZWJGcmFtZSgpCiB7CiAgICAgV2ViRnJhbWVDb3VudCsrOwogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZTo6fldlYkZyYW1lKCkK
QEAgLTI1MSw3ICsyNTEsNyBAQCBXZWJGcmFtZTo6fldlYkZyYW1lKCkKICAgICBkZWxldGUgZDsK
ICAgICBXZWJGcmFtZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lKiBXZWJGcmFtZTo6Y3JlYXRlSW5zdGFuY2Uo
KQpAQCAtNTYzLDcgKzU2Myw3IEBAIHZvaWQgV2ViRnJhbWU6OmxvYWREYXRhKFJlZjxXZWJDb3Jl
OjpGcmFnbWVudGVkU2hhcmVkQnVmZmVyPiYmIGRhdGEsIEJTVFIgbWltZVR5CiB7CiAgICAgU3Ry
aW5nIG1pbWVUeXBlU3RyaW5nKG1pbWVUeXBlLCBTeXNTdHJpbmdMZW4obWltZVR5cGUpKTsKICAg
ICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwiOwor
ICAgICAgICBtaW1lVHlwZVN0cmluZyA9ICJ0ZXh0L2h0bWwiX3M7CiAKICAgICBTdHJpbmcgZW5j
b2RpbmdTdHJpbmcodGV4dEVuY29kaW5nTmFtZSwgU3lzU3RyaW5nTGVuKHRleHRFbmNvZGluZ05h
bWUpKTsKIApAQCAtMTA1Niw3ICsxMDU2LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6c2VsZWN0QWxs
KCkKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEVfVU5FWFBFQ1RFRDsKIAot
ICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRl
KCkpCisgICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJfcyku
ZXhlY3V0ZSgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCiAgICAgcmV0dXJuIFNfT0s7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3Bw
CmluZGV4IGFmZWQyYjRlNmE0Mi4uOTQ0NjhiYjczZDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcApAQCAtMzksMTMgKzM5LDEz
IEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIoUmVmUHRy
PEZyYW1lPiYmIGZyYW1lKQogICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGljeUxp
c3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxGcmFt
ZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3Li42ODkyZjc3MWFk
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lcjo6V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcihSZWZQdHI8R2VvbG9j
YXRpb24+JiYKICAgICAsIG1fZ2VvbG9jYXRpb24oV1RGTW92ZShnZW9sb2NhdGlvbikpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0
aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3Rl
bmVyOjp+V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlz
dGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCmluZGV4IDky
NGM0OGIxM2M0MS4uZmYxZmQ5MGM0Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcApAQCAtMzYsMTMgKzM2LDEzIEBAIENPTVB0
cjxXZWJHZW9sb2NhdGlvblBvc2l0aW9uPiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpjcmVhdGVJ
bnN0YW5jZSgpCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2NhdGlvblBvc2l0aW9u
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJH
ZW9sb2NhdGlvblBvc2l0aW9uKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb3NpdGlvbiJfcyk7CiB9CiAKIEhSRVNV
TFQgV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlp
ZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAppbmRleCA0NmFhYWU5N2Q3YmIuLjg2
YTNjYjZkYWEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJl
cHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVw
cmVzZW50YXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIHsKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3Vu
dCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJI
VE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxS
ZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxS
ZXByZXNlbnRhdGlvbigpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiAKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3Vu
dC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbiogV2Vi
SFRNTFJlcHJlc2VudGF0aW9uOjpjcmVhdGVJbnN0YW5jZShXZWJGcmFtZSogZnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDNmMWViNmQ3MzhiZC4uNTBhOGU1
ZjZiY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtODksNyAr
ODksNyBAQCBzdGF0aWMgaW5saW5lIENPTVB0cjxJUHJvcGVydHlCYWc+IGNyZWF0ZVVzZXJJbmZv
RnJvbUhpc3RvcnlJdGVtKEJTVFIgbm90aWZpY2F0aQogV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhp
c3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnkiX3MpOwogCiAg
ICAgbV9wcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVu
Y2VzKCk7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIFdlYkhpc3Rvcnk6OldlYkhpc3RvcnkoKQogV2Vi
SGlzdG9yeTo6fldlYkhpc3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIaXN0b3J5Il9zKTsKIH0KIAogV2ViSGlzdG9yeSogV2ViSGlzdG9yeTo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3Bw
CmluZGV4IGZiODhlMzllN2I1Ni4uOGRkOWJkYWFhMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFdlYkhpc3RvcnlJdGVt
OjpXZWJIaXN0b3J5SXRlbShSZWZQdHI8SGlzdG9yeUl0ZW0+JiYgaGlzdG9yeUl0ZW0pCiAgICAg
aGlzdG9yeUl0ZW1XcmFwcGVycygpLnNldChtX2hpc3RvcnlJdGVtLmdldCgpLCB0aGlzKTsKIAog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5
SXRlbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0ZW0iX3MpOwog
fQogCiBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKQEAgLTYyLDcgKzYyLDcgQEAg
V2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCiAgICAgaGlzdG9yeUl0ZW1XcmFwcGVy
cygpLnJlbW92ZShtX2hpc3RvcnlJdGVtLmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iX3MpOwogfQogCiBXZWJIaXN0b3J5
SXRlbSogV2ViSGlzdG9yeUl0ZW06OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGY2MjE5YTY2ZGFhOS4uNDQ3ZDkyYTNhM2NjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTUxLDEzICs1MSwx
MyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3
LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlYwogICAgIEFTU0VSVF9BUkcoaW5zcGVjdGVkV2Vi
VmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3Io
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3Rv
ciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6OmZy
b250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkph
dmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNj
cmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhlNGJlOGFjMjFiLi43NTg2NjI3MmQ1ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3Bw
CkBAIC00MiwxMyArNDIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJKYXZhU2Ny
aXB0Q29sbGVjdG9yOjpXZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciJfcyk7
CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
SmF2YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
SmF2YVNjcmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3IqIFdl
YkphdmFTY3JpcHRDb2xsZWN0b3I6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCmluZGV4IGNlODYyMGZkNGJkNy4uNmVl
MDcyNTMyZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFz
c0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFj
dG9yeS5jcHAKQEAgLTY5LDEzICs2OSwxMyBAQCBXZWJLaXRDbGFzc0ZhY3Rvcnk6OldlYktpdENs
YXNzRmFjdG9yeShDTFNJRCB0YXJnZXRDbGFzcykKICAgICBXZWJDb3JlOjpwb3B1bGF0ZUpJVE9w
ZXJhdGlvbnMoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIFdlYktpdENsYXNzRmFjdG9yeTo6fldlYktpdENs
YXNzRmFjdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3Au
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCmluZGV4
IDkzN2E2NjY5ZTkwOC4uZTY5YzBjODA4OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYktpdE1lc3Nh
Z2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VM
b29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJLaXRNZXNz
YWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKaW5kZXggMTI2M2JjMGMxMWY5Li5m
NTE1MWNiZTBiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0
YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3Rp
Y3MuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgaW50IFdlYkZyYW1lVmlld0NvdW50OwogV2ViS2l0
U3RhdGlzdGljczo6V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJLaXRTdGF0aXN0
aWNzOjp+V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJLaXRTdGF0aXN0
aWNzKiBXZWJLaXRTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5kZXggNWM5MTI1NzcyNTI2
Li4yNDQxMDY2ODg2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRh
YmxlVVJMUmVxdWVzdC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
OldlYk11dGFibGVVUkxSZXF1ZXN0KGJvb2wgaXNNdXRhYmxlKQogICAgIDogbV9pc011dGFibGUo
aXNNdXRhYmxlKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTkzLDcgKzkzLDcgQEAgV2Vi
TXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbW11dGFibGVJ
bnN0YW5jZShjb25zdCBSZXNvdXIKIFdlYk11dGFibGVVUkxSZXF1ZXN0Ojp+V2ViTXV0YWJsZVVS
TFJlcXVlc3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKaW5k
ZXggYmM0ZjI2ODRhZDE2Li42YTkzM2FiYjVmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcyLDEzICs3MiwxMyBAQCBXZWJOYXZpZ2F0
aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhOjp+V2ViTmF2
aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0YSogV2Vi
TmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNlKiBy
ZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwgY29uc3QgU3RyaW5nJiBjbGllbnRSZWRp
cmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3Bw
CmluZGV4IGY1M2JiNzI2MzUzZi4uOTQ5MjU2ZWU4MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgV2ViTm90aWZpY2F0
aW9uOjpXZWJOb3RpZmljYXRpb24oQlNUUiBuYW1lLCBJVW5rbm93biogYW5PYmplY3QsIElQcm9w
ZXJ0eUJhZyogdXMKICAgICAgICAgbV91c2VySW5mby0+QWRkUmVmKCk7CiAKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQogCiBXZWJO
b3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJOb3Rp
ZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQogICAgICAgICBtX3VzZXJJbmZvLT5SZWxlYXNl
KCk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViTm90aWZpY2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3Rp
ZmljYXRpb24iX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlmaWNhdGlvbjo6Y3Jl
YXRlSW5zdGFuY2UoQlNUUiBuYW1lIC8qPTAqLywgSVVua25vd24qIGFuT2JqZWN0IC8qPTAqLywg
SVByb3BlcnR5QmFnKiB1c2VySW5mbyAvKj0wKi8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA5MjUzMmRiZGNhNDEuLjZjZDg4
NDJlN2EwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0
aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRp
b25DZW50ZXIuY3BwCkBAIC01NywxMyArNTcsMTMgQEAgV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpX
ZWJOb3RpZmljYXRpb25DZW50ZXIoKQogICAgIDogZChtYWtlVW5pcXVlPFdlYk5vdGlmaWNhdGlv
bkNlbnRlclByaXZhdGU+KCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9u
Q2VudGVyOjp+V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwog
fQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXIqIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVy
ZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCmlu
ZGV4IDljZjhjYzAyYTIxYy4uZmIxNzNkZDVjMWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBXZWJQcmVmZXJlbmNl
cyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKQogV2ViUHJlZmVy
ZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVm
ZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmlu
ZGV4IDk0M2ZhN2FiNDVjOC4uM2JiYTMxZTM5ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUmVzb3VyY2UuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3VyY2U6OldlYlJlc291
cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdURjo6U3RyaW5n
JgogICAgICwgbV9mcmFtZU5hbWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZTo6fldlYlJlc291
cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlJlc291
cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJbnN0YW5jZShS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlw
dE9iamVjdC5jcHAKaW5kZXggYjhmZTMwN2NiODZiLi5kZjA3ODFmNDEyMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApAQCAtMzQsMTMgKzM0LDEzIEBA
CiBXZWJTY3JpcHRPYmplY3Q6OldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogV2ViU2NyaXB0
T2JqZWN0Ojp+V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiAvLyBJVW5rbm93biAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRX
b3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKaW5k
ZXggMjY4MTAxYTZjMGYwLi43ZWY4YTQ1MzQ2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIFdlYlNjcmlwdFdv
cmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxkKQogICAg
IGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAgICsrZ0NsYXNzQ291
bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRX
b3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2ViU2NyaXB0V29ybGQ6
On5XZWJTY3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0KCkp
OwogCiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRX
b3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRX
b3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9y
aWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAK
aW5kZXggOTQ1Yjg2OTIzZjZiLi5lZWYxNjQzYjYxN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBXZWJTZWN1
cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3Jp
Z2luKQogICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4i
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0K
IAogV2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2lu
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdpbiJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgwYTJmY2EyOS4uN2Yx
MWRmNWZmZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxp
emVkSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXpl
ZEpTVmFsdWUuY3BwCkBAIC0zMiwxMyArMzIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgICsr
Z0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUi
X3MpOwogfQogCiBXZWJTZXJpYWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkK
IHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
U2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNl
cmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogQ09NUHRyPFdlYlNlcmlhbGl6ZWRKU1ZhbHVlPiBX
ZWJTZXJpYWxpemVkSlNWYWx1ZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKaW5kZXggNjIwN2I1NmE3ZjY3Li4wNDUzNWYzZjcy
MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcApAQCAt
NDAsMTMgKzQwLDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVyOjpjcmVhdGVJ
bnN0YW5jZSgpCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0KIAog
V2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBIUkVT
VUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NP
TV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKaW5kZXggNTk3ODhj
NGY1ZTI0Li40MGI3YjY2ZmE3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAgLTQ2LDEzICs0Niwx
MyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIoc2VuZGVyKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0YW5jZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlci5jcHAKaW5kZXggMzVhODQ1ZWQ2OTNjLi41MDk5YmEwYWYxN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXIoUmVmUHRyPAogewogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciogV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNsaWVudD4mJiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRl
bnRpYWwuY3BwCmluZGV4IGU3NTk0NmIyODQyNS4uYTUzMWQxMDY5OTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBA
IFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkKICAgICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2Vi
VVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2Vi
VVJMQ3JlZGVudGlhbCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKaW5kZXgg
MTllZDk2ZjgyMTBkLi4zMWIwOWFjNGNiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVS
TFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwCiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3Bh
Y2UpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
UHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjp+V2ViVVJM
UHJvdGVjdGlvblNwYWNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2UqIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE1YjIzZGJmYTU0
OS4uNjEyMjk2Y2I1NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9u
c2UuY3BwCkBAIC0yMTUsMjAgKzIxNSwyMCBAQCBzdGF0aWMgU3RyaW5nIGxvY2FsaXplZFNob3J0
RGVzY3JpcHRpb25Gb3JTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQogV2ViVVJMUmVzcG9uc2U6
OldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2U6On5XZWJVUkxSZXNwb25z
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxS
ZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlKiBXZWJVUkxSZXNwb25zZTo6Y3JlYXRl
SW5zdGFuY2UoKQogewogICAgIFdlYlVSTFJlc3BvbnNlKiBpbnN0YW5jZSA9IG5ldyBXZWJVUkxS
ZXNwb25zZSgpOwogICAgIC8vIGZha2UgYW4gaHR0cCByZXNwb25zZSAtIHNvIGl0IGhhcyB0aGUg
SVdlYkhUVFBVUkxSZXNwb25zZSBpbnRlcmZhY2UKLSAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9
IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoeyB9LCAiaHR0cDovLyIpLCBTdHJpbmcoKSwgMCwg
U3RyaW5nKCkpOworICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShX
VEY6OlVSTCgiaHR0cDovLyJfcyksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CiAgICAgaW5zdGFu
Y2UtPkFkZFJlZigpOwogICAgIHJldHVybiBpbnN0YW5jZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IDQ4MTIz
ODQ3MTNjOC4uZWRmMzM1ODZiMWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46Oldl
YlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogV2Vi
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAg
ICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuPiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0Li5lNTVhMjQyZGNlYjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgV2ViVmll
dzo6V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3KCkKQEAgLTQ2OSw3
ICs0NjksNyBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQtLTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZp
ZXcqIFdlYlZpZXc6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5OTUsMTEgQEAgYm9v
bCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykK
ICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2FzZSBT
ZWxlY3RBbGw6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2Vs
ZWN0QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVuZG86Ci0gICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsK
KyAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIl9zKS5leGVj
dXRlKCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlw
ZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50
TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRv
IGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZl
bnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcg
eyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBl
KCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9l
c24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29t
bWFuZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxk
IGJlIHRyZWF0ZWQsCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHko
X0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJDb3B5Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3MzQs
NyArNDczNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElVbmtub3duKiAvKnNl
bmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUoKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAgSFJFU1VMVCBXZWJW
aWV3OjpwYXN0ZShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRl
KCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwog
fQogCkBAIC00NzUyLDcgKzQ3NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHlVUkwoX0luXyBC
U1RSIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCku
Y29weVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29w
eVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBAIEhSRVNVTFQgV2Vi
Vmlldzo6ZGVsZXRlXyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1f
cGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIikuZXhl
Y3V0ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1l
KCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3Jr
ZXJzUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0
ZS5jcHAKaW5kZXggMDQ1MThmYWQxYTc2Li4yZTkzMWUwOGU3NzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKQEAgLTkwLDExICs5MCwxMSBAQCBX
ZWJXb3JrZXJzUHJpdmF0ZSogV2ViV29ya2Vyc1ByaXZhdGU6OmNyZWF0ZUluc3RhbmNlKCkKIFdl
YldvcmtlcnNQcml2YXRlOjpXZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CiAKIFdlYldv
cmtlcnNQcml2YXRlOjp+V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggY2Y3Yjc4OWIz
NWVhLi5lMTk2NjhjY2Q3NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9E
dW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIHZvaWQgc2l6ZVdlYlZpZXdG
b3JDdXJyZW50VGVzdCgpCiAKIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBj
aGFyKiBwYXRoT3JVcmwpCiB7Ci0gICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVT
eXN0ZW06OnBhcmVudFBhdGgocGF0aE9yVXJsKTsKKyAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxi
YWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChTdHJpbmc6OmZyb21VVEY4KHBhdGhPclVybCkp
OwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwogICAgIGlmICghX3dmdWxscGF0
aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCkuZGF0YSgpLCBf
TUFYX1BBVEgpKQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kRm9udEZh
bGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIAogICAgIFN0cmluZyBwYXRoVG9DaGVjayA9
IGZ1bGxQYXRoOwogCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJMYXlv
dXRUZXN0cyI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9ICJMYXlvdXRU
ZXN0cyJfczsKIAogICAgIC8vIEZpbmQgdGhlIGxheW91dCB0ZXN0IHJvb3Qgb24gdGhlIGN1cnJl
bnQgcGF0aDoKICAgICBzaXplX3QgbG9jYXRpb24gPSBwYXRoVG9DaGVjay5maW5kKGxheW91dFRl
c3RzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhy
ZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRh
c2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OS4uZmE2MThiYjFiNzliIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSAr
MTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAg
QVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRf
RVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAg
ICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAt
MCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAt
MCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
LSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIp
KTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZD
KQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAs
MTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRo
aXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRh
dGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAg
ICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwot
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikp
OwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4t
Mi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50
KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90
YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9IVFRQUGFyc2Vycy5jcHAKaW5kZXggZmZiYTAwYjgwMjFhLi5lODA3MDc0ZjRjYzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNw
cApAQCAtNTksMzIgKzU5LDMyIEBAIFRFU1QoSFRUUFBhcnNlcnMsIFBhcnNlQ3Jvc3NPcmlnaW5S
ZXNvdXJjZVBvbGljeUhlYWRlcikKICNpZiBVU0UoR0xJQikKIFRFU1QoSFRUUFBhcnNlcnMsIFZh
bGlkYXRlVXNlckFnZW50VmFsdWVzKQogewotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiU2FmYXJpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIikpOwotICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQi
KSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkv
MTAuMCBXZWJLaXQvMTYzIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbykiKSk7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNv
bW1lbnQgKG5lc3RlZCBjb21tZW50KSkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKCkgKDwtIEVtcHR5IGNvbW1lbnQpIikpOwotICAgIEVY
UEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChsZWZ0IHBhcmVu
IFxcKCBhcyBxdW90ZWQgcGFpcikiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hh
cmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCIwMTIzNDU2Nzg5IChudW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9U
UlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xlIGNoYXJhY3RlciB0b2tl
bikiKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaSBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIlNhZmFyaS8xMC4wIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0Il9zKSk7CisgICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJL
aXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSJfcykpOworICAg
IEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChjb21tZW50
IChuZXN0ZWQgY29tbWVudCkpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKCkgKDwtIEVtcHR5IGNvbW1lbnQpIl9zKSk7CisgICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4g
XFwoIGFzIHF1b3RlZCBwYWlyKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmljIHRva2VuIGNo
YXJhY3RlcnMpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCIwMTIzNDU2Nzg5IChudW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIl9zKSk7CisgICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVy
IHRva2VuKSJfcykpOwogCi0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCIgU2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgd2hpdGVzcGFjZSkgIikp
OwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlxuU2FmYXJp
IChsZWFkaW5nIG5ld2xpbmUpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiIpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRv
a2VuIGFmdGVyIHNsYXNoKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkgKHVudGVybWluYXRlZCBjb21tZW50IikpOwotICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5lZCBjb21tYW5l
bnQpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4
MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFjdGVyKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvXG4xMC4wIChlbWJlZGVkIG5ld2xpbmUp
IikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIldQRVxc
IFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiICJfcykpOwor
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxl
YWRpbmcgd2hpdGVzcGFjZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRlc3BhY2UpICJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlxuU2FmYXJpIChsZWFkaW5n
IG5ld2xpbmUpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpICh0cmFpbGluZyBuZXdsaW5lKVxuIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8gdmVyc2lvbiB0b2tlbiBh
ZnRlciBzbGFzaCkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgKHVudGVybWluYXRlZCBjb21tZW50Il9zKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVu
dCkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJc
eDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvXG4xMC4wIChlbWJlZGVkIG5ld2xp
bmUpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
V1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tlbikiX3MpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3QgdG9r
ZW4pIl9zKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAppbmRleCBiMDExMjhiMjZiMWMuLjA3YTQ1ZTBlZjQx
NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1
ZmZlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJlZEJ1ZmZl
clRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6ZV90IE4g
PgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyByZXR1cm4g
TjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNo
dW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFy
YXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0aWMgdm9p
ZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNo
YXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIl9zLCBi
b29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7CiAgICAg
U3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0aExhdGlu
MUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtNDc3LDMyICs0NzcsMzIgQEAgVEVTVF9G
KFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlTZWdtZW50
KQogICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFyZWRCdWZm
ZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwg
InMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJlICIsICJz
LiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIik7
CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSJfcyk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MxV2l0
aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3Ip
KSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaSIsICJzIGkiLCAicyB0aGUg
bW9zdCByaSIsICJkaSIsICJjdWxvdXMgaGkiLCAic3RvcnkgdGhlcmUgaSIsICJzLiIgfTsKLSAg
ICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIiwgdHJ1ZSk7Cisg
ICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSJfcywgdHJ1ZSk7
CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3Mx
V2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IpKSk7
CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4
cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwgIiAiLCAiIHRoZSBtb3N0
IHJpZGljdWxvdXMgaCIsICJ0b3J5IHRoZXJlICIsICIuIiB9OwotICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIik7CisgICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVj
a0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6
ZShleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5j
bGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczJXaXRoU2Vw
YXJhdG9yW10gPSB7ICJUaGlzIiwgIiBpcyIsICIgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXMiLCAi
dG9yeSB0aGVyZSBpcyIsICIuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNo
YXJlZEJ1ZmZlciwgImlzIiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywg
c2hhcmVkQnVmZmVyLCAiaXMiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0No
dW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBl
Y3RlZENodW5rczJXaXRoU2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwog
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9y
W10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaCIsICJvcnkgdGhlcmUgaXMuIiB9
OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIpOwor
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJfcyk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3MzV2l0
aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0b3Ip
KSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaXMgaXMgdGhlIG1vc3Qgcmlk
aWN1bG91cyBoaXN0IiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9yLCBh
cnJheXNpemUoZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9OwogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVu
KHNpbXBsZVRleHQpKTsKQEAgLTU1NywxMiArNTU3LDEyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJD
aHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQp
KTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJh
dG9yW10gPSB7ICIiIH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwotICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyIpOworICAgICAg
ICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyJfcyk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2Vw
YXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAg
ICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3Rl
ZENodW5rc1dpdGhTZXBhcmF0b3JbXSA9IHsgImRvZyIgfTsKLSAgICAgICAgcmVhZEFsbENodW5r
cygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENo
dW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3MsIHRydWUpOwogICAgICAgICBFWFBF
Q1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvciwg
YXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9CiAKQEAgLTU3
MiwxMiArNTcyLDEyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5n
aW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpj
cmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgY29uc3QgY2hh
ciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJCZWF1Y291cCBk
ZSBjaGF0cyAiLCAiIiwgIiIsICIiLCAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxTdHJpbmc+
IGNodW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJj
YXQiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJjYXQi
X3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1
bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFy
YXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciog
Y29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJCZWF1Y291cCBkZSBjaGF0
cyBjYXQiLCAiY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiB9OwotICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIsIHRydWUpOworICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcywgdHJ1ZSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yKSkpOwogICAgIH0KICAgICB7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50
UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRR
dWlya3MuY3BwCmluZGV4IDVmOTI1MzI3OTFhNC4uMmRkN2U0YWU3YTAxIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcApA
QCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyB2b2lk
IGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1
cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJM
KHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JV
UkwoVVJMKCBTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29u
dGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiU2Fm
YXJpIikpOwpAQCAtNDUsNyArNDUsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JV
UkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogCiBzdGF0aWMgdm9pZCBh
c3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNGaXJlZm94QnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVy
bCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwo
eyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVS
TChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250
YWlucygiQ2hyb21lIikpOwogICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiU2Fm
YXJpIikpOwpAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JV
UkxIYXNGaXJlZm94QnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIAogc3RhdGljIHZvaWQg
YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwp
CiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsg
fSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwo
VVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlu
cygiTWFjaW50b3NoIikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMg
T1MgWCIpKTsKQEAgLTcyLDE0ICs3MiwxNCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRG
b3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIC8vIHRoYXQgdGhlIHN0
YW5kYXJkIHVzZXIgYWdlbnQgc2hvdWxkIGJlIHVzZWQuKQogc3RhdGljIHZvaWQgYXNzZXJ0VXNl
ckFnZW50Rm9yVVJMSGFzRW1wdHlRdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5n
IHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAg
U3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVy
bCB9KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmlzTnVsbCgpKTsKIH0KIAogVEVTVChV
c2VyQWdlbnRUZXN0LCBRdWlya3MpCiB7CiAgICAgLy8gQSBzaXRlIHdpdGggbm8gcXVpcmtzIHNo
b3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCAiaHR0cDovL3d3dy53ZWJraXQub3JnLyIpKTsKKyAg
ICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoImh0dHA6Ly93
d3cud2Via2l0Lm9yZy8iX3MpKTsKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwoKSk7
CiAKICAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6
Ly90eXBla2l0LmNvbS8iKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL2N1cmwvQ29va2llcy5jcHAKaW5kZXggMGQwYjAwN2Y2NGVkLi42NDM4ZjFjYTZhYjEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMu
Y3BwCkBAIC02NCwzMCArNjQsMzAgQEAgcHJvdGVjdGVkOgogCiBURVNUX0YoQ3VybENvb2tpZXMs
IFJlamVjdFRhaWxtYXRjaEZhaWx1cmVEb21haW4pCiB7Ci0gICAgVVJMIHVybCB7ICJodHRwOi8v
ZXhhbXBsZS5jb20iIH07CisgICAgVVJMIHVybCB7ICJodHRwOi8vZXhhbXBsZS5jb20iX3MgfTsK
IAogICAgIC8vIHN1Y2Nlc3M6IGRvbWFpbiBtYXRjaAotICAgIEVYUEVDVF9UUlVFKG1fY29va2ll
SmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49ZXhhbXBsZS5jb20iLCBD
b29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVK
YXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj1leGFtcGxlLmNvbSJfcywg
Q29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogICAgIC8vIHN1Y2Nlc3M6IHdpbGRjYXJk
IG9mIGRvbWFpbnMKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwg
dXJsLCAiZm9vPWJhcjsgRG9tYWluPS5leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwg
dXJsLCAiZm9vPWJhcjsgRG9tYWluPS5leGFtcGxlLmNvbSJfcywgQ29va2llSmFyREI6OlNvdXJj
ZTo6TmV0d29yaykpOwogICAgIC8vIGZhaWx1cmU6IHNwZWNpZmljIHN1YiBkb21haW4KLSAgICBF
WFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERv
bWFpbj13d3cuZXhhbXBsZS5jb20iLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFy
OyBEb21haW49d3d3LmV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3Jr
KSk7CiAgICAgLy8gZmFpbHVyZTogZGlmZmVyZW50IGRvbWFpbgotICAgIEVYUEVDVF9GQUxTRSht
X2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXNhbXBsZS5j
b20iLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgRVhQRUNUX0ZBTFNFKG1f
Y29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNv
bSJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogfQogCiBURVNUX0YoQ3VybENv
b2tpZXMsIFRlc3RIdHRwT25seUNhc2UpCiB7Ci0gICAgVVJMIHVybCB7ICJodHRwOi8vZXhhbXBs
ZS5jb20iIH07CisgICAgVVJMIHVybCB7ICJodHRwOi8vZXhhbXBsZS5jb20iX3MgfTsKIAogICAg
IC8vIHN1Y2Nlc3M6IGZyb20gbmV0d29yawotICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5z
ZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSIsIENvb2tpZUphckRCOjpTb3Vy
Y2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVy
bCwgdXJsLCAiZm9vPWJhcjsgSHR0cE9ubHkiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspKTsKICAgICAvLyBzdWNjZXNzOiB3aWxkY2FyZCBvZiBkb21haW5zCi0gICAgRVhQRUNUX1RS
VUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImJpbmdvPWJvbmdvOyIsIENvb2tp
ZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOworICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5z
ZXRDb29raWUodXJsLCB1cmwsICJiaW5nbz1ib25nbzsiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6
OlNjcmlwdCkpOwogICAgIC8vIGZhaWx1cmU6IGZvbyBpcyBhbHJlYWR5IHN0b3JlZCBhcyBIdHRw
T25seQotICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAi
Zm9vPWJhcjsiLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQpKTsKKyAgICBFWFBFQ1RfRkFM
U0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7Il9zLCBDb29raWVK
YXJEQjo6U291cmNlOjpTY3JpcHQpKTsKICAgICAvLyBmYWlsdXJlOiBpbmNvbnNpc3RlbnQuIFNv
dXJjZSBpcyBTY3JpcHQsIGJ1dCBhdHRyaWJ1dGUgc2F5cyBIdHRwT25seQotICAgIEVYUEVDVF9G
QUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgSHR0cE9ubHki
LCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQpKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29r
aWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IEh0dHBPbmx5Il9zLCBDb29raWVK
YXJEQjo6U291cmNlOjpTY3JpcHQpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCmluZGV4IDgw
OGIzMGMyMzhjMy4uZGRjMTg1ZDk2YmM2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQsNyAr
MjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0V2l0
aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KIAot
c3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRyeSB7
CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhjZXB0
aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9OwogZW51
bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQgKzI3
NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUsIElz
QXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsKKyAg
ICBBU0NJSUxpdGVyYWwganM7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51bGxw
dHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VUeXBl
OjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gn
LCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsn
PHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTog
J3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5l
cignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5l
dyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0Pidd
LCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9
ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3BvbnNl
VHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcp
KSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2
ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyJf
czsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIo
ewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIs
IHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9
LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBm
cm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0
ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+
Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAt
MzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZpZXdz
V2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgn
L2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0g
ImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBz
ZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9z
dy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwg
anMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0
Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2Zl
dGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9z
Y3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBw
SW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcs
IChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8
c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAn
dGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3Bv
bnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAgICAg
ewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICAg
ICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCisg
ICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9z
dy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJf
cyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVyUG9y
dCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQgc29m
dFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250
ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAgICAg
ICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3Ms
IHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpz
IH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAgTlNN
dXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcgKzU1
OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25BcHBJ
bml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
U1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1
bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4Y2Vw
dGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJTV1JF
U09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0g
UiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgKGV2
ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5zb3Vy
Y2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFzeW5j
IGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudEluaXRp
YWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0aWF0
ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGljIFN0
cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2YWN5
UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVkVmFs
dWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0
KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAgeyAi
L3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJf
cywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJfcywg
eyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBz
Y3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdlYlZp
ZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2VydmljZVdv
cmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQpp
bmRleCBjZGI5MTA0YWViNWYuLjMyNGJkMDI0NjhlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBA
IC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9u
RXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQog
Ci1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBl
cm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09V
UkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4
dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAg
ICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9
IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBA
IC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1z
dGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNv
bnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5Pgog
PGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVy
b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4x
OjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9i
b2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9
IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFt
ZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9D
RE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBl
cm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZl
cjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9z
LCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVU
ZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxs
cHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5k
ZXggODVmN2Q4OWRiZDgxLi5mNmRiMTY3YTViZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
QEAgLTEzMSwxNCArMTMxLDE0IEBAIEBlbmQKIHN0YXRpYyB2b2lkIGNsZWFuVXBJbkFwcEJyb3dz
ZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7
CisgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiX3MpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV1RGOjppbml0aWFsaXplTWFp
blRocmVhZCgpOwogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVy
VGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVu
dGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVzdElkZW50aWZpZXIiKTsKKyAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0
SWRlbnRpZmllciJfcyk7CiB9CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgTm9uQXBwQm91
bmREb21haW5GYWlsZWRVc2VyU2NyaXB0QXRTdGFydCkKQEAgLTgyNSw3ICs4MjUsNyBAQCAtICh2
b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2Vy
Q29udGVudENvbnRyb2xsZXIgZAogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5CeXRlcyA9IFIi
U1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NTAsOSArODUw
LDkgQEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVu
Y3Rpb24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0Ui
X3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JFU09V
UkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODc1LDE1ICs4NzUsMTUg
QEAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oZnVuY3Rp
b24ocmVnKSB7CiB9CiAKIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBzY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIAogc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgZXZlbnQuc291cmNlLnBv
c3RNZXNzYWdlKCJTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiAiICsgZXZlbnQuZGF0YSk7CiB9KTsK
IAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKIHsKQEAgLTg5OSw4ICs4
OTksOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2Vy
dmljZVdvcmtlcnMpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIg
c2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpbkJ5dGVzIH0gfSwKLSAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRtbCJfcywgeyBt
YWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiAgICAgaXNEb25lID0gZmFs
c2U7CiAgICAgCiAgICAgLy8gRXhwZWN0IHRoZSBzZXJ2aWNlIHdvcmtlciBsb2FkIHRvIGNvbXBs
ZXRlIHN1Y2Nlc3NmdWxseS4KLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdv
cmtlcjogU2VydmljZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9t
YWluIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiTWVzc2FnZSBmcm9tIHdvcmtlcjogU2Vydmlj
ZVdvcmtlciByZWNlaXZlZDogSGVsbG8gZnJvbSBhbiBhcHAtYm91bmQgZG9tYWluIl9zOwogICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21haW4u
aHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNE
b25lID0gZmFsc2U7CkBAIC05NTYsOCArOTU2LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBVbnJlZ2lzdGVyU2VydmljZVdvcmtlcikKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluVW5y
ZWdpc3RlckJ5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL21haW4uaHRtbCJfcywgeyBtYWluVW5yZWdpc3RlckJ5dGVzIH0gfSwKKyAgICAgICAg
eyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVE
YXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05Njcs
NyArOTY3LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBVbnJlZ2lzdGVyU2VydmljZVdv
cmtlcikKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25l
ID0gZmFsc2U7CiAKLSAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2Vz
cyI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nlc3MiX3M7CiAg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFp
bi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmY0ODJlM2FiOGNiLi41YmNlYTgxMDkz
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDgg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkK
ICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0s
IHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIi
IH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAg
ICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQv
aHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2lu
Il9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAg
ICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24u
aHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1Pcmln
aW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9o
dG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4i
X3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7
CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAz
M2M4ZGJjNWI3MWUuLmZkZDY3MDg2ODNlYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBSZWNv
dmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08iX3N0ciB9IH0KKyAgICAgICAgeyAi
LyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAgYXV0byAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDlhNjhlNmU0
NTFmZS4uMmYxOTUyYzI5ODliIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMTky
LDcgKzE5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3V2FzQ2FsbGVkID0g
ZmFsc2U7CiAgICAgICAgIG1fbWVzc2FnZSA9IENTdHJpbmcoKTsKICAgICAgICAgYXV0byBzaWdu
YWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9zZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3IiwgR19D
QUxMQkFDSyhjcmVhdGVXZWJWaWV3Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1h
bmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIpOworICAgICAgICBzZW5kQ29tbWFu
ZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Il9zKTsKICAgICAgICAgZ19tYWluX2xv
b3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv
bm5lY3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUobV9jcmVh
dGVXZWJWaWV3V2FzQ2FsbGVkKTsKQEAgLTIxMiw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1fY3JlYXRlV2ViVmlld0luV2luZG93V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgICAgIG1fbWVz
c2FnZSA9IHsgfTsKICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9z
ZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3Ojp3aW5kb3ciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZp
ZXdJbldpbmRvd0NhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5k
KCJjcmVhdGVCcm93c2luZ0NvbnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiV2luZG93
XCJ9Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRl
eHQiX3MsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0iX3MpOwogICAgICAgICBn
X21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRs
ZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1
ZShtX2NyZWF0ZVdlYlZpZXdJbldpbmRvd1dhc0NhbGxlZCk7CkBAIC0yMzAsNyArMjMwLDcgQEAg
cHVibGljOgogICAgICAgICBtX2NyZWF0ZVdlYlZpZXdJblRhYldhc0NhbGxlZCA9IGZhbHNlOwog
ICAgICAgICBtX21lc3NhZ2UgPSB7IH07CiAgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25h
bF9jb25uZWN0KG1fc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldzo6dGFiIiwgR19DQUxMQkFDSyhj
cmVhdGVXZWJWaWV3SW5UYWJDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRv
QmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0IiwgIntcInByZXNlbnRhdGlvbkhpbnRcIjpc
IlRhYlwifSIpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdD
b250ZXh0Il9zLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFiXCJ9Il9zKTsKICAgICAgICAg
Z19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgICAgICBnX3NpZ25hbF9oYW5k
bGVyX2Rpc2Nvbm5lY3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CiAgICAgICAgIGdfYXNzZXJ0X3Ry
dWUobV9jcmVhdGVXZWJWaWV3SW5UYWJXYXNDYWxsZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCmluZGV4IDUxYzgxNTFjOTBhYS4uMDU0
MDU1MzdhNzU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGli
L1Rlc3RTU0wuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgICAgICBhc3NlcnRP
YmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNlcnRpZmljYXRlKSk7CiAg
ICAgICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKICAgICAgICAgbV90bHNFcnJvcnMg
PSB0bHNFcnJvcnM7Ci0gICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTCh7IH0sIGZhaWxpbmdVUkkp
OworICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoU3RyaW5nIHsgZmFpbGluZ1VSSSB9KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDI4NGY4MDRiNjQxMC4u
YjdjMWNjMWM1YzUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyB2b2lkIHdpbmRvd1Byb3BlcnRpZXNOb3RpZnlDYWxsYmFjayhHT2JqZWN0Kiwg
R1BhcmFtU3BlYyogcGFyYW1TcGVjLCBVSUNsaWVudFRlc3QqIHRlc3QpCiAgICAgewotICAgICAg
ICB0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmFkZChnX3BhcmFtX3NwZWNfZ2V0X25h
bWUocGFyYW1TcGVjKSk7CisgICAgICAgIHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQu
YWRkKFN0cmluZyB7IGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJhbVNwZWMpIH0pOwogICAgIH0K
IAogICAgIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRlQ2FsbGJhY2soV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiogbmF2aWdhdGlvbiwgVUlDbGll
bnRUZXN0KiB0ZXN0KQpAQCAtNzYwLDExICs3NjAsMTEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYlZp
ZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAg
ICB0ZXN0LT5sb2FkSHRtbChodG1sU3RyaW5nLmdldCgpLCBudWxscHRyKTsKICAgICB0ZXN0LT53
YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciogcHJv
cGVydGllc0NoYW5nZWRbXSA9IHsKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBw
cm9wZXJ0aWVzQ2hhbmdlZFtdID0gewogI2lmIFBMQVRGT1JNKEdUSykKLSAgICAgICAgImdlb21l
dHJ5IiwKKyAgICAgICAgImdlb21ldHJ5Il9zLAogI2VuZGlmCi0gICAgICAgICJsb2NhdGlvbmJh
ci12aXNpYmxlIiwgIm1lbnViYXItdmlzaWJsZSIsICJzdGF0dXNiYXItdmlzaWJsZSIsICJ0b29s
YmFyLXZpc2libGUiLCAic2Nyb2xsYmFycy12aXNpYmxlIgorICAgICAgICAibG9jYXRpb25iYXIt
dmlzaWJsZSJfcywgIm1lbnViYXItdmlzaWJsZSJfcywgInN0YXR1c2Jhci12aXNpYmxlIl9zLCAi
dG9vbGJhci12aXNpYmxlIl9zLCAic2Nyb2xsYmFycy12aXNpYmxlIl9zCiAgICAgfTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhwcm9wZXJ0aWVzQ2hhbmdlZCk7ICsr
aSkKICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2Vk
LmNvbnRhaW5zKHByb3BlcnRpZXNDaGFuZ2VkW2ldKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAppbmRl
eCA0MGVhZWI3YmYyN2EuLmM1NjkwMmEyMjk3MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC00
NzYsNyArNDc2LDcgQEAgc3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvblBhZ2VJRChXZWJWaWV3
VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICAvLyBSZWdpc3RlciBhIGN1c3RvbSBVUkkg
c2NoZW1lIHRvIHRlc3QgaGlzdG9yeSBuYXZpZ2F0aW9uLgogICAgIHdlYmtpdF93ZWJfY29udGV4
dF9yZWdpc3Rlcl91cmlfc2NoZW1lKHRlc3QtPm1fd2ViQ29udGV4dC5nZXQoKSwgImZvbyIsCiAg
ICAgICAgIFtdKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIGdwb2ludGVyKSB7Ci0g
ICAgICAgICAgICBVUkwgdXJsID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9n
ZXRfdXJpKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIFVSTCB1cmwgPSBVUkwoU3RyaW5nIHsgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpIH0pOwogICAgICAgICAgICAg
R1JlZlB0cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfbWVtb3J5X2lu
cHV0X3N0cmVhbV9uZXcoKSk7CiAgICAgICAgICAgICBjaGFyKiBodG1sID0gZ19zdHJkdXBfcHJp
bnRmKCI8aHRtbD48aGVhZD48dGl0bGU+JXM8L3RpdGxlPjwvaGVhZD48Ym9keT48L2JvZHk+PC9o
dG1sPiIsIHVybC5ob3N0KCkgPT0gImhvc3Q1IiA/ICJUaXRsZTUiIDogIlRpdGxlNiIpOwogICAg
ICAgICAgICAgZ19tZW1vcnlfaW5wdXRfc3RyZWFtX2FkZF9kYXRhKEdfTUVNT1JZX0lOUFVUX1NU
UkVBTShpbnB1dFN0cmVhbS5nZXQoKSksIGh0bWwsIHN0cmxlbihodG1sKSwgZ19mcmVlKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVz
dFNlcnZlci5jcHAKaW5kZXggZjBiZDg2NjVmNzBhLi4yODAzNDExNDBmMDIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2
ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cnVuKFNvdXBT
ZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKIAogdm9pZCBXZWJLaXRUZXN0U2VydmVyOjph
ZGRXZWJTb2NrZXRIYW5kbGVyKFNvdXBTZXJ2ZXJXZWJzb2NrZXRDYWxsYmFjayBjYWxsYmFjaywg
Z3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgbV9iYXNlV2ViU29ja2V0VVJMID0gVVJMKG1fYmFz
ZVVSTCwgIi93ZWJzb2NrZXQvIik7CisgICAgbV9iYXNlV2ViU29ja2V0VVJMID0gVVJMKG1fYmFz
ZVVSTCwgIi93ZWJzb2NrZXQvIl9zKTsKICAgICBtX2Jhc2VXZWJTb2NrZXRVUkwuc2V0UHJvdG9j
b2wobV9iYXNlV2ViU29ja2V0VVJMLnByb3RvY29sSXMoImh0dHAiKSA/ICJ3cyIgOiAid3NzIik7
CiAKICAgICBpZiAobV9xdWV1ZSkgewpAQCAtMTAxLDEyICsxMDEsMTIgQEAgQ1N0cmluZyBXZWJL
aXRUZXN0U2VydmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNv
bnN0CiB7CiAgICAgZ19hc3NlcnRfZmFsc2UobV9iYXNlV2ViU29ja2V0VVJMLmlzTnVsbCgpKTsK
ICAgICBnX2Fzc2VydF90cnVlKHBhdGggJiYgKnBhdGggPT0gJy8nKTsKLSAgICByZXR1cm4gVVJM
KG1fYmFzZVdlYlNvY2tldFVSTCwgcGF0aCArIDEpLnN0cmluZygpLnV0ZjgoKTsgLy8gSWdub3Jl
IHRoZSBsZWFkaW5nIHNsYXNoLgorICAgIHJldHVybiBVUkwobV9iYXNlV2ViU29ja2V0VVJMLCBT
dHJpbmcgeyBwYXRoICsgMSB9KS5zdHJpbmcoKS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGlu
ZyBzbGFzaC4KIH0KIAogQ1N0cmluZyBXZWJLaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQYXRoKGNv
bnN0IGNoYXIqIHBhdGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VVUkwsIHBhdGgp
LnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgU3RyaW5nIHsgcGF0
aCB9KS5zdHJpbmcoKS51dGY4KCk7CiB9CiAKIHVuc2lnbmVkIFdlYktpdFRlc3RTZXJ2ZXI6OnBv
cnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVk
Q29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50
TW9kZS5tbQppbmRleCBmMjJjMzcyMjc5NjkuLjk4NWQ0OTE1YzZhYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KQEAgLTE2OSw3ICsxNjks
NyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9u
YWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitSZXRhaW5QdHI8Vmlld0Ns
YXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2
aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRl
bnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2Uo
MTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChkZWZhdWx0Q29udGVudE1v
ZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFzcz4gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb24KIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNz
PiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9k
ZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUg
PSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWluUHRyPFZpZXdDbGFzcz4s
IFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFsPFdLQ29udGVudE1vZGU+
IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3MgfSwgQ0dTaXplIHNpemUg
PSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0
ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDb250
ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpAQCAtMzcyLDcgKzM3Miw3
IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVkQ29udGVudE1vZGVBdFZh
cmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIgaVBhZFVz
ZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3Pih7IH0sIHsgIlRlc3RX
ZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsg
fSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZlQ29udGVudE1vZGU6V0tD
b250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgIFtb
d2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5TdHJpbmdzOkAiTW96aWxs
YS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07CiAKQEAgLTQxOSw3ICs0
MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNhdGlvbk5hbWVGb3JEZXNr
dG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1hbnVhbGx5IHNldCB0aGUg
YXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgTW9i
aWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oV0tDb250ZW50TW9k
ZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBhdXRvIFt3ZWJWaWV3LCBk
ZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tX
ZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCJfcyB9KTsKICAg
ICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiIHdpdGhQb2xpY3lEZWNp
c2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJBZ2VudCA9IFt3ZWJWaWV3
IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVFKFt1c2VyQWdlbnQgY29u
dGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdHNwaS5jcHAKaW5kZXggOGNkMjJlNGQzNzJhLi44OTVmMmU2OTkwMzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKQEAg
LTM5OCwxOCArMzk4LDE4IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlCiAgICAgbV9lbGVtZW50
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQt
PmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhQbGFjZWhvbGRlclZh
bHVlIikKLSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRl
cy5nZXQoInBsYWNlaG9sZGVyLXRleHQiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicGxhY2Vob2xkZXItdGV4dCJf
cykpLmxlYWtSZWYoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhJbnZhbGlkIikgewog
ICAgICAgICBhdXRvIHRleHRBdHRyaWJ1dGVzID0gbV9lbGVtZW50LT50ZXh0QXR0cmlidXRlcygp
OwotICAgICAgICBhdXRvIHZhbHVlID0gdGV4dEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5nZXQoImlu
dmFsaWQiKTsKKyAgICAgICAgYXV0byB2YWx1ZSA9IHRleHRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMu
Z2V0KCJpbnZhbGlkIl9zKTsKICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIHZhbHVlID0gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LmdldCgpLCBXZWJDb3JlOjpB
dHNwaTo6U3RhdGU6OkludmFsaWRFbnRyeSkgPyAidHJ1ZSIgOiAiZmFsc2UiOworICAgICAgICAg
ICAgdmFsdWUgPSBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQuZ2V0KCksIFdlYkNvcmU6OkF0
c3BpOjpTdGF0ZTo6SW52YWxpZEVudHJ5KSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOwogICAgICAg
ICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh2YWx1ZSkubGVha1JlZigpOwogICAg
IH0KICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBTGl2ZSIpCi0gICAgICAgIHJldHVy
biBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIikpLmxlYWtS
ZWYoKTsKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRl
cy5nZXQoImxpdmUiX3MpKS5sZWFrUmVmKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFY
QVJJQVJlbGV2YW50IikKLSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
YXR0cmlidXRlcy5nZXQoInJlbGV2YW50IikpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQoInJlbGV2YW50Il9zKSkubGVh
a1JlZigpOwogCiAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0
ciwgMCk7CiB9CkBAIC00MjAsMjEgKzQyMCwyMSBAQCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIG1f
ZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQVNl
dFNpemUiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInNldHNpemUiKS50b0RvdWJs
ZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInNldHNpemUiX3MpLnRvRG91Ymxl
KCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQVBvc0luU2V0IikKLSAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJwb3NpbnNldCIpLnRvRG91YmxlKCk7CisgICAgICAgIHJl
dHVybiBhdHRyaWJ1dGVzLmdldCgicG9zaW5zZXQiX3MpLnRvRG91YmxlKCk7CiAgICAgaWYgKGF0
dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUNvbHVtbkNvdW50IikKLSAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuZ2V0KCJjb2xjb3VudCIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzLmdldCgiY29sY291bnQiX3MpLnRvRG91YmxlKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUg
PT0gIkFYQVJJQVJvd0NvdW50IikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dj
b3VudCIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93Y291
bnQiX3MpLnRvRG91YmxlKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUNvbHVt
bkluZGV4IikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xpbmRleCIpLnRvRG91
YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29saW5kZXgiX3MpLnRvRG91
YmxlKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQVJvd0luZGV4IikKLSAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dpbmRleCIpLnRvRG91YmxlKCk7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93aW5kZXgiX3MpLnRvRG91YmxlKCk7CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUNvbHVtblNwYW4iKQotICAgICAgICByZXR1cm4gYXR0
cmlidXRlcy5nZXQoImNvbHNwYW4iKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmli
dXRlcy5nZXQoImNvbHNwYW4iX3MpLnRvRG91YmxlKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUg
PT0gIkFYQVJJQVJvd1NwYW4iKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd3Nw
YW4iKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd3NwYW4i
X3MpLnRvRG91YmxlKCk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTQ0Miw4ICs0NDIsOCBAQCBk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmN1cnJlbnRTdGF0ZVZhbHVlKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gdmFsdWUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXQoImN1cnJlbnQiKTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZSghdmFsdWUuaXNOdWxsKCkgPyB2YWx1ZSA6ICJmYWxzZSIpLmxlYWtSZWYoKTsKKyAgICBhdXRv
IHZhbHVlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjdXJyZW50Il9zKTsKKyAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSghdmFsdWUuaXNOdWxsKCkgPyB2YWx1ZSA6
ICJmYWxzZSJfcykubGVha1JlZigpOwogfQogCiBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KSBjb25zdApAQCAtNTE0LDcgKzUxNCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhJbnRlcmZhY2VUYWJsZUNlbGwiKQogICAgICAgICByZXR1cm4gbV9lbGVt
ZW50LT5pbnRlcmZhY2VzKCkuY29udGFpbnMoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0
c3BpOjpJbnRlcmZhY2U6OlRhYmxlQ2VsbCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFY
QVJJQUF0b21pYyIpCi0gICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQo
ImF0b21pYyIpID09ICJ0cnVlIjsKKyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRl
cygpLmdldCgiYXRvbWljIl9zKSA9PSAidHJ1ZSI7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBA
IC01MzYsNyArNTM2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0
ZVNldHRhYmxlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKLSAgICBTdHJp
bmcgaXNSZWFkT25seSA9IGF0dHJpYnV0ZXMuZ2V0KCJyZWFkb25seSIpOworICAgIFN0cmluZyBp
c1JlYWRPbmx5ID0gYXR0cmlidXRlcy5nZXQoInJlYWRvbmx5Il9zKTsKICAgICBpZiAoIWlzUmVh
ZE9ubHkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gaXNSZWFkT25seSA9PSAidHJ1ZSIgPyBm
YWxzZSA6IHRydWU7CiAKQEAgLTU3MywxNyArNTczLDE3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAg
IG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0g
bV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJ
QVNldFNpemUiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygic2V0c2l6ZSIp
OworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygic2V0c2l6ZSJfcyk7CiAgICAg
aWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQVBvc0luU2V0IikKLSAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuY29udGFpbnMoInBvc2luc2V0Iik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVz
LmNvbnRhaW5zKCJwb3NpbnNldCJfcyk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJ
QUxpdmUiKSB7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVzLmdldCgibGl2ZSIpOwor
ICAgICAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlcy5nZXQoImxpdmUiX3MpOwogICAgICAgICBy
ZXR1cm4gIXZhbHVlLmlzRW1wdHkoKSAmJiB2YWx1ZSAhPSAib2ZmIjsKICAgICB9CiAgICAgaWYg
KGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQVJlbGV2YW50IikKLSAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuY29udGFpbnMoInJlbGV2YW50Iik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNv
bnRhaW5zKCJyZWxldmFudCJfcyk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUF0
b21pYyIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJhdG9taWMiKTsKKyAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoImF0b21pYyJfcyk7CiAgICAgaWYgKGF0
dHJpYnV0ZU5hbWUgPT0gIkFYRWxlbWVudEJ1c3kiKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApA
QCAtNTk4LDI3ICs1OTgsMjcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpCiBzdGF0aWMgU3RyaW5n
IHhtbFJvbGVWYWx1ZVN0cmluZyhjb25zdCBTdHJpbmcmIHhtbFJvbGVzKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
Pj4gcmVnaW9uUm9sZXMgPSBIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
Pih7Ci0gICAgICAgICJkb2MtYWNrbm93bGVkZ21lbnRzIiwKLSAgICAgICAgImRvYy1hZnRlcndv
cmQiLAotICAgICAgICAiZG9jLWFwcGVuZGl4IiwKLSAgICAgICAgImRvYy1iaWJsaW9ncmFwaHki
LAotICAgICAgICAiZG9jLWNoYXB0ZXIiLAotICAgICAgICAiZG9jLWNvbmNsdXNpb24iLAotICAg
ICAgICAiZG9jLWNyZWRpdHMiLAotICAgICAgICAiZG9jLWVuZG5vdGVzIiwKLSAgICAgICAgImRv
Yy1lcGlsb2d1ZSIsCi0gICAgICAgICJkb2MtZXJyYXRhIiwKLSAgICAgICAgImRvYy1mb3Jld29y
ZCIsCi0gICAgICAgICJkb2MtZ2xvc3NhcnkiLAotICAgICAgICAiZG9jLWdsb3NzcmVmIiwKLSAg
ICAgICAgImRvYy1pbmRleCIsCi0gICAgICAgICJkb2MtaW50cm9kdWN0aW9uIiwKLSAgICAgICAg
ImRvYy1wYWdlbGlzdCIsCi0gICAgICAgICJkb2MtcGFydCIsCi0gICAgICAgICJkb2MtcHJlZmFj
ZSIsCi0gICAgICAgICJkb2MtcHJvbG9ndWUiLAotICAgICAgICAiZG9jLXRvYyIsCi0gICAgICAg
ICJyZWdpb24iCisgICAgICAgICJkb2MtYWNrbm93bGVkZ21lbnRzIl9zLAorICAgICAgICAiZG9j
LWFmdGVyd29yZCJfcywKKyAgICAgICAgImRvYy1hcHBlbmRpeCJfcywKKyAgICAgICAgImRvYy1i
aWJsaW9ncmFwaHkiX3MsCisgICAgICAgICJkb2MtY2hhcHRlciJfcywKKyAgICAgICAgImRvYy1j
b25jbHVzaW9uIl9zLAorICAgICAgICAiZG9jLWNyZWRpdHMiX3MsCisgICAgICAgICJkb2MtZW5k
bm90ZXMiX3MsCisgICAgICAgICJkb2MtZXBpbG9ndWUiX3MsCisgICAgICAgICJkb2MtZXJyYXRh
Il9zLAorICAgICAgICAiZG9jLWZvcmV3b3JkIl9zLAorICAgICAgICAiZG9jLWdsb3NzYXJ5Il9z
LAorICAgICAgICAiZG9jLWdsb3NzcmVmIl9zLAorICAgICAgICAiZG9jLWluZGV4Il9zLAorICAg
ICAgICAiZG9jLWludHJvZHVjdGlvbiJfcywKKyAgICAgICAgImRvYy1wYWdlbGlzdCJfcywKKyAg
ICAgICAgImRvYy1wYXJ0Il9zLAorICAgICAgICAiZG9jLXByZWZhY2UiX3MsCisgICAgICAgICJk
b2MtcHJvbG9ndWUiX3MsCisgICAgICAgICJkb2MtdG9jIl9zLAorICAgICAgICAicmVnaW9uIl9z
CiAgICAgfSk7CiAKICAgICBpZiAocmVnaW9uUm9sZXMtPmNvbnRhaW5zKHhtbFJvbGVzKSkKQEAg
LTc2Miw3ICs3NjIsNyBAQCBzdGF0aWMgU3RyaW5nIHJvbGVWYWx1ZVRvU3RyaW5nKHVuc2lnbmVk
IHJvbGVWYWx1ZSkKICAgICBjYXNlIFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpTY3JvbGxCYXI6CiAg
ICAgICAgIHJldHVybiAiQVhTY3JvbGxCYXIiX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6
Um9sZTo6U2Nyb2xsUGFuZToKLSAgICAgICAgcmV0dXJuICJBWFNjcm9sbEFyZWEiOworICAgICAg
ICByZXR1cm4gIkFYU2Nyb2xsQXJlYSJfczsKICAgICBjYXNlIFdlYkNvcmU6OkF0c3BpOjpSb2xl
OjpTZWN0aW9uOgogICAgICAgICByZXR1cm4gIkFYU2VjdGlvbiJfczsKICAgICBjYXNlIFdlYkNv
cmU6OkF0c3BpOjpSb2xlOjpTZXBhcmF0b3I6CkBAIC04MTcsNyArODE3LDcgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQogewogICAgIG1f
ZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byByb2xlVmFsdWUgPSBtX2Vs
ZW1lbnQtPnJvbGUoKTsKLSAgICBhdXRvIHJvbGVWYWx1ZVN0cmluZyA9IHJvbGVWYWx1ZSA9PSBX
ZWJDb3JlOjpBdHNwaTo6Um9sZTo6TGFuZG1hcmsgPyB4bWxSb2xlVmFsdWVTdHJpbmcobV9lbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJ4bWwtcm9sZXMiKSkgOiByb2xlVmFsdWVUb1N0cmluZyhy
b2xlVmFsdWUpOworICAgIGF1dG8gcm9sZVZhbHVlU3RyaW5nID0gcm9sZVZhbHVlID09IFdlYkNv
cmU6OkF0c3BpOjpSb2xlOjpMYW5kbWFyayA/IHhtbFJvbGVWYWx1ZVN0cmluZyhtX2VsZW1lbnQt
PmF0dHJpYnV0ZXMoKS5nZXQoInhtbC1yb2xlcyJfcykpIDogcm9sZVZhbHVlVG9TdHJpbmcocm9s
ZVZhbHVlKTsKICAgICBpZiAocm9sZVZhbHVlU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKQEAgLTgzMiwx
NCArODMyLDE0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2lu
Z1N0b3JlKCk7Ci0gICAgYXV0byByb2xlRGVzY3JpcHRpb24gPSBtX2VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXQoInJvbGVkZXNjcmlwdGlvbiIpOworICAgIGF1dG8gcm9sZURlc2NyaXB0aW9uID0g
bV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJyb2xlZGVzY3JpcHRpb24iX3MpOwogICAgIHJl
dHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1ha2VTdHJpbmcoIkFYUm9sZURlc2NyaXB0
aW9uOiAiLCByb2xlRGVzY3JpcHRpb24pKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcoKQog
ewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byBjb21wdXRl
ZFJvbGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImNvbXB1dGVkLXJvbGUiKTsKKyAg
ICBhdXRvIGNvbXB1dGVkUm9sZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY29tcHV0
ZWQtcm9sZSJfcyk7CiAgICAgaWYgKGNvbXB1dGVkUm9sZS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCkBAIC05NzIs
NyArOTcyLDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29u
c3QKIAogICAgIC8vIENvbnNpZGVyIGhlYWRpbmdzIGFzIGFuIHNwZWNpYWwgY2FzZSB3aGVuIHJl
dHVybmluZyB0aGUgaW50IHZhbHVlLgogICAgIGlmIChtX2VsZW1lbnQtPnJvbGUoKSA9PSBXZWJD
b3JlOjpBdHNwaTo6Um9sZTo6SGVhZGluZykKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0
cmlidXRlcygpLmdldCgibGV2ZWwiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCJfcykudG9Eb3VibGUoKTsKIAogICAgIHJldHVy
biAwOwogfQpAQCAtOTk5LDcgKzk5OSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkKIHsKICAgICBtX2VsZW1lbnQt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+
YXR0cmlidXRlcygpOwotICAgIGF1dG8gdmFsdWUgPSBtYWtlU3RyaW5nKCJBWFZhbHVlRGVzY3Jp
cHRpb246ICIsIGF0dHJpYnV0ZXMuZ2V0KCJ2YWx1ZXRleHQiKSk7CisgICAgYXV0byB2YWx1ZSA9
IG1ha2VTdHJpbmcoIkFYVmFsdWVEZXNjcmlwdGlvbjogIiwgYXR0cmlidXRlcy5nZXQoInZhbHVl
dGV4dCJfcykpOwogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHZhbHVlKS5s
ZWFrUmVmKCk7CiB9CiAKQEAgLTEwNzYsNyArMTA3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGxldmVsID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCku
Z2V0KCJsZXZlbCIpOworICAgIGF1dG8gbGV2ZWwgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5n
ZXQoImxldmVsIl9zKTsKICAgICBpZiAobGV2ZWwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4g
MDsKIApAQCAtMTA5MSwxMyArMTA5MSwxMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2lu
Z1N0b3JlKCk7Ci0gICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZ3JhYmJl
ZCIpID09ICJ0cnVlIjsKKyAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJn
cmFiYmVkIl9zKSA9PSAidHJ1ZSI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25zdAogewogICAgIG1fZWxl
bWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byBkcm9wRWZmZWN0cyA9IG1fZWxl
bWVudC0+YXR0cmlidXRlcygpLmdldCgiZHJvcGVmZmVjdCIpOworICAgIGF1dG8gZHJvcEVmZmVj
dHMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImRyb3BlZmZlY3QiX3MpOwogICAgIGlm
IChkcm9wRWZmZWN0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKGRyb3BFZmZlY3RzKS5sZWFrUmVmKCk7CkBAIC0xNDI5LDcgKzE0MjksNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNv
ZGluZygpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxw
dHIsIDApOwogCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRl
KCJFbmNvZGluZyIpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiRW5jb2RpbmciX3MpKS5sZWFrUmVm
KCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudFVSSSgpCkBAIC0xNDM4LDcgKzE0MzgsNyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQogICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIAogICAgIG1fZWxl
bWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiVVJJIikpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50
QXR0cmlidXRlKCJVUkkiX3MpKS5sZWFrUmVmKCk7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L21haW4uY3BwCmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RT
dW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4
X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmlu
ZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxl
Q29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAg
ICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBV
UkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0
aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>
<flag name="commit-queue"
          id="484845"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456524</attachid>
            <date>2022-04-03 17:55:06 -0700</date>
            <delta_ts>2022-04-03 20:09:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>358714</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5iNzcxY2FkZTU0YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50
c0NhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXMKIAogICAg
IGF1dG8qIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSk7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfZmlsZV9nZXRfcGF0aChmaWxlKSk7Ci0gICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUocGF0aC5nZXQoKSkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFN0cmluZzo6ZnJv
bVVURjgocGF0aC5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZURpYWxvZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhMjYzMDg4NTcz
Y2YuLmI2NjQzNzEzZjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94
eSwKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3Nh
Z2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsK
IAogICAgIC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9h
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1v
dGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3Yjgw
NDc3YmRjLi5hMWM2OGU0MjBlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVBy
b3h5V2luLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIExSRVNVTFQgUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eTo6b25DbG9zZSgpCiAKIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewotICAgIFJlZlB0
cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0
cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3Rv
clVJUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9X
ZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAppbmRleCBmNDAwZDVlNzM3MTkuLjFhMTkxNTU1Zjll
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxP
UEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5z
cGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHBy
ZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1
bmNoZXIuY3BwCmluZGV4IDlkM2Y5OGEzNDk0MC4uZTJmOTcxMzI1NTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3Mgewog
CiBzdGF0aWMgdm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3Ms
IGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikK
IHsKLSAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgp
OworICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5n
Ojpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAg
Q1N0cmluZyBycGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0
b3IoVmVjdG9yPENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRh
KCkgfSkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdy
YXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAg
ICAgICAgYWRkRXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5k
Ym94QXJncyk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2Nr
ZXQiLCAid2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlz
RGlyZWN0b3J5Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
Il9zIH07CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAg
ICAgICAgICAgIFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5
ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAg
ICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFw
cGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCAwZDFmNDAwZTQ0NDEuLmNmZTdhMGViM2JlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlz
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50Rmls
ZURlc2NyaXB0b3IgPSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25f
bGlicmFyeV9uYW1lKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFy
eU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3Bl
X2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAg
IH0KICNlbmRpZgogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAg
ICAgICAgIHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvLjEiKTsKICAg
ICAgICAgaWYgKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVu
dHMoKSkgewogICAgICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3Ig
PSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmcgeyB3cGVfbG9h
ZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkgfSk7CiAgICAgICAg
IH0KICNlbGlmIFVTRShFR0wpCiAgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5TmFtZSA9IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNwbGF5TmFtZSgp
OwpAQCAtMTE2LDggKzExNiw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAKICAgICBHQXBw
bGljYXRpb24qIGFwcCA9IGdfYXBwbGljYXRpb25fZ2V0X2RlZmF1bHQoKTsKICAgICBpZiAoYXBw
KQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQgPSBnX2FwcGxpY2F0aW9uX2dldF9h
cHBsaWNhdGlvbl9pZChhcHApOwotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gZ19n
ZXRfYXBwbGljYXRpb25fbmFtZSgpOworICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQg
PSBTdHJpbmcgeyBnX2FwcGxpY2F0aW9uX2dldF9hcHBsaWNhdGlvbl9pZChhcHApIH07CisgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbk5hbWUgPSBTdHJpbmcgeyBnX2dldF9hcHBsaWNhdGlvbl9u
YW1lKCkgfTsKIAogICAgIHBhcmFtZXRlcnMuaW5zcGVjdG9yU2VydmVyQWRkcmVzcyA9IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjppbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3Bw
CmluZGV4IDYzMzg4NGRhZGNiMS4uODY0ZDBlMzZmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQo
KSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVu
YWJsZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29s
LT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5
Li42MjY5Y2M0ZDI4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3Rr
Il9zCiAjZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisj
ZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiX3MKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRl
eCBlOGI5YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJv
YXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGlj
YXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OlNtYXJ0UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAg
ICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3Rh
dGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwg
Q2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRh
cmdldFR5cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1Rh
cmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0Lmdl
dCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2Fy
ZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAg
ICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAg
ICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmlu
ZGV4IDA3YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAg
ICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMo
KTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9y
X2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdl
dCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJh
Y3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKaW5kZXggMTU5OTcxYWNjNmYwLi5jYmYxYTI5ZmRhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cApAQCAtMTk4LDIzICsxOTgsMjMgQEAgS2V5QmluZGluZ1RyYW5zbGF0b3I6On5LZXlCaW5kaW5n
VHJhbnNsYXRvcigpCiBzdHJ1Y3QgS2V5Q29tYmluYXRpb25FbnRyeSB7CiAgICAgdW5zaWduZWQg
Z2RrS2V5Q29kZTsKICAgICB1bnNpZ25lZCBzdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogfTsKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9u
RW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9IHsKLSAgICB7IEdES19LRVlfYiwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgIH0sCi0g
ICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlSXRhbGljIiAgICB9LAotICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdE
S19LRVlfZ3JlYXRlciwgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDYW5j
ZWwiICAgICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICB9LAotICAgIHsgR0RLX0tFWV9U
YWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0
YWIiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVy
LCAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9
LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAg
eyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
SW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9N
QVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19L
RVlfViwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJQYXN0ZUFz
UGxhaW5UZXh0IiB9LAorICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiX3MgICAgICB9LAorICAgIHsgR0RLX0tFWV9p
LCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2dsZUl0YWxp
YyJfcyAgICB9LAorICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9ncmVh
dGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAg
ICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiJfcyAgICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiX3Mg
ICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9
LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAg
IHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywg
IlBhc3RlQXNQbGFpblRleHQiX3MgfSwKIH07CiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBoYW5k
bGVLZXlCaW5kaW5nc0Zvck1hcChjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5KiBtYXAsIHVuc2ln
bmVkIG1hcFNpemUsIHVuc2lnbmVkIGtleXZhbCwgR2RrTW9kaWZpZXJUeXBlIHN0YXRlKQpAQCAt
MjY3LDcxICsyNjcsNzEgQEAgVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNv
bW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogI2VuZGlmCiAKIHN0YXRpYyBj
b25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IHByZWRlZmluZWRLZXlCaW5kaW5nc1tdID0gewotICAg
IHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0
LCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVCYWNrd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1Bf
TGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJh
Y2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sg
fCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElG
VF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIiB9LAotICAgIHsgR0RL
X0tFWV9SaWdodCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAg
ICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9SaWdodCwg
ICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIg
fSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NI
SUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBH
REtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAi
TW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9VcCwg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgfSwK
LSAgICB7IEdES19LRVlfS1BfVXAsICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlVXAiIH0sCi0gICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAot
ICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAg
ICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRG93biwg
ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgfSwK
LSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93biIgfSwKLSAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlf
SG9tZSwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9C
ZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAotICAg
IHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfSG9tZSwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZ
X0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
IiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtf
U0hJRlRfTUFTSywgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0VuZCwgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiB9
LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfRW5kLCAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0VuZCwg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZE
b2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNL
LCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tF
WV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVU
b0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0Vu
ZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9QYWdlX0Rvd24sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlRG93biIgfSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2Vf
RG93biwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKLSAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9EZWxl
dGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0RlbGV0ZSwgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0
ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndh
cmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFj
ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9hLCAgICAg
ICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwK
LSAgICB7IEdES19LRVlfYSwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZU
X01BU0ssICJVbnNlbGVjdCIgfSwKLSAgICB7IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJTZWxlY3RBbGwiIH0sCi0gICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiIH0sCi0gICAgeyBHREtfS0VZX3gsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX3Ys
ICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9M
X01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX0tQX0luc2Vy
dCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0KKyAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlTGVmdCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0sCisgICAgeyBHREtfS0VZX0xl
ZnQsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9MZWZ0LCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1v
dmVXb3JkQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIl9z
IH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAg
eyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1Bf
UmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdE
S19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAg
ICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAg
IEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05U
Uk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9VcCwgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwgICAg
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAg
IHsgR0RLX0tFWV9VcCwgICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwg
ICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlm
eVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0Rvd24sICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
X3MgfSwKKyAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAg
ICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9Eb3duLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIl9zIH0sCisgICAgeyBHREtf
S0VZX0hvbWUsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92
ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0hvbWUsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hv
bWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQi
X3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RL
X1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdE
S19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlv
biJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9F
bmQsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9m
TGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAg
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9
LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsg
R0RLX0tFWV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
Ik1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50Il9z
IH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRf
TUFTSywgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7
IEdES19LRVlfUGFnZV9VcCwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1BhZ2VfVXAsICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCJfcyB9LAorICAgIHsgR0RLX0tF
WV9QYWdlX1VwLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX1BhZ2VfRG93biwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtf
S0VZX0RlbGV0ZSwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVs
ZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiX3MgfSwKKyAgICB7IEdES19L
RVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19DT05U
Uk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAg
eyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRGVsZXRlQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCJfcyB9LAorICAg
IHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCJfcyB9LAorICAg
IHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFT
SywgIlVuc2VsZWN0Il9zIH0sCisgICAgeyBHREtfS0VZX3NsYXNoLCAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiX3MgfSwKKyAgICB7IEdES19LRVlfeCwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfYywgICAgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX3YsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX0tQX0luc2VydCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfQogfTsKIAogVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1h
bmRzRm9yS2V5dmFsKHVuc2lnbmVkIGtleXZhbCwgdW5zaWduZWQgbW9kaWZpZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXgg
YTg2YjM0ZGRhYThmLi5lMzE4ODlmMzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
U3RyaW5nIGJhY2tlbmRDb21tYW5kc1BhdGgoKQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24odXJsUmVmLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxVSW50
OCo+KHBhdGgpLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
cGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKIH0KIAogc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZTVhOGMzYjY5ZTE3Li45
ZDdlNzFjMjI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3BhZ2Ut
PmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3Ii
KTsKKyAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJl
IG1hdGNoZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1Li40NGNiZjczYzZhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTczMywxMCArNzMzLDEw
IEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBTdHJpbmcoIkdldFNuYXBzaG90IikpIHsKLSAgICAgICAgU25hcHNo
b3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4o
c3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RPcHRpb25zIikp
LT52YWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PEFQ
STo6VUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSktPnZhbHVlKCk7Ci0gICAgICAg
IFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9uPihzdGF0
aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+dmFs
dWUoKSk7Ci0gICAgICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8
QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRyYW5zcGFyZW50QmFja2dyb3VuZCIpKS0+dmFs
dWUoKTsKKyAgICAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19j
YXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RPcHRpb25zIl9zKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJ
RCJfcykpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNf
Y2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RSZWdpb24iX3MpKS0+dmFsdWUoKSk7CisgICAgICAgIGJvb2wgdHJhbnNwYXJl
bnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRy
YW5zcGFyZW50QmFja2dyb3VuZCJfcykpLT52YWx1ZSgpOwogCiAgICAgICAgIFJlZlB0cjxXZWJJ
bWFnZT4gc25hcHNob3RJbWFnZTsKICAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnBy
aXYtPndlYlBhZ2U7CkBAIC03NjUsMTAgKzc2NSwxMCBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRS
ZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YQogICAgICAgICB9CiAKICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VS
ZXBseTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSIsIHdlYlBhZ2UpOwotICAgICAg
ICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lEIiwgQVBJOjpVSW50NjQ6OmNyZWF0ZShjYWxs
YmFja0lEKSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJ
bWFnZSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkt
PnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CisgICAgICAgIG1lc3NhZ2VSZXBs
eS5zZXQoIlBhZ2UiX3MsIHdlYlBhZ2UpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxs
YmFja0lEIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVz
c2FnZVJlcGx5LnNldCgiU25hcHNob3QiX3MsIHNuYXBzaG90SW1hZ2UpOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2ViUGFn
ZS5EaWRHZXRTbmFwc2hvdCJfcywgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNz
YWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50R3RrLmNwcAppbmRleCBmZTBkNDAxOGUzZjguLmE5Y2RhYzljMDkxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURvY3VtZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCkBAIC0xOTA5LDkg
KzE5MDksOSBAQCBnY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfdmlzaWJpbGl0eV9zdGF0
ZShXZWJLaXRET01Eb2N1bWVudCogc2VsZikKICAgICBXZWJDb3JlOjpEb2N1bWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBzd2l0Y2ggKGl0ZW0tPnZpc2liaWxpdHlTdGF0ZSgp
KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpWaXNpYmlsaXR5U3RhdGU6OkhpZGRlbjoKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoImhpZGRlbiIpOworICAgICAgICByZXR1cm4gY29u
dmVydFRvVVRGOFN0cmluZygiaGlkZGVuIl9zKTsKICAgICBjYXNlIFdlYkNvcmU6OlZpc2liaWxp
dHlTdGF0ZTo6VmlzaWJsZToKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoInZp
c2libGUiKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoInZpc2libGUiX3Mp
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUv
V2ViRWRpdG9yQ2xpZW50V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcAppbmRleCA0NTJjZjBjYzhjN2EuLjMz
ODRmYTI1OGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcApAQCAtMTY4
LDcgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudChjb25zdCBL
ZXlib2FyZEV2ZW50JiBldmVudCkKIAogc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJhbWUm
IGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBwbGF0Zm9ybUV2ZW50KQogewotICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtl
eUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgeyBpbnRlcnByZXRLZXlFdmVu
dChldmVudCkgfTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKQEAgLTE5MCw3
ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJv
YXJkRXZlbnQmIGV2ZW50LCBjb25zdCBQbGF0Zm9ybUtleQogCiBzdGF0aWMgdm9pZCBoYW5kbGVL
ZXlEb3duKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYpCiB7Ci0gICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5
RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGludGVycHJldEtleUV2ZW50
KGV2ZW50KSB9OwogICAgIGlmIChjb21tYW5kTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1Miw3IEBAIHZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2
YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRo
YXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFp
bHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAg
ICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAg
ICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9z
LAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3Ms
ICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAg
ICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9z
LAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFj
ZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVu
dDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAi
VSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5v
dygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1F
dmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisg
ICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdh
bGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGlu
Z0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAi
aSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAg
ICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAw
NTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAg
ICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7
CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQo
Y29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRv
Y3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFt
ZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1
cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7
CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYmI1MTJhZWMzNDUwLi43NjQ0
M2E5NDI1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
bi9XZWJQYWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vV2ViUGFnZVdpbi5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRs
ZUVkaXRpbmdLZXlib2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAg
IGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50
eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJl
dEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAo
a2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAg
IC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8g
ZGVjaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5t
bQppbmRleCBlMDEwNDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0
IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigp
CiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9S
TShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0
IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBz
b3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciBy
ZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7
CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2Vi
S2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0
VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJp
bmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2
MmJmYzE0MDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYs
NyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50
ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAg
ICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1l
bnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxw
dHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVy
eUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkg
PyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1l
ZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEw
N2RhNjViNy4uMDk4ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3
IEBAIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0
cmluZ1ZpZXcsIGludCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xp
ZW50OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmKQogewotICAgIHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAog
aW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdW
aWV3LCBWZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2Nh
dGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEz
Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFT
b3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VE
YXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3Nl
dE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRv
UHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2Rpbmcg
VVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJp
ZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcg
KzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmlu
ZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5z
ZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3Bs
YXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+
cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2pp
Iik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1p
bHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0
dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIs
MTMgQEAgQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IG9iaiwgSFdORCB3aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmpl
Y3QtPnNldFdyYXBwZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJBY2Nlc3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJh
c2UoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNz
aWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0
ZUluc3RhbmNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5k
ZXggOWExZjAxMTIyMWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBA
QAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFy
eVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0
cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0
ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRE
b3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3du
bG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNw
cApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERv
d25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxv
YWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBt
X2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBl
OGU1ZjVjNGNjMTEuLjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRl
ZiBlbnVtIFdlYkV4dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpE
ZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xp
Y3lEZWxlZ2F0ZTo6fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQt
LTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9z
KTsKIH0KIAogRGVmYXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNo
YXJlZEluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9y
eVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmlu
ZGV4IDM2MGFlZGNlYWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9y
eVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdU
Rk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1v
cnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJl
YW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9
CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5
QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJh
Zy5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9u
UHJvcGVydHlCYWcoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwg
bV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJv
cGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9
CiAKIFdlYkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5z
dGFuY2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVt
ZW50PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEw
MmU1MjY4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0
aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9u
Q2FjaGUuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBw
bGljYXRpb25DYWNoZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBX
ZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2Fj
aGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUi
X3MpOwogfQogCiBXZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVh
dGVJbnN0YW5jZSgpCkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25D
YWNoZVBhdGgoKQogCiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGlj
YXRpb25DYWNoZTo6c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlv
bkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5s
ZWFrUmVmKCk7CiAKICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXJjaGl2ZS5jcHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJj
aGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkK
ICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9z
KTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNo
aXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoq
IHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
V2ViQmFja0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJk
TGlzdD4mJiBiYWNrRm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNl
dChtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNr
Rm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJC
YWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlz
dFdyYXBwZXJzKCkucmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExp
c3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJf
cyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFm
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5X
ZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNo
ZSJfcyk7CiB9CiAKIFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1
MmIzNy4uZjEzMTZkZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQog
CiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3Mi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsK
IH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5j
ZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNj
cmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJh
dG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywg
aW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RU
eXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5
cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5
cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsK
IAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0
eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNv
cHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQg
V2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRy
X29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVu
ZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0
ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBl
bmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1
cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50
LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJl
c3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVD
b3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBA
IC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0
aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1l
bW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNz
KCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2
ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3Rh
dGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29t
bWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxv
Y1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxs
b2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFs
bG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlw
dEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6
ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVz
KSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRz
LmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBm
aWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7
CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykp
OworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAg
IGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxk
cy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcg
bG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5
QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+
OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEu
LmI5ZjQxMDkzNTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAg
Ym9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50
KiBlLCBLZXlib2FyZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAg
ICAgICAgIElET01IVE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAg
ICBpZiAoU1VDQ0VFREVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElu
cHV0RWxlbWVudCwgKHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAg
ICBTdHJpbmcgY29tbWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAg
ICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVu
dChrZSkgfTsKICAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJl
IGJlY2F1c2UgdGhlIGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxs
ZWQgZm9yIGFsbCBrZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0
byByZXZpc2l0IHRoaXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNl
IHRvIHNlbmQgYW4gZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUt
PmRvUGxhdGZvcm1Db21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0
KGUtPmRvY3VtZW50KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJEYXRhU291cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcg
QEAgV2ViRGF0YVNvdXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVy
KQogewogICAgIFdlYkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRh
dGFTb3VyY2UoKQpAQCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJj
ZSgpCiAgICAgICAgIG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNv
dXJjZUNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVh
dGVJbnN0YW5jZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3
NjU0MTI1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRh
YmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0
YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJE
YXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDkyZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRv
Y3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExv
YWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3Mp
OwogfQogCiBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0
YSkKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50
TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2Rh
dGFTb3VyY2UpIHsKICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAg
ICAgIG1fZGF0YVNvdXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWQuY3BwCmluZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6
On5XZWJEb3dubG9hZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxv
YWQoKQogICAgIExPRyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9h
ZCAoJXApIiwgdGhpcyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3du
bG9hZDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZENGTmV0LmNwcAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYs
NyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShf
SW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3
ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVz
b3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVz
ZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9y
IGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxl
ZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVy
cm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7
CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5
MGI4OWZhLi41YjFjNWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRyb3BTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BT
b3VyY2UuY3BwCkBAIC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJj
ZShXZWJWaWV3KiB3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJE
cm9wU291cmNlOjp+V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2Vi
RHJvcFNvdXJjZTo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxl
bWVudFByb3BlcnR5QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3Bw
CkBAIC00NiwxMyArNDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJv
cGVydHlCYWcoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFr
ZVVuaXF1ZTxIaXRUZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdl
YkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9w
ZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3Bl
cnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBA
IFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5
QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJF
cnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQog
CiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1l
KCkKIHsKICAgICBXZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJGcmFtZSJfcyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1
MSw3IEBAIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1l
Q291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9z
KTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyAr
NTYzLDcgQEAgdm9pZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRT
aGFyZWRCdWZmZXI+JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVT
dHJpbmcobWltZVR5cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5
cGUpCi0gICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVU
eXBlU3RyaW5nID0gInRleHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0
ZXh0RW5jb2RpbmdOYW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0x
MDU2LDcgKzEwNTYsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3Jl
RnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAo
IWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJi
NGU2YTQyLi45NDQ2OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJh
bWUpCiAgICAgOiBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0K
IAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyLmNwcAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVy
OjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAg
ICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0
ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJf
cyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5m
ZjFmZDkwYzQzNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xv
Y2F0aW9uUG9zaXRpb24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0
aW9uUG9zaXRpb24+IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdl
Ykdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0
aW9uIl9zKTsKIH0KIAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9z
aXRpb24oKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2Nh
dGlvblBvc2l0aW9uOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0
cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
VE1MUmVwcmVzZW50YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5j
cHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVz
ZW50YXRpb24oKQogewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRh
dGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9u
Il9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9u
KCkKQEAgLTU0LDcgKzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJl
c2VudGF0aW9uKCkKIAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNl
bnRhdGlvbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIl9zKTsKIH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50
YXRpb246OmNyZWF0ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRp
YyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0
ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAg
LTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2Vi
SGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUz
OWU3YjU2Li44ZGQ5YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0
b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJ
dGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdy
YXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3Rv
cnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRl
bTo6fldlYkhpc3RvcnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1f
aGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0
b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3Bl
Y3Rvci5jcHAKaW5kZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3Bl
Y3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3Rv
ckNsaWVudCogaW5zcGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0
ZWRXZWJWaWV3KTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3Bl
Y3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAog
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9y
LmNwcAppbmRleCBjOGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0
MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6
OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2
YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29s
bGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENv
bGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAt
NjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENM
U0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwog
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENs
YXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0
b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
S2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRD
bGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4
Li5lNjljMGM4MDg5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dE1lc3NhZ2VMb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktp
dE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYktpdE1lc3NhZ2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRN
ZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJL
aXRNZXNzYWdlTG9vcDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJLaXRTdGF0aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2
LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpX
ZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRT
dGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0
YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVl
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0
LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVS
TFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFi
bGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJM
UmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVx
dWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVx
dWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0
IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11
dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRh
YmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFk
MTYuLjZhOTMzYWJiNWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
TmF2aWdhdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmln
YXRpb25EYXRhLmNwcApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJO
YXZpZ2F0aW9uRGF0YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdl
CiAKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
TmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRp
b25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
Yk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZp
Z2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0
YTo6Y3JlYXRlSW5zdGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUs
IElXZWJVUkxSZXF1ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29s
IGhhc1N1YnN0aXR1dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3
MjYzNTNmLi45NDkyNTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlm
aWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwog
ICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6
fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldl
Yk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRp
b24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7
CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShC
U1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcq
IHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3Rp
ZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAK
QEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlv
bkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0
ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJO
b3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJO
b3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlm
aWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJh
MjFjLi5mYjE3M2RkNWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKQEAgLTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJl
bmNlczo6c2hhcmVkU3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJl
ZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJl
ZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsK
ICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJl
ZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2Vz
Il9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0
NWM4Li4zYmJhMzFlMzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5j
cHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSog
ZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2Zy
YW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJj
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQog
CiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRP
YmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcApp
bmRleCBiOGZlMzA3Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9i
amVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJT
Y3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMw
ZjAuLjdlZjhhNDUzNDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0V29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdv
cmxkLmNwcApAQCAtNDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlw
dFdvcmxkKFJlZlB0cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCku
YWRkKG1fd29ybGQuZ2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2Ny
aXB0V29ybGQoKQpAQCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdv
cmxkKCkKICAgICBhbGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0K
IAogV2ViU2NyaXB0V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5
MjNmNmIuLmVlZjE2NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
Y3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpX
ZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBt
X3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0
eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVu
a25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAK
QEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6
ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdl
YlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0Ns
YXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFs
dWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRK
U1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4
dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMg
QEAgV2ViVGV4dFJlbmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdl
YlRleHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVy
ZXI6On5XZWJUZXh0UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJl
bmRlcmVyOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdi
NjZmYTdhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25z
dCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQ
dHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6
On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6
Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRp
YWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5k
ZXggZTc1OTQ2YjI4NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTENyZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVu
dGlhbDo6V2ViVVJMQ3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAg
IDogbV9jcmVkZW50aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFs
Ojp+V2ViVVJMQ3JlZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFs
KiBXZWJVUkxDcmVkZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQu
LjMxYjA5YWM0Y2I0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
UHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNw
YWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlv
blNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSog
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIx
NSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZv
clN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9u
c2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9u
c2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9u
c2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsK
IH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7
CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAg
ICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJl
c3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNw
b25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7Cisg
ICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRw
Oi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7
CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYz
MzU4NmIxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogaW5saW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVS
TFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291
bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0
dGVybiJfcyk7CiB9CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJD
b250ZW50VVJMUGF0dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAppbmRleCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkK
IAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJW
aWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdl
YlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6
Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4
ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBm
cmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAg
ICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVj
dXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0
QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVy
biBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAg
ICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQo
IlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29t
bWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBA
IC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2
ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnRO
YW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXBy
ZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1
dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtl
eUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9y
bUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5v
dWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1
c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwK
QEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5r
bm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJ
TDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3Mp
LmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAg
SFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3Vz
Q29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBT
X09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9J
bl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3Bh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1h
bmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIs
NyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNo
YWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxs
aW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4g
U19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVf
KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2Vk
T3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAg
bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5j
b21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAw
NDUxOGZhZDFhNzYuLjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2
YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZh
dGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6
On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNj
ZDc0OSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVl
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBA
IC0xMTA0LDcgKzExMDQsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0
KCkKIAogc3RhdGljIFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVy
bCkKIHsKLSAgICBTdHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50
UGF0aChwYXRoT3JVcmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lz
dGVtOjpwYXJlbnRQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hh
cl90IGZ1bGxQYXRoW19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBw
YXRoVG9Gb250RmFsbGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBA
IC0xMTE1LDcgKzExMTUsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3Qg
Y2hhciogcGF0aE9yVXJsKQogCiAgICAgU3RyaW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAK
LSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAg
ICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAg
ICAgLy8gRmluZCB0aGUgbGF5b3V0IHRlc3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAg
IHNpemVfdCBsb2NhdGlvbiA9IHBhdGhUb0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXgg
NTJjMGJjZDQxOTY5Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVT
VChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUs
IGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVs
dENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgx
dSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAg
ICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9F
USgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VS
VF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAg
ICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9F
USgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VS
VF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikp
OworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0w
Il9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3Vu
dCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJU
X0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBA
IFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBi
ZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJk
YXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEo
OXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7
Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0x
LTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZh
dWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5j
b3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAK
ICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JD
YWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UFBhcnNlcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJz
ZXJzLmNwcAppbmRleCBmZmJhMDBiODAyMWEuLmU4MDcwNzRmNGNjNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiAr
NTksMzIgQEAgVEVTVChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5
SGVhZGVyKQogI2lmIFVTRShHTElCKQogVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdl
bnRWYWx1ZXMpCiB7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpLzEwLjAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8x
NjMiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZh
cmkvMTAuMCBXZWJLaXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVk
IGNvbW1lbnQpKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNW
YWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3Rl
ZCBwYWlyKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkg
KG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBF
WFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAg
IEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJf
cykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSBXZWJLaXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4w
IFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2UgR2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21t
ZW50KSkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSAoKSAoPC0gRW1wdHkgY29tbWVudCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVk
IHBhaXIpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCIhIyQlJicqKy0uXl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3Mp
KTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3
ODkgKG51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7
CiAKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwot
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxl
YWRpbmcgd2hpdGVzcGFjZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3
bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpICh0cmFpbGluZyBuZXdsaW5lKVxuIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xh
c2gpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaSAodW50ZXJtaW5hdGVkIGNvbW1lbnQiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMg
Y29udHJvbCBjaGFyYWN0ZXIpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90
ZWQgcGFpciBpbiB0b2tlbikiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBwcm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZB
TFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNw
YWNlKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSAodHJhaWxpbmcgd2hpdGVzcGFjZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3Mp
KTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkg
KHRyYWlsaW5nIG5ld2xpbmUpXG4iX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJf
cykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFy
aSAodW50ZXJtaW5hdGVkIGNvbW1lbnQiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5z
IGNvbnRyb2wgY2hhcmFjdGVyKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQg
KHF1b3RlZCBwYWlyIGluIHRva2VuKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U2hhcmVkQnVmZmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFy
ZWRCdWZmZXIuY3BwCmluZGV4IGIwMTEyOGIyNmIxYy4uMDdhNDVlMGVmNDE0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAt
MzY0LDcgKzM2NCw3IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUlz
Q29udGlndW91cykKIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIg
c2l6ZV90IGFycmF5c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRp
YyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVu
dGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4i
LCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVu
a3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iX3MsIGJvb2wgaW5jbHVkZVNl
cGFyYXRvciA9IGZhbHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVh
ZGVyKCZidWZmZXIsIHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsg
PSBjaHVua1JlYWRlci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5j
bHVkZVNlcGFyYXRvcik7CkBAIC00NzcsMzIgKzQ3NywzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVy
Q2h1bmtSZWFkZXJUZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgYXV0byBj
aGVjayA9IFtdKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAg
ICBzdGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
ZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUg
bW9zdCByIiwgImQiLCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwotICAgICAg
ICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKKyAgICAgICAgcmVh
ZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIl9zKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAg
ICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MxV2l0aFNlcGFyYXRvcltdID0geyAiVGhpIiwgInMgaSIsICJzIHRoZSBtb3N0IHJpIiwgImRp
IiwgImN1bG91cyBoaSIsICJzdG9yeSB0aGVyZSBpIiwgInMuIiB9OwotICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFs
bENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIl9zLCB0cnVlKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBj
aHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3My
V2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAiICIsICIgdGhlIG1vc3QgcmlkaWN1bG91cyBo
IiwgInRvcnkgdGhlcmUgIiwgIi4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywg
c2hhcmVkQnVmZmVyLCAiaXMiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFy
ZWRCdWZmZXIsICJpcyJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5r
cywgZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1
bmtzMldpdGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAg
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3JbXSA9IHsg
IlRoaXMiLCAiIGlzIiwgIiB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpcyIsICJ0b3J5IHRoZXJlIGlz
IiwgIi4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAi
aXMiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpcyJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywg
ZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMldp
dGhTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoaXMg
aXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoIiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAgIHJl
YWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Iik7CisgICAgICAgIHJlYWRB
bGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9y
LCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MzV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAg
ICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MzV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3Qi
LCAib3J5IHRoZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFy
ZWRCdWZmZXIsICJpc3QiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBz
aGFyZWRCdWZmZXIsICJpc3QiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0No
dW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBl
Y3RlZENodW5rczNXaXRoU2VwYXJhdG9yKSkpOwogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkp
OwpAQCAtNTU3LDEyICs1NTcsMTIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVz
dCwgY2hhbmdpbmdJdGVyYXRvcikKICAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBj
b25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIiIg
fTsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIik7CisgICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9nIl9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
Y2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5
c2l6ZShleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtz
LmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNl
cGFyYXRvcltdID0geyAiZG9nIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNo
YXJlZEJ1ZmZlciwgImRvZyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3Ms
IHNoYXJlZEJ1ZmZlciwgImRvZyJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNr
Q2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhw
ZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yKSkpOwogICAgIH0KIApAQCAtNTcyLDEyICs1NzIsMTIg
QEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikK
ICAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVU
ZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBl
Y3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzICIsICIi
LCAiIiwgIiIsICIiIH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwotICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIpOworICAgICAg
ICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcyk7CiAgICAgICAg
IEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2Vw
YXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAg
ICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3Rl
ZENodW5rc1dpdGhTZXBhcmF0b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzIGNhdCIsICJjYXQi
LCAiY2F0IiwgImNhdCIsICJjYXQiIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywg
c2hhcmVkQnVmZmVyLCAiY2F0IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5r
cywgc2hhcmVkQnVmZmVyLCAiY2F0Il9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hl
Y2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShl
eHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IpKSk7CiAgICAgfQogICAgIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5k
ZXggNWY5MjUzMjc5MWE0Li4yZGQ3ZTRhZTdhMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0zNCw3ICszNCw3
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFn
ZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBT
dHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsK
KyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoIFN0cmlu
ZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21l
IikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC00
NSw3ICs0NSw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJy
b3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2Vu
dEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAgIFN0
cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVybCkpOwor
ICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChTdHJpbmcg
eyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUi
KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC01
Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVmb3hC
cm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdl
bnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJp
bmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAg
ICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsg
dXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2gi
KSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwpAQCAt
NzIsMTQgKzcyLDE0IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1Bs
YXRmb3JtUXVpcmsoY29uc3QgY2hhciogdXJsKQogLy8gdGhhdCB0aGUgc3RhbmRhcmQgdXNlciBh
Z2VudCBzaG91bGQgYmUgdXNlZC4pCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxI
YXNFbXB0eVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBz
dGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJp
bmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKICAgICBF
WFBFQ1RfRkFMU0UodWFTdHJpbmcuaXNOdWxsKCkpOwogfQogCiBURVNUKFVzZXJBZ2VudFRlc3Qs
IFF1aXJrcykKIHsKICAgICAvLyBBIHNpdGUgd2l0aCBubyBxdWlya3Mgc2hvdWxkIHJldHVybiBh
IG51bGwgU3RyaW5nLgotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9y
VVJMKFVSTCh7IH0sICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOworICAgIFN0cmluZyB1YVN0
cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCgiaHR0cDovL3d3dy53ZWJraXQub3Jn
LyJfcykpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmlzTnVsbCgpKTsKIAogICAgIGFzc2Vy
dFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3R5cGVraXQuY29t
LyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwv
Q29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcAppbmRleCAwZDBiMDA3ZjY0ZWQuLjY0MzhmMWNhNmFiMSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTY0LDMw
ICs2NCwzMCBAQCBwcm90ZWN0ZWQ6CiAKIFRFU1RfRihDdXJsQ29va2llcywgUmVqZWN0VGFpbG1h
dGNoRmFpbHVyZURvbWFpbikKIHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIg
fTsKKyAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3Vj
Y2VzczogZG9tYWluIG1hdGNoCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tp
ZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj1leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpT
b3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2ll
KHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPWV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6
U291cmNlOjpOZXR3b3JrKSk7CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwot
ICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFy
OyBEb21haW49LmV4YW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwor
ICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFy
OyBEb21haW49LmV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7
CiAgICAgLy8gZmFpbHVyZTogc3BlY2lmaWMgc3ViIGRvbWFpbgotICAgIEVYUEVDVF9GQUxTRSht
X2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFt
cGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFM
U0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj13d3cu
ZXhhbXBsZS5jb20iX3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBm
YWlsdXJlOiBkaWZmZXJlbnQgZG9tYWluCi0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5z
ZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUph
ckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNl
dENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj1zYW1wbGUuY29tIl9zLCBDb29raWVK
YXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CiB9CiAKIFRFU1RfRihDdXJsQ29va2llcywgVGVzdEh0
dHBPbmx5Q2FzZSkKIHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAg
ICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2Vzczog
ZnJvbSBuZXR3b3JrCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmws
IHVybCwgImZvbz1iYXI7IEh0dHBPbmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykp
OworICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289
YmFyOyBIdHRwT25seSJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogICAgIC8v
IHN1Y2Nlc3M6IHdpbGRjYXJkIG9mIGRvbWFpbnMKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUph
ci0+c2V0Q29va2llKHVybCwgdXJsLCAiYmluZ289Ym9uZ287IiwgQ29va2llSmFyREI6OlNvdXJj
ZTo6U2NyaXB0KSk7CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmws
IHVybCwgImJpbmdvPWJvbmdvOyJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAg
ICAgLy8gZmFpbHVyZTogZm9vIGlzIGFscmVhZHkgc3RvcmVkIGFzIEh0dHBPbmx5Ci0gICAgRVhQ
RUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyIsIENv
b2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUph
ci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6
OlNjcmlwdCkpOwogICAgIC8vIGZhaWx1cmU6IGluY29uc2lzdGVudC4gU291cmNlIGlzIFNjcmlw
dCwgYnV0IGF0dHJpYnV0ZSBzYXlzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2ll
SmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSIsIENvb2tpZUphckRC
OjpTb3VyY2U6OlNjcmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29v
a2llKHVybCwgdXJsLCAiZm9vPWJhcjsgSHR0cE9ubHkiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6
OlNjcmlwdCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5k
ZGMxODVkOTZiYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNU
KEFwcFByaXZhY3lSZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3Qg
Y2hhciogbWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8g
bWFpblNXQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsK
QEAgLTI2NCw3ICsyNjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsK
IH0KIDwvc2NyaXB0PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xh
c3MgUmVzcG9uc2VUeXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBw
SW5pdGlhdGVkIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQg
aXNBcHBJbml0aWF0ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJh
bCBqczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3
aXRjaCAocmVzcG9uc2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoK
LSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4g
eyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0
KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30p
KSk7IH0pIjsKKyAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChl
dmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2Ny
aXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4
dC9odG1sJ30pKSk7IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyBy
ZXNwb25zZSI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVk
OgotICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAg
ICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBl
eHBlY3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVu
dC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsg
Ii9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8
L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2
YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8
c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAg
IH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwx
MyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2Vy
dmljZVdvcmtlcikKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAKLSAgICBjb25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykp
IH0pIjsKKyAgICBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2Zl
dGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1s
JykpIH0pIl9zOwogICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9t
IHNlcnZlciI7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAg
ICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAi
Q29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAg
ICAgIHsgIi9mZXRjaGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2Vy
dmVyJyk8L3NjcmlwdD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9z
LCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9
LAogICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAK
ICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEy
ICs0NTIsMTIgQEAgc3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNB
cHBJbml0aWF0ZWQpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7
IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQo
XCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkp
KTsgfSkiOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25z
ZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3Njcmlw
dD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBt
YWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsg
Ii8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7
ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0s
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywg
bnVsbHB0ciwgdGVzdElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5w
b3J0KCk7CiAKQEAgLTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJ
c0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5
dGVzIH0gfSwKLSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7
IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAg
IH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwg
dGVzdElkZW50aXR5MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1
ZXN0ICpyZXF1ZXN0MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcu
MC4wLjE6JWQvIiwgc2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChB
cHBQcml2YWN5UmVwb3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAog
I2lmIFdLX0hBVkVfQ19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVs
dFZhbHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVz
RGVmYXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1z
ZykKQEAgLTU4OSw5ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7
CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMg
Y29uc3QgY2hhciogc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0Uo
CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAg
ICBpZiAoIXNlbGYuaW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2Fn
ZSgnTm8gaW50ZXJuYWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVl
cnlBcHBQcml2YWN5UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVk
TWVzc2FnZTsKQEAgLTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lz
dGVyU2VydmljZVdvcmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJW
aWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIs
IHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0
ZXNEZWZhdWx0VmFsdWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5
dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVu
dC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlIH0gfSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFw
cCBpbml0aWF0ZWQgcmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkgdG8gYmUgYXBwIGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRh
ZWI1Zi4uMzI0YmQwMjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcs
NyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3
YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2Vp
dmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyht
c2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsK
IH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRF
U1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBt
YWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3Jl
ID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1
LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNl
T3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBj
aGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8g
bWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0n
aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRv
bWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgot
KURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0Mo
CispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9D
RE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RP
Q0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZy
YW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAg
IHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1l
VGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAg
ICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwog
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJk
ODEuLmY2ZGIxNjdhNWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsx
MzEsMTQgQEAgQGVuZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0
U2V0dGluZ3MoKQogewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSSJfcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAg
ICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJp
ZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBw
QnJvd3NlclByaXZhY3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9z
KTsKIH0KIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxl
ZFVzZXJTY3JpcHRBdFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRl
bnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJv
bGxlciBkCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAog
PHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsK
IH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3Jp
cHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0K
IAogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNv
bnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBh
dXRvIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNl
cnZpY2VXb3JrZXIgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJD
RSI7CispU1dSRVNPVVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3Vu
ZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1Qo
SW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMi
LCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2Ny
aXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OwpAQCAtOTEzLDcgKzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmRE
b21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAg
ICAvLyBFeHBlY3QgdGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1
bGx5LgotICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNl
V29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsK
QEAgLTk1Niw4ICs5NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMg
fSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5o
dG1sIl9zLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAot
ICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBl
Y3RlZE1lc3NhZ2UgPSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2
aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
b2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nl
c3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAg
ICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9u
Lmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3Jp
Z2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAg
ICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5h
dGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsg
IkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFy
Il9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
KCk7CkBAIC04Mzg5LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2Rl
SW5DYXNlT2ZQU09OVGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3Vy
Y2UuaHRtbCIsIHsgImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZv
byJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhU
VFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsg
IkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9s
aWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0
aW9uLmh0bWwiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAi
Q3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIi
X3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4u
ZmRkNjcwODY4M2ViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0y
NDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNy
ZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhO
UHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsK
LSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08i
X3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAi
V2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVT
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1MWZlLi4yZjE5NTJj
Mjk4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAg
cHVibGljOgogICAgICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAg
ICAgbV9tZXNzYWdlID0gQ1N0cmluZygpOwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWdu
YWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0
ZVdlYlZpZXdDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgi
Y3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJj
cmVhdGVCcm93c2luZ0NvbnRleHQiX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWlu
TG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Np
b24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXND
YWxsZWQpOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJW
aWV3SW5XaW5kb3dXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0geyB9Owog
ICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVh
dGUtd2ViLXZpZXc6OndpbmRvdyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0luV2luZG93Q2Fs
bGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dz
aW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0iKTsKKyAgICAg
ICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgIntcInBy
ZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1
bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0
KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRlV2Vi
Vmlld0luV2luZG93V2FzQ2FsbGVkKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fY3JlYXRlV2ViVmlld0luVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgICAgIG1fbWVz
c2FnZSA9IHsgfTsKICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9z
ZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdJ
blRhYkNhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVh
dGVCcm93c2luZ0NvbnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFiXCJ9Iik7Cisg
ICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MsICJ7
XCJwcmVzZW50YXRpb25IaW50XCI6XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21haW5fbG9vcF9y
dW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVj
dChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdl
YlZpZXdJblRhYldhc0NhbGxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFNTTC5jcHAKaW5kZXggNTFjODE1MWM5MGFhLi4wNTQwNTUzN2E3NTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAK
QEAgLTIzMiw3ICsyMzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QoY2VydGlmaWNhdGUpKTsKICAgICAgICAgbV9jZXJ0
aWZpY2F0ZSA9IGNlcnRpZmljYXRlOwogICAgICAgICBtX3Rsc0Vycm9ycyA9IHRsc0Vycm9yczsK
LSAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKHsgfSwgZmFpbGluZ1VSSSk7CisgICAgICAgIG1f
ZmFpbGluZ1VSTCA9IFVSTChTdHJpbmcgeyBmYWlsaW5nVVJJIH0pOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RVSUNsaWVudC5jcHAKaW5kZXggMjg0ZjgwNGI2NDEwLi5iN2MxY2MxYzVjNTMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlD
bGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
VUlDbGllbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZv
aWQgd2luZG93UHJvcGVydGllc05vdGlmeUNhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiBw
YXJhbVNwZWMsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIHRlc3QtPm1fd2lu
ZG93UHJvcGVydGllc0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJhbVNwZWMp
KTsKKyAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5hZGQoU3RyaW5nIHsg
Z19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykgfSk7CiAgICAgfQogCiAgICAgc3RhdGlj
IFdlYktpdFdlYlZpZXcqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uLCBVSUNsaWVudFRlc3QqIHRlc3Qp
CkBAIC03NjAsMTEgKzc2MCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dpbmRvd1Byb3Bl
cnRpZXMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRI
dG1sKGh0bWxTdHJpbmcuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5M
b29wRmluaXNoZXMoKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcm9wZXJ0aWVzQ2hhbmdl
ZFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb3BlcnRpZXNDaGFu
Z2VkW10gPSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAiZ2VvbWV0cnkiLAorICAgICAg
ICAiZ2VvbWV0cnkiX3MsCiAjZW5kaWYKLSAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCAi
bWVudWJhci12aXNpYmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXItdmlzaWJsZSIs
ICJzY3JvbGxiYXJzLXZpc2libGUiCisgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIl9zLCAi
bWVudWJhci12aXNpYmxlIl9zLCAic3RhdHVzYmFyLXZpc2libGUiX3MsICJ0b29sYmFyLXZpc2li
bGUiX3MsICJzY3JvbGxiYXJzLXZpc2libGUiX3MKICAgICB9OwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgR19OX0VMRU1FTlRTKHByb3BlcnRpZXNDaGFuZ2VkKTsgKytpKQogICAgICAgICBn
X2Fzc2VydF90cnVlKHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29udGFpbnMocHJv
cGVydGllc0NoYW5nZWRbaV0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDQwZWFlYjdiZjI3
YS4uYzU2OTAyYTIyOTcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uUGFnZUlEKFdlYlZpZXdUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQogICAgIC8vIFJlZ2lzdGVyIGEgY3VzdG9tIFVSSSBzY2hlbWUgdG8gdGVz
dCBoaXN0b3J5IG5hdmlnYXRpb24uCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3Vy
aV9zY2hlbWUodGVzdC0+bV93ZWJDb250ZXh0LmdldCgpLCAiZm9vIiwKICAgICAgICAgW10oV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIpIHsKLSAgICAgICAgICAgIFVS
TCB1cmwgPSBVUkwoeyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVz
dCkpOworICAgICAgICAgICAgVVJMIHVybCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVt
ZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgICAgICAgICBHUmVmUHRyPEdJbnB1
dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25l
dygpKTsKICAgICAgICAgICAgIGNoYXIqIGh0bWwgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxo
ZWFkPjx0aXRsZT4lczwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgdXJsLmhv
c3QoKSA9PSAiaG9zdDUiID8gIlRpdGxlNSIgOiAiVGl0bGU2Iik7CiAgICAgICAgICAgICBnX21l
bW9yeV9pbnB1dF9zdHJlYW1fYWRkX2RhdGEoR19NRU1PUllfSU5QVVRfU1RSRUFNKGlucHV0U3Ry
ZWFtLmdldCgpKSwgaHRtbCwgc3RybGVuKGh0bWwpLCBnX2ZyZWUpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcApp
bmRleCBmMGJkODY2NWY3MGEuLjI4MDM0MTE0MGYwMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBXZWJLaXRUZXN0U2VydmVyOjpydW4oU291cFNlcnZlckNhbGxiYWNr
IHNlcnZlckNhbGxiYWNrKQogCiB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OmFkZFdlYlNvY2tldEhh
bmRsZXIoU291cFNlcnZlcldlYnNvY2tldENhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2Vy
RGF0YSkKIHsKLSAgICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJMLCAiL3dlYnNv
Y2tldC8iKTsKKyAgICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJMLCAiL3dlYnNv
Y2tldC8iX3MpOwogICAgIG1fYmFzZVdlYlNvY2tldFVSTC5zZXRQcm90b2NvbChtX2Jhc2VXZWJT
b2NrZXRVUkwucHJvdG9jb2xJcygiaHR0cCIpID8gIndzIiA6ICJ3c3MiKTsKIAogICAgIGlmICht
X3F1ZXVlKSB7CkBAIC0xMDEsMTIgKzEwMSwxMiBAQCBDU3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6
OmdldFdlYlNvY2tldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKIHsKICAgICBn
X2Fzc2VydF9mYWxzZShtX2Jhc2VXZWJTb2NrZXRVUkwuaXNOdWxsKCkpOwogICAgIGdfYXNzZXJ0
X3RydWUocGF0aCAmJiAqcGF0aCA9PSAnLycpOwotICAgIHJldHVybiBVUkwobV9iYXNlV2ViU29j
a2V0VVJMLCBwYXRoICsgMSkuc3RyaW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhlIGxlYWRpbmcg
c2xhc2guCisgICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIFN0cmluZyB7IHBhdGgg
KyAxIH0pLnN0cmluZygpLnV0ZjgoKTsgLy8gSWdub3JlIHRoZSBsZWFkaW5nIHNsYXNoLgogfQog
CiBDU3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0
aCkgY29uc3QKIHsKLSAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgcGF0aCkuc3RyaW5nKCkudXRm
OCgpOworICAgIHJldHVybiBVUkwobV9iYXNlVVJMLCBTdHJpbmcgeyBwYXRoIH0pLnN0cmluZygp
LnV0ZjgoKTsKIH0KIAogdW5zaWduZWQgV2ViS2l0VGVzdFNlcnZlcjo6cG9ydCgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4
IGYyMmMzNzIyNzk2OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4K
LVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRN
b2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6
ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdh
dGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0s
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJU
ZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQog
ewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3
ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8
Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRD
b250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29u
dGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2Uo
MTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENv
bnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29u
dGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRl
bnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2Uo
MTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4o
ZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwog
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVm
ZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0
aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsK
IAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJl
ZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwg
Q0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2Vi
S2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVz
a3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmln
YXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50
b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1Qo
UHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQp
CiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBu
YW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4Lgot
ICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAi
TW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29u
dGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpu
aWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNl
ckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpA
Ik1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
c3BpLmNwcAppbmRleCA4Y2QyMmU0ZDM3MmEuLjg5NWYyZTY5OTAzNSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50QXRzcGkuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcApAQCAtMzk4LDE4ICszOTgs
MTggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0
cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmUKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygp
OwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWFBsYWNlaG9sZGVyVmFsdWUiKQotICAgICAg
ICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicGxhY2Vo
b2xkZXItdGV4dCIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6
dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0Il9zKSkubGVha1JlZigp
OwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEludmFsaWQiKSB7CiAgICAgICAgIGF1dG8g
dGV4dEF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGF1
dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxpZCIpOworICAg
ICAgICBhdXRvIHZhbHVlID0gdGV4dEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5nZXQoImludmFsaWQi
X3MpOwogICAgICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdmFsdWUgPSBj
aGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQuZ2V0KCksIFdlYkNvcmU6OkF0c3BpOjpTdGF0ZTo6
SW52YWxpZEVudHJ5KSA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgICAgICAgICB2YWx1ZSA9IGNo
ZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJ
bnZhbGlkRW50cnkpID8gInRydWUiX3MgOiAiZmFsc2UiX3M7CiAgICAgICAgIHJldHVybiBPcGFx
dWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHZhbHVlKS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikKLSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQoImxpdmUiKSkubGVha1JlZigpOworICAgICAg
ICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSJf
cykpLmxlYWtSZWYoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQi
KQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdl
dCgicmVsZXZhbnQiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6
OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVsZXZhbnQiX3MpKS5sZWFrUmVmKCk7CiAKICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIH0KQEAg
LTQyMCwyMSArNDIwLDIxIEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRh
dGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJp
YnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0c2l6ZSIpLnRvRG91YmxlKCk7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0c2l6ZSJfcykudG9Eb3VibGUoKTsKICAgICBpZiAo
YXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmli
dXRlcy5nZXQoInBvc2luc2V0IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZXMuZ2V0KCJwb3NpbnNldCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9
PSAiQVhBUklBQ29sdW1uQ291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNv
bGNvdW50IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xj
b3VudCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93
Q291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50IikudG9Eb3Vi
bGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3djb3VudCJfcykudG9Eb3Vi
bGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uSW5kZXgiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGluZGV4IikudG9Eb3VibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBp
ZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93SW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0
cmlidXRlcy5nZXQoInJvd2luZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuZ2V0KCJyb3dpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBQ29sdW1uU3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgi
Y29sc3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29s
c3BhbiJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93
U3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiIpLnRvRG91Ymxl
KCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiJfcykudG9Eb3VibGUo
KTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDQyLDggKzQ0Miw4IEBAIGRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3Vy
cmVudFN0YXRlVmFsdWUoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0
b3JlKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3Vy
cmVudCIpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051
bGwoKSA/IHZhbHVlIDogImZhbHNlIikubGVha1JlZigpOworICAgIGF1dG8gdmFsdWUgPSBtX2Vs
ZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImN1cnJlbnQiX3MpOworICAgIHJldHVybiBPcGFxdWVK
U1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZhbHNlIl9zKS5s
ZWFrUmVmKCk7CiB9CiAKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVt
ZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CkBAIC01
MTQsNyArNTE0LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJB
WEludGVyZmFjZVRhYmxlQ2VsbCIpCiAgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmludGVyZmFj
ZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVyZmFj
ZTo6VGFibGVDZWxsKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikK
LSAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiYXRvbWljIikgPT0g
InRydWUiOworICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9t
aWMiX3MpID09ICJ0cnVlIjsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTUzNiw3ICs1MzYs
NyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8gYXR0
cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwotICAgIFN0cmluZyBpc1JlYWRPbmx5
ID0gYXR0cmlidXRlcy5nZXQoInJlYWRvbmx5Iik7CisgICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBh
dHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiX3MpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBpc1JlYWRPbmx5ID09ICJ0cnVlIiA/IGZhbHNlIDogdHJ1ZTsK
IApAQCAtNTczLDE3ICs1NzMsMTcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0
dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0g
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRzaXplIik7CisgICAgICAgIHJl
dHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRzaXplIl9zKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250
YWlucygicG9zaW5zZXQiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInBv
c2luc2V0Il9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBTGl2ZSIpIHsKLSAg
ICAgICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIik7CisgICAgICAgIGF1dG8g
dmFsdWUgPSBhdHRyaWJ1dGVzLmdldCgibGl2ZSJfcyk7CiAgICAgICAgIHJldHVybiAhdmFsdWUu
aXNFbXB0eSgpICYmIHZhbHVlICE9ICJvZmYiOwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlu
cygicmVsZXZhbnQiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInJlbGV2
YW50Il9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoImF0b21pYyIpOworICAgICAgICByZXR1cm4g
YXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9
PSAiQVhFbGVtZW50QnVzeSIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01OTgsMjcgKzU5
OCwyNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkKIHN0YXRpYyBTdHJpbmcgeG1sUm9sZVZhbHVl
U3RyaW5nKGNvbnN0IFN0cmluZyYgeG1sUm9sZXMpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiByZWdpb25Sb2xl
cyA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KHsKLSAgICAgICAg
ImRvYy1hY2tub3dsZWRnbWVudHMiLAotICAgICAgICAiZG9jLWFmdGVyd29yZCIsCi0gICAgICAg
ICJkb2MtYXBwZW5kaXgiLAotICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSIsCi0gICAgICAgICJk
b2MtY2hhcHRlciIsCi0gICAgICAgICJkb2MtY29uY2x1c2lvbiIsCi0gICAgICAgICJkb2MtY3Jl
ZGl0cyIsCi0gICAgICAgICJkb2MtZW5kbm90ZXMiLAotICAgICAgICAiZG9jLWVwaWxvZ3VlIiwK
LSAgICAgICAgImRvYy1lcnJhdGEiLAotICAgICAgICAiZG9jLWZvcmV3b3JkIiwKLSAgICAgICAg
ImRvYy1nbG9zc2FyeSIsCi0gICAgICAgICJkb2MtZ2xvc3NyZWYiLAotICAgICAgICAiZG9jLWlu
ZGV4IiwKLSAgICAgICAgImRvYy1pbnRyb2R1Y3Rpb24iLAotICAgICAgICAiZG9jLXBhZ2VsaXN0
IiwKLSAgICAgICAgImRvYy1wYXJ0IiwKLSAgICAgICAgImRvYy1wcmVmYWNlIiwKLSAgICAgICAg
ImRvYy1wcm9sb2d1ZSIsCi0gICAgICAgICJkb2MtdG9jIiwKLSAgICAgICAgInJlZ2lvbiIKKyAg
ICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMiX3MsCisgICAgICAgICJkb2MtYWZ0ZXJ3b3JkIl9z
LAorICAgICAgICAiZG9jLWFwcGVuZGl4Il9zLAorICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSJf
cywKKyAgICAgICAgImRvYy1jaGFwdGVyIl9zLAorICAgICAgICAiZG9jLWNvbmNsdXNpb24iX3Ms
CisgICAgICAgICJkb2MtY3JlZGl0cyJfcywKKyAgICAgICAgImRvYy1lbmRub3RlcyJfcywKKyAg
ICAgICAgImRvYy1lcGlsb2d1ZSJfcywKKyAgICAgICAgImRvYy1lcnJhdGEiX3MsCisgICAgICAg
ICJkb2MtZm9yZXdvcmQiX3MsCisgICAgICAgICJkb2MtZ2xvc3NhcnkiX3MsCisgICAgICAgICJk
b2MtZ2xvc3NyZWYiX3MsCisgICAgICAgICJkb2MtaW5kZXgiX3MsCisgICAgICAgICJkb2MtaW50
cm9kdWN0aW9uIl9zLAorICAgICAgICAiZG9jLXBhZ2VsaXN0Il9zLAorICAgICAgICAiZG9jLXBh
cnQiX3MsCisgICAgICAgICJkb2MtcHJlZmFjZSJfcywKKyAgICAgICAgImRvYy1wcm9sb2d1ZSJf
cywKKyAgICAgICAgImRvYy10b2MiX3MsCisgICAgICAgICJyZWdpb24iX3MKICAgICB9KTsKIAog
ICAgIGlmIChyZWdpb25Sb2xlcy0+Y29udGFpbnMoeG1sUm9sZXMpKQpAQCAtNzYyLDcgKzc2Miw3
IEBAIHN0YXRpYyBTdHJpbmcgcm9sZVZhbHVlVG9TdHJpbmcodW5zaWduZWQgcm9sZVZhbHVlKQog
ICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNjcm9sbEJhcjoKICAgICAgICAgcmV0dXJu
ICJBWFNjcm9sbEJhciJfczsKICAgICBjYXNlIFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpTY3JvbGxQ
YW5lOgotICAgICAgICByZXR1cm4gIkFYU2Nyb2xsQXJlYSI7CisgICAgICAgIHJldHVybiAiQVhT
Y3JvbGxBcmVhIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlY3Rpb246CiAg
ICAgICAgIHJldHVybiAiQVhTZWN0aW9uIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJv
bGU6OlNlcGFyYXRvcjoKQEAgLTgxNyw3ICs4MTcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiB7CiAgICAgbV9lbGVtZW50LT51cGRh
dGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIHJvbGVWYWx1ZSA9IG1fZWxlbWVudC0+cm9sZSgp
OwotICAgIGF1dG8gcm9sZVZhbHVlU3RyaW5nID0gcm9sZVZhbHVlID09IFdlYkNvcmU6OkF0c3Bp
OjpSb2xlOjpMYW5kbWFyayA/IHhtbFJvbGVWYWx1ZVN0cmluZyhtX2VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXQoInhtbC1yb2xlcyIpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7Cisg
ICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJv
bGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygp
LmdldCgieG1sLXJvbGVzIl9zKSkgOiByb2xlVmFsdWVUb1N0cmluZyhyb2xlVmFsdWUpOwogICAg
IGlmIChyb2xlVmFsdWVTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdD
cmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtODMyLDE0ICs4MzIsMTQgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUo
KQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVE
ZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAg
ICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgicm9s
ZWRlc2NyaXB0aW9uIik7CisgICAgYXV0byByb2xlRGVzY3JpcHRpb24gPSBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKS5nZXQoInJvbGVkZXNjcmlwdGlvbiJfcyk7CiAgICAgcmV0dXJuIE9wYXF1ZUpT
U3RyaW5nOjp0cnlDcmVhdGUobWFrZVN0cmluZygiQVhSb2xlRGVzY3JpcHRpb246ICIsIHJvbGVE
ZXNjcmlwdGlvbikpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgbV9lbGVt
ZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGNvbXB1dGVkUm9sZSA9IG1fZWxl
bWVudC0+YXR0cmlidXRlcygpLmdldCgiY29tcHV0ZWQtcm9sZSIpOworICAgIGF1dG8gY29tcHV0
ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIl9zKTsK
ICAgICBpZiAoY29tcHV0ZWRSb2xlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAogCiAgICAgLy8g
Q29uc2lkZXIgaGVhZGluZ3MgYXMgYW4gc3BlY2lhbCBjYXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBp
bnQgdmFsdWUuCiAgICAgaWYgKG1fZWxlbWVudC0+cm9sZSgpID09IFdlYkNvcmU6OkF0c3BpOjpS
b2xlOjpIZWFkaW5nKQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0
KCJsZXZlbCIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXQoImxldmVsIl9zKS50b0RvdWJsZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05
OTksNyArOTk5LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2lu
Z1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7
Ci0gICAgYXV0byB2YWx1ZSA9IG1ha2VTdHJpbmcoIkFYVmFsdWVEZXNjcmlwdGlvbjogIiwgYXR0
cmlidXRlcy5nZXQoInZhbHVldGV4dCIpKTsKKyAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygi
QVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0Il9zKSk7CiAg
ICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKIH0K
IApAQCAtMTA3Niw3ICsxMDc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lu
ZGV0ZXJtaW5hdGUoKSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNo
aWNhbExldmVsKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIGF1dG8gbGV2ZWwgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIik7
CisgICAgYXV0byBsZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3Mp
OwogICAgIGlmIChsZXZlbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDkx
LDEzICsxMDkxLDEzIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzcGVha0FzKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3Jh
YmJlZCgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAg
ICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJncmFiYmVkIikgPT0gInRydWUi
OworICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiX3MpID09
ICJ0cnVlIjsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Iik7CisgICAgYXV0byBkcm9wRWZmZWN0cyA9IG1fZWxlbWVu
dC0+YXR0cmlidXRlcygpLmdldCgiZHJvcGVmZmVjdCJfcyk7CiAgICAgaWYgKGRyb3BFZmZlY3Rz
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
bnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZHJvcEVm
ZmVjdHMpLmxlYWtSZWYoKTsKQEAgLTE0MjksNyArMTQyOSw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKICAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAg
ICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIikp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1l
bnQtPmRvY3VtZW50QXR0cmlidXRlKCJFbmNvZGluZyJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJ
KCkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0Ny
ZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCiAgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2Vs
ZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJVUkkiKSkubGVha1JlZigpOworICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVS
SSJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnVybCgpCmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKaW5k
ZXggMTIwNGNiNTI4YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9tYWluLmNwcAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIv
bWFpbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRl
cnMoKQogICAgIENvbXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgdWludDhfdD4gZXhhbXBsZUNv
bXBhY3RQb2ludGVyVHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44Qml0U3RyaW5nLCAyNTUgfTsKICAg
ICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIGJvb2w+IGV4YW1wbGVDb21wYWN0UG9pbnRl
clR1cGxlU2ltcGxlQm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRydWUgfTsKICAgICAKLSAgICBVUkwg
YVVSTCh7IH0sICJodHRwczovL3d3dy5leGFtcGxlLmNvbSIpOworICAgIFVSTCBhVVJMKCJodHRw
czovL3d3dy5leGFtcGxlLmNvbSJfcyk7CiAKICAgICBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJv
dmlkZXJzKCk7CiB9Cg==
</data>
<flag name="commit-queue"
          id="484848"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456526</attachid>
            <date>2022-04-03 19:03:17 -0700</date>
            <delta_ts>2022-04-03 21:20:24 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>362464</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5iNzcxY2FkZTU0YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50
c0NhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXMKIAogICAg
IGF1dG8qIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSk7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfZmlsZV9nZXRfcGF0aChmaWxlKSk7Ci0gICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUocGF0aC5nZXQoKSkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFN0cmluZzo6ZnJv
bVVURjgocGF0aC5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZURpYWxvZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhMjYzMDg4NTcz
Y2YuLmI2NjQzNzEzZjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94
eSwKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3Nh
Z2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsK
IAogICAgIC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9h
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1v
dGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3Yjgw
NDc3YmRjLi5hMWM2OGU0MjBlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVBy
b3h5V2luLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIExSRVNVTFQgUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eTo6b25DbG9zZSgpCiAKIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewotICAgIFJlZlB0
cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0
cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3Rv
clVJUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9X
ZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAppbmRleCBmNDAwZDVlNzM3MTkuLjFhMTkxNTU1Zjll
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxP
UEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5z
cGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHBy
ZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1
bmNoZXIuY3BwCmluZGV4IDlkM2Y5OGEzNDk0MC4uZTJmOTcxMzI1NTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3Mgewog
CiBzdGF0aWMgdm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3Ms
IGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikK
IHsKLSAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgp
OworICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5n
Ojpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAg
Q1N0cmluZyBycGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0
b3IoVmVjdG9yPENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRh
KCkgfSkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdy
YXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAg
ICAgICAgYWRkRXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5k
Ym94QXJncyk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2Nr
ZXQiLCAid2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlz
RGlyZWN0b3J5Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
Il9zIH07CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAg
ICAgICAgICAgIFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5
ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAg
ICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFw
cGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCAwZDFmNDAwZTQ0NDEuLmNmZTdhMGViM2JlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlz
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50Rmls
ZURlc2NyaXB0b3IgPSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25f
bGlicmFyeV9uYW1lKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFy
eU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3Bl
X2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAg
IH0KICNlbmRpZgogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAg
ICAgICAgIHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvLjEiKTsKICAg
ICAgICAgaWYgKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVu
dHMoKSkgewogICAgICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3Ig
PSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmcgeyB3cGVfbG9h
ZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkgfSk7CiAgICAgICAg
IH0KICNlbGlmIFVTRShFR0wpCiAgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5TmFtZSA9IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNwbGF5TmFtZSgp
OwpAQCAtMTE2LDggKzExNiw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAKICAgICBHQXBw
bGljYXRpb24qIGFwcCA9IGdfYXBwbGljYXRpb25fZ2V0X2RlZmF1bHQoKTsKICAgICBpZiAoYXBw
KQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQgPSBnX2FwcGxpY2F0aW9uX2dldF9h
cHBsaWNhdGlvbl9pZChhcHApOwotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gZ19n
ZXRfYXBwbGljYXRpb25fbmFtZSgpOworICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQg
PSBTdHJpbmcgeyBnX2FwcGxpY2F0aW9uX2dldF9hcHBsaWNhdGlvbl9pZChhcHApIH07CisgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbk5hbWUgPSBTdHJpbmcgeyBnX2dldF9hcHBsaWNhdGlvbl9u
YW1lKCkgfTsKIAogICAgIHBhcmFtZXRlcnMuaW5zcGVjdG9yU2VydmVyQWRkcmVzcyA9IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjppbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3Bw
CmluZGV4IDYzMzg4NGRhZGNiMS4uODY0ZDBlMzZmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQo
KSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVu
YWJsZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29s
LT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5
Li42MjY5Y2M0ZDI4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3Rr
Il9zCiAjZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisj
ZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiX3MKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRl
eCBlOGI5YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJv
YXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGlj
YXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OlNtYXJ0UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAg
ICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3Rh
dGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwg
Q2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRh
cmdldFR5cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1Rh
cmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0Lmdl
dCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2Fy
ZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAg
ICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAg
ICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmlu
ZGV4IDA3YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAg
ICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMo
KTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9y
X2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdl
dCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJh
Y3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKaW5kZXggMTU5OTcxYWNjNmYwLi5jYmYxYTI5ZmRhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cApAQCAtMTk4LDIzICsxOTgsMjMgQEAgS2V5QmluZGluZ1RyYW5zbGF0b3I6On5LZXlCaW5kaW5n
VHJhbnNsYXRvcigpCiBzdHJ1Y3QgS2V5Q29tYmluYXRpb25FbnRyeSB7CiAgICAgdW5zaWduZWQg
Z2RrS2V5Q29kZTsKICAgICB1bnNpZ25lZCBzdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogfTsKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9u
RW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9IHsKLSAgICB7IEdES19LRVlfYiwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgIH0sCi0g
ICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlSXRhbGljIiAgICB9LAotICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdE
S19LRVlfZ3JlYXRlciwgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDYW5j
ZWwiICAgICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICB9LAotICAgIHsgR0RLX0tFWV9U
YWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0
YWIiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVy
LCAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9
LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAg
eyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
SW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9N
QVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19L
RVlfViwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJQYXN0ZUFz
UGxhaW5UZXh0IiB9LAorICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiX3MgICAgICB9LAorICAgIHsgR0RLX0tFWV9p
LCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2dsZUl0YWxp
YyJfcyAgICB9LAorICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9ncmVh
dGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAg
ICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiJfcyAgICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiX3Mg
ICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9
LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAg
IHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywg
IlBhc3RlQXNQbGFpblRleHQiX3MgfSwKIH07CiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBoYW5k
bGVLZXlCaW5kaW5nc0Zvck1hcChjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5KiBtYXAsIHVuc2ln
bmVkIG1hcFNpemUsIHVuc2lnbmVkIGtleXZhbCwgR2RrTW9kaWZpZXJUeXBlIHN0YXRlKQpAQCAt
MjY3LDcxICsyNjcsNzEgQEAgVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNv
bW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogI2VuZGlmCiAKIHN0YXRpYyBj
b25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IHByZWRlZmluZWRLZXlCaW5kaW5nc1tdID0gewotICAg
IHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0
LCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVCYWNrd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1Bf
TGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJh
Y2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sg
fCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElG
VF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIiB9LAotICAgIHsgR0RL
X0tFWV9SaWdodCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAg
ICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9SaWdodCwg
ICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIg
fSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NI
SUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBH
REtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAi
TW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9VcCwg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgfSwK
LSAgICB7IEdES19LRVlfS1BfVXAsICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlVXAiIH0sCi0gICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAot
ICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAg
ICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRG93biwg
ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgfSwK
LSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93biIgfSwKLSAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlf
SG9tZSwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9C
ZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAotICAg
IHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfSG9tZSwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZ
X0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
IiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtf
U0hJRlRfTUFTSywgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0VuZCwgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiB9
LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfRW5kLCAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0VuZCwg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZE
b2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNL
LCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tF
WV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVU
b0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0Vu
ZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9QYWdlX0Rvd24sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlRG93biIgfSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2Vf
RG93biwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKLSAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9EZWxl
dGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0RlbGV0ZSwgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0
ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndh
cmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFj
ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9hLCAgICAg
ICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwK
LSAgICB7IEdES19LRVlfYSwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZU
X01BU0ssICJVbnNlbGVjdCIgfSwKLSAgICB7IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJTZWxlY3RBbGwiIH0sCi0gICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiIH0sCi0gICAgeyBHREtfS0VZX3gsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX3Ys
ICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9M
X01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX0tQX0luc2Vy
dCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0KKyAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlTGVmdCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0sCisgICAgeyBHREtfS0VZX0xl
ZnQsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9MZWZ0LCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1v
dmVXb3JkQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIl9z
IH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAg
eyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1Bf
UmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdE
S19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAg
ICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAg
IEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05U
Uk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9VcCwgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwgICAg
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAg
IHsgR0RLX0tFWV9VcCwgICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwg
ICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlm
eVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0Rvd24sICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
X3MgfSwKKyAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAg
ICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9Eb3duLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIl9zIH0sCisgICAgeyBHREtf
S0VZX0hvbWUsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92
ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0hvbWUsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hv
bWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQi
X3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RL
X1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdE
S19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlv
biJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9F
bmQsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9m
TGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAg
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9
LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsg
R0RLX0tFWV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
Ik1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50Il9z
IH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRf
TUFTSywgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7
IEdES19LRVlfUGFnZV9VcCwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1BhZ2VfVXAsICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCJfcyB9LAorICAgIHsgR0RLX0tF
WV9QYWdlX1VwLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX1BhZ2VfRG93biwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtf
S0VZX0RlbGV0ZSwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVs
ZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiX3MgfSwKKyAgICB7IEdES19L
RVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19DT05U
Uk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAg
eyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRGVsZXRlQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCJfcyB9LAorICAg
IHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCJfcyB9LAorICAg
IHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFT
SywgIlVuc2VsZWN0Il9zIH0sCisgICAgeyBHREtfS0VZX3NsYXNoLCAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiX3MgfSwKKyAgICB7IEdES19LRVlfeCwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfYywgICAgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX3YsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX0tQX0luc2VydCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfQogfTsKIAogVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1h
bmRzRm9yS2V5dmFsKHVuc2lnbmVkIGtleXZhbCwgdW5zaWduZWQgbW9kaWZpZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXgg
YTg2YjM0ZGRhYThmLi5lMzE4ODlmMzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
U3RyaW5nIGJhY2tlbmRDb21tYW5kc1BhdGgoKQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24odXJsUmVmLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxVSW50
OCo+KHBhdGgpLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
cGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKIH0KIAogc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZTVhOGMzYjY5ZTE3Li45
ZDdlNzFjMjI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3BhZ2Ut
PmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3Ii
KTsKKyAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJl
IG1hdGNoZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1Li40NGNiZjczYzZhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTczMywxMCArNzMzLDEw
IEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBTdHJpbmcoIkdldFNuYXBzaG90IikpIHsKLSAgICAgICAgU25hcHNo
b3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4o
c3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RPcHRpb25zIikp
LT52YWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PEFQ
STo6VUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSktPnZhbHVlKCk7Ci0gICAgICAg
IFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9uPihzdGF0
aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+dmFs
dWUoKSk7Ci0gICAgICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8
QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRyYW5zcGFyZW50QmFja2dyb3VuZCIpKS0+dmFs
dWUoKTsKKyAgICAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19j
YXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RPcHRpb25zIl9zKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJ
RCJfcykpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNf
Y2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RSZWdpb24iX3MpKS0+dmFsdWUoKSk7CisgICAgICAgIGJvb2wgdHJhbnNwYXJl
bnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRy
YW5zcGFyZW50QmFja2dyb3VuZCJfcykpLT52YWx1ZSgpOwogCiAgICAgICAgIFJlZlB0cjxXZWJJ
bWFnZT4gc25hcHNob3RJbWFnZTsKICAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnBy
aXYtPndlYlBhZ2U7CkBAIC03NjUsMTAgKzc2NSwxMCBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRS
ZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YQogICAgICAgICB9CiAKICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VS
ZXBseTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSIsIHdlYlBhZ2UpOwotICAgICAg
ICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lEIiwgQVBJOjpVSW50NjQ6OmNyZWF0ZShjYWxs
YmFja0lEKSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJ
bWFnZSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkt
PnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CisgICAgICAgIG1lc3NhZ2VSZXBs
eS5zZXQoIlBhZ2UiX3MsIHdlYlBhZ2UpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxs
YmFja0lEIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVz
c2FnZVJlcGx5LnNldCgiU25hcHNob3QiX3MsIHNuYXBzaG90SW1hZ2UpOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2ViUGFn
ZS5EaWRHZXRTbmFwc2hvdCJfcywgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNz
YWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50R3RrLmNwcAppbmRleCBmZTBkNDAxOGUzZjguLmE5Y2RhYzljMDkxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURvY3VtZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCkBAIC0xOTA5LDkg
KzE5MDksOSBAQCBnY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfdmlzaWJpbGl0eV9zdGF0
ZShXZWJLaXRET01Eb2N1bWVudCogc2VsZikKICAgICBXZWJDb3JlOjpEb2N1bWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBzd2l0Y2ggKGl0ZW0tPnZpc2liaWxpdHlTdGF0ZSgp
KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpWaXNpYmlsaXR5U3RhdGU6OkhpZGRlbjoKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoImhpZGRlbiIpOworICAgICAgICByZXR1cm4gY29u
dmVydFRvVVRGOFN0cmluZygiaGlkZGVuIl9zKTsKICAgICBjYXNlIFdlYkNvcmU6OlZpc2liaWxp
dHlTdGF0ZTo6VmlzaWJsZToKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoInZp
c2libGUiKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoInZpc2libGUiX3Mp
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUv
V2ViRWRpdG9yQ2xpZW50V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcAppbmRleCA0NTJjZjBjYzhjN2EuLjMz
ODRmYTI1OGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcApAQCAtMTY4
LDcgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudChjb25zdCBL
ZXlib2FyZEV2ZW50JiBldmVudCkKIAogc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJhbWUm
IGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBwbGF0Zm9ybUV2ZW50KQogewotICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtl
eUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgeyBpbnRlcnByZXRLZXlFdmVu
dChldmVudCkgfTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKQEAgLTE5MCw3
ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJv
YXJkRXZlbnQmIGV2ZW50LCBjb25zdCBQbGF0Zm9ybUtleQogCiBzdGF0aWMgdm9pZCBoYW5kbGVL
ZXlEb3duKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYpCiB7Ci0gICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5
RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGludGVycHJldEtleUV2ZW50
KGV2ZW50KSB9OwogICAgIGlmIChjb21tYW5kTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1Miw3IEBAIHZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2
YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRo
YXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFp
bHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAg
ICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAppbmRleCA5YmFhNzI4ODRhODkuLjFjOTM2
OWRjOGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xp
Yi9XZWJQYWdlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z2xpYi9XZWJQYWdlR0xpYi5jcHAKQEAgLTExNCwyMiArMTE0LDIyIEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQp
IGNvbnN0CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNvbnN0IEVkaXRvciYgZWRpdG9yID0gZnJh
bWUuZWRpdG9yKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKLSAgICAgICAgaWYg
KGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikg
PT0gVHJpU3RhdGU6OlRydWUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCJfcykgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7
Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5
bGUsICJpdGFsaWMiKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxl
Y3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykgPT0gVHJpU3Rh
dGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpID09
IFRyaVN0YXRlOjpUcnVlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiX3MpID09
IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmli
dXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9u
SGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgImxpbmUt
dGhyb3VnaCIpID09IFRyaVN0YXRlOjpUcnVlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
bkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJsaW5l
LXRocm91Z2giX3MpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERh
dGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVTdHJpa2VUaHJvdWdoOwogICAgIH0gZWxz
ZSBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpKQorICAgICAgICBp
ZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAi
Ym9sZCJfcykpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZUJvbGQ7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHls
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpKQorICAgICAgICBpZiAoZWRpdG9yLnNl
bGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiX3MpKQog
ICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJ
dGFsaWNzOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpKQorICAgICAg
ICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykpCiAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLSAgICAgICAg
aWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSkKKyAgICAgICAgaWYgKGVkaXRvci5z
ZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QsICJsaW5lLXRocm91Z2giX3MpKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlw
aW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVTdHJpa2VUaHJvdWdoOwogICAgIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggMmYyMWYyYmVmM2M5Li5jMmZiY2JjOTA2OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlID0gZ3RrX3ByaW50X2pvYl9nZXRfc3VyZmFjZShtX3ByaW50Sm9iLmdldCgp
LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgICAg
IHByaW50RG9uZShwcmludEVycm9yKGZyYW1lVVJMKCksIGVycm9yLT5tZXNzYWdlKSk7CisgICAg
ICAgICAgICBwcmludERvbmUocHJpbnRFcnJvcihmcmFtZVVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBwcmludEpvYkNvbXBs
ZXRlKEd0a1ByaW50Sm9iKiwgV2ViUHJpbnRPcGVyYXRpb25HdGtVbml4KiBwcmludE9wZXJhdGlv
biwgY29uc3QgR0Vycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIHByaW50T3BlcmF0aW9uLT5w
cmludERvbmUoZXJyb3IgPyBwcmludEVycm9yKHByaW50T3BlcmF0aW9uLT5mcmFtZVVSTCgpLCBl
cnJvci0+bWVzc2FnZSkgOiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkpOworICAgICAgICBwcmlu
dE9wZXJhdGlvbi0+cHJpbnREb25lKGVycm9yID8gcHJpbnRFcnJvcihwcmludE9wZXJhdGlvbi0+
ZnJhbWVVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpIDogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcigpKTsKICAgICAgICAgcHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IgPSAw
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dp
dGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVu
ZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBA
IlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAor
ICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktl
eVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAi
eSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
ImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAw
NDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
OjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9z
LAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3Ms
ICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIs
ICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
dSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJf
cywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcg
KzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikg
Y29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWly
a3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2Vu
dCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRo
QXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYmI1MTJhZWMzNDUwLi43NjQ0M2E5NDI1NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdp
bi5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50
eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZl
dmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmlu
ZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBk
b2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEw
NDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xp
ZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFt
X2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQg
Y3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRz
IGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBu
dWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1f
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAg
ICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09M
KV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1
bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSht
ZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVk
aWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmll
dygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0
ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7
ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQu
cmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQu
Z2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4
ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGlu
dCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRv
Q29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAg
IHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBi
YWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0y
MDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9P
TClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4
dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJp
dmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10p
OworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhl
bmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAt
IChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZy
YW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2lu
Z0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxs
YmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29s
b3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRN
YXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRT
Y3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNz
aWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3
aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBw
ZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxl
QmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAg
IC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxl
QmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3Mp
OwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIy
MWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NG
RGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFn
Il9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRl
LmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMg
KzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdh
dGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAog
RGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0
b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5l
bmQoKTsgKytpKQogICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEu
LjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVs
dFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0
UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4
dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5
RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6
fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVm
YXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNl
YWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVt
b3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3Mp
OwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Q
cm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1
LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWco
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZN
b3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5X
ZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlv
blByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0s
IFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBA
IC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNo
ZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlv
bkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBX
ZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgp
CkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQog
CiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6
c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdl
ID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgp
LCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFw
cGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAK
ICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJj
aGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2Vi
QXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4
IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0Zvcndh
cmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNr
Rm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3
YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6
On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExp
c3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCku
cmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdl
YkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNh
Y2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAK
IFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZk
ZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3Mu
Y3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3Jl
U3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3Rh
dGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29y
ZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDks
NyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3Rl
ZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpz
T2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291
bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJl
Z2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5z
ZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5z
ZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0
cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+Ojpj
cmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBl
TmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRp
c3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3Bl
cnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJl
bnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVu
dCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVl
KTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3Vy
cmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRD
T00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwog
ICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5
NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01f
T3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3Rp
Y3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNl
cnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRl
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3Mu
Y29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5
dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGlj
cy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwg
aGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVl
KTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmll
bGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1h
bGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihm
YXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJG
YXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRz
LmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxk
cy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQo
IkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFT
Y3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFs
TWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRT
aXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRz
LkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVk
IGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVs
ZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTli
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2Fy
ZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01I
VE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwg
KHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29t
bWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAg
IFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAg
ICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhl
IGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBr
ZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRo
aXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4g
ZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1D
b21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50
KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNv
dXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdl
YkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpA
QCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAg
IG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRh
dGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2Ui
X3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShX
ZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAt
MTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6
OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2Vy
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFz
ZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFn
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDky
ZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVy
OjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8
V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2Vi
RG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsK
ICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNv
dXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmlu
ZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9h
ZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhp
cyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxU
IFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2Vi
VVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJM
IG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBl
cnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRB
dXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmlu
ZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0
aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJv
cihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxl
Z2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFj
NWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBA
IC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+
V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJv
cGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5
QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyAr
NDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29u
c3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRU
ZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsK
IH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0
ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpX
ZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5m
bykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciog
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJv
cGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4
IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBX
ZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJf
cyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZy
YW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2Vi
RnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9p
ZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5
cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAg
IG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0g
InRleHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdO
YW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2
OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBt
X2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNw
cAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAg
LTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2Nh
dGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7
CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0K
IAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBw
dk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50
YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQog
ewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAog
V2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcg
KzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkK
IAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsK
IH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0
ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09N
UHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3Rp
ZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcg
QEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwog
fQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5
YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxI
aXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0
KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2Vi
SGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3Rv
cnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0u
Z2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJI
aXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5z
cGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5k
ZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5z
cGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5z
cGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNw
ZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9
CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBj
OGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3Jp
cHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxl
Y3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsK
IH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFj
dG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEz
IEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENs
YXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0K
IAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0
b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3Rvcnki
X3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAK
QEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29w
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
S2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3Nh
Z2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRN
ZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9v
cDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0
aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBA
QCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0
aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3Rh
dGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
S2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3Rh
dGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDks
NyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9v
bCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7
CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0
YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1
ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVz
dCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJi
NWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNw
cApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0
YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRh
dGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsK
IH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25E
YXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJf
cyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5z
dGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1
ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1
dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDky
NTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RS
IG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3Vz
ZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNh
dGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlv
bigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9
MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8q
PTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50
ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1
NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAg
ICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0
aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25D
ZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25D
ZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRl
ciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2Rk
NWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAg
LTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVk
U3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVm
ZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3Mp
OwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAog
V2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFl
MzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEz
ICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3Qg
V1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFt
ZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJf
cyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3
Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3Jp
cHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2Ny
aXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
Y3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3Qo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlw
dE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUz
NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQu
Z2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
Y3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpA
QCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBh
bGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50Owot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0
V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2
NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9y
aWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldl
YlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxp
emVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNW
YWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICsz
MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpX
ZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRK
U1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQog
CiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNw
cAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJl
bmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJl
cjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0
UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNh
dGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJf
cyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwog
fQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRl
eCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAg
QVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9z
KTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4
NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENy
ZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJM
Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50
aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3Jl
ZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVk
ZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQ
cm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6
IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQog
CiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90
ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3Rl
Y3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVj
dGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIw
IEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUo
aW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25z
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQog
CiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJM
UmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJM
UmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBh
biBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVy
ZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVS
TCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2Ut
Pm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5s
aW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkK
IHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9
CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0
dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZp
ZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0K
IAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJW
aWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFu
Y2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChM
T1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVj
dXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRv
OgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVj
dXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJf
cykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIx
NDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVu
dCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0
aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRl
eHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyAr
NDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5k
ZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29t
bWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJW
aWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBA
IC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtu
b3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9z
KS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVy
czo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApA
QCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElV
bmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxl
dGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYu
LjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29y
a2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQ
cml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3Jr
ZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtl
cnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJz
UHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNjZDc0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTA0LDcgKzEx
MDQsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGlj
IFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBT
dHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoT3JV
cmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQ
YXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRo
W19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFs
bGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMTE1LDcgKzEx
MTUsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9y
VXJsKQogCiAgICAgU3RyaW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAKLSAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAgICAgLy8gRmluZCB0
aGUgbGF5b3V0IHRlc3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAgIHNpemVfdCBsb2Nh
dGlvbiA9IHBhdGhUb0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5
Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NU
aHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEo
MXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFt
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEo
M3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VS
VF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAg
QVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Ny
b3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkg
ZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1
bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElM
RVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRl
eCBmZmJhMDBiODAyMWEuLmU4MDcwNzRmNGNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVT
VChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lm
IFVTRShHTElCKQogVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2Vi
S2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpLzEwLjAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJL
aXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
KSAoPC0gRW1wdHkgY29tbWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5e
X2B8fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9r
ZW4gY2hhcmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVY
UEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJL
aXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkvMTAuMCBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMg
KE1vemlsbGE7IGxpa2UgR2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAo
PC0gRW1wdHkgY29tbWVudCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0u
Xl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMg
dG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVz
cGFjZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFp
bGluZyBuZXdsaW5lKVxuIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJt
aW5hdGVkIGNvbW1lbnQiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFy
YWN0ZXIpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0
b2tlbikiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
LzEyMyAobWlzc2luZyBwcm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOwor
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJh
aWxpbmcgd2hpdGVzcGFjZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5l
d2xpbmUpXG4iX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5h
dGVkIGNvbW1lbnQiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hh
cmFjdGVyKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWly
IGluIHRva2VuKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IGIwMTEyOGIyNmIxYy4uMDdhNDVlMGVmNDE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMzY0LDcgKzM2NCw3
IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUlzQ29udGlndW91cykK
IHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5
c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRB
bGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1
ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0
b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iX3MsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZh
bHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIs
IHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRl
ci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRv
cik7CkBAIC00NzcsMzIgKzQ3NywzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgYXV0byBjaGVjayA9IFtdKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3Rv
cjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQi
LCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIl9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tD
aHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xl
YXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFy
YXRvcltdID0geyAiVGhpIiwgInMgaSIsICJzIHRoZSBtb3N0IHJpIiwgImRpIiwgImN1bG91cyBo
aSIsICJzdG9yeSB0aGVyZSBpIiwgInMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImkiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIsICJpIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hl
Y2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIo
KTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFy
YXRvcltdID0geyAiVGgiLCAiICIsICIgdGhlIG1vc3QgcmlkaWN1bG91cyBoIiwgInRvcnkgdGhl
cmUgIiwgIi4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVy
LCAiaXMiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
cyJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRD
aHVua3MyV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRT
ZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaXMiLCAiIGlz
IiwgIiB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpcyIsICJ0b3J5IHRoZXJlIGlzIiwgIi4iIH07Ci0g
ICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiLCB0cnVlKTsK
KyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyJfcywgdHJ1
ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVu
a3MyV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3Ip
KSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoaXMgaXMgdGhlIG1vc3Qg
cmlkaWN1bG91cyBoIiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNo
dW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tD
aHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MzV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xl
YXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFy
YXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3QiLCAib3J5IHRoZXJl
IGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
c3QiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpc3QiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3Ms
IGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNX
aXRoU2VwYXJhdG9yKSkpOwogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwpAQCAtNTU3LDEy
ICs1NTcsMTIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJ
dGVyYXRvcikKICAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBjb25zdCBjaGFyKiBj
b25zdCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIiIgfTsKICAgICAgICAg
c3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5r
cywgc2hhcmVkQnVmZmVyLCAiZG9nIik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywg
c2hhcmVkQnVmZmVyLCAiZG9nIl9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3Mo
Y2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3Rl
ZENodW5rc1dpdGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcltdID0g
eyAiZG9nIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImRvZyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZl
ciwgImRvZyJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5r
cywgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NX
aXRoU2VwYXJhdG9yKSkpOwogICAgIH0KIApAQCAtNTcyLDEyICs1NzIsMTIgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKICAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dp
dGhvdXRTZXBhcmF0b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzICIsICIiLCAiIiwgIiIsICIi
IH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwotICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIpOworICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5r
cy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzIGNhdCIsICJjYXQiLCAiY2F0IiwgImNh
dCIsICJjYXQiIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVy
LCAiY2F0IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiY2F0Il9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1
bmtzLCBleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5r
c1dpdGhTZXBhcmF0b3IpKSk7CiAgICAgfQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggNWY5MjUzMjc5
MWE0Li4yZGQ3ZTRhZTdhMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFz
Q2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJp
bmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcg
dWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoIFN0cmluZyB7IHVybCB9KSk7
CiAKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOwogICAgIEVY
UEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC00NSw3ICs0NSw3IEBA
IHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhj
b25zdCBjaGFyKiB1cmwpCiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Zp
cmVmb3hCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmlu
ZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1
YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwog
CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC01Niw3ICs1Niw3IEBA
IHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmso
Y29uc3QgY2hhciogdXJsKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNN
YWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcg
PSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFT
dHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAog
ICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CiAgICAgRVhQ
RUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwpAQCAtNzIsMTQgKzcyLDE0
IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmso
Y29uc3QgY2hhciogdXJsKQogLy8gdGhhdCB0aGUgc3RhbmRhcmQgdXNlciBhZ2VudCBzaG91bGQg
YmUgdXNlZC4pCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNFbXB0eVF1aXJr
KGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJB
Z2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKICAgICBFWFBFQ1RfRkFMU0Uo
dWFTdHJpbmcuaXNOdWxsKCkpOwogfQogCiBURVNUKFVzZXJBZ2VudFRlc3QsIFF1aXJrcykKIHsK
ICAgICAvLyBBIHNpdGUgd2l0aCBubyBxdWlya3Mgc2hvdWxkIHJldHVybiBhIG51bGwgU3RyaW5n
LgotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0s
ICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5k
YXJkVXNlckFnZW50Rm9yVVJMKFVSTCgiaHR0cDovL3d3dy53ZWJraXQub3JnLyJfcykpOwogICAg
IEVYUEVDVF9UUlVFKHVhU3RyaW5nLmlzTnVsbCgpKTsKIAogICAgIGFzc2VydFVzZXJBZ2VudEZv
clVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3R5cGVraXQuY29tLyIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRl
eCAwZDBiMDA3ZjY0ZWQuLjY0MzhmMWNhNmFiMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTY0LDMwICs2NCwzMCBAQCBw
cm90ZWN0ZWQ6CiAKIFRFU1RfRihDdXJsQ29va2llcywgUmVqZWN0VGFpbG1hdGNoRmFpbHVyZURv
bWFpbikKIHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwg
dXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZG9tYWlu
IG1hdGNoCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwg
ImZvbz1iYXI7IERvbWFpbj1leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspKTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAi
Zm9vPWJhcjsgRG9tYWluPWV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3
b3JrKSk7CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwotICAgIEVYUEVDVF9U
UlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4
YW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9U
UlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4
YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CiAgICAgLy8gZmFp
bHVyZTogc3BlY2lmaWMgc3ViIGRvbWFpbgotICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+
c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSIsIENv
b2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVK
YXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj13d3cuZXhhbXBsZS5jb20i
X3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBmYWlsdXJlOiBkaWZm
ZXJlbnQgZG9tYWluCi0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJs
LCB1cmwsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmws
IHVybCwgImZvbz1iYXI7IERvbWFpbj1zYW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNl
OjpOZXR3b3JrKSk7CiB9CiAKIFRFU1RfRihDdXJsQ29va2llcywgVGVzdEh0dHBPbmx5Q2FzZSkK
IHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwgdXJsIHsg
Imh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZnJvbSBuZXR3b3Jr
Ci0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1i
YXI7IEh0dHBPbmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVD
VF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25s
eSJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogICAgIC8vIHN1Y2Nlc3M6IHdp
bGRjYXJkIG9mIGRvbWFpbnMKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2ll
KHVybCwgdXJsLCAiYmluZ289Ym9uZ287IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7
CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImJpbmdv
PWJvbmdvOyJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAgICAgLy8gZmFpbHVy
ZTogZm9vIGlzIGFscmVhZHkgc3RvcmVkIGFzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1f
Y29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyIsIENvb2tpZUphckRCOjpT
b3VyY2U6OlNjcmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2ll
KHVybCwgdXJsLCAiZm9vPWJhcjsiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwog
ICAgIC8vIGZhaWx1cmU6IGluY29uc2lzdGVudC4gU291cmNlIGlzIFNjcmlwdCwgYnV0IGF0dHJp
YnV0ZSBzYXlzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29r
aWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSIsIENvb2tpZUphckRCOjpTb3VyY2U6OlNj
cmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJs
LCAiZm9vPWJhcjsgSHR0cE9ubHkiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5kZGMxODVkOTZiYzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJp
dmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lS
ZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNX
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsy
NjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0
PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VU
eXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDog
Ym9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0
ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0g
ICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqczsKICAgICBj
b25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9u
c2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwi
c3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7
IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0g
fSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9
fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0
KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikK
ICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBj
b25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBj
b25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwog
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdl
YlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAg
c3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQp
CiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMg
cmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihb
JzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6
ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9
IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVz
dElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAg
LTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVz
IH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0
MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVf
Q19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5
ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3Njcmlw
dD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciog
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYu
aW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJu
YWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5
UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAg
LTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQg
cmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBw
IGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQw
MjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERl
dmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Np
b25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50Iiwg
cmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMg
PSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIs
MTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3Jp
ZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcu
MC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7
Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9D
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0
bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAog
VEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1h
aW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIs
IG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIy
KHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJh
bWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdh
NWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVu
ZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQog
ewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092
ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJj
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRp
bmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6
Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZh
Y3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRB
dFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIq
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAo
ZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIg
cmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93
c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFp
bi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcg
KzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3Qg
dGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5
NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAg
ICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1h
aW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250
ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNl
Lmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNl
Lmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9z
LCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdp
bi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAg
ICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5
LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09O
VGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsg
ImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAg
ICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUt
b3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2Vi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYs
NyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNo
KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
LyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAg
fSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNl
c3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1MWZlLi4yZjE5NTJjMjk4OWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAg
ICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdl
ID0gQ1N0cmluZygpOwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdCht
X3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdDYWxs
YmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3Np
bmdDb250ZXh0Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2lu
Z0NvbnRleHQiX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7
CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElE
KTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOwpAQCAt
MjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3SW5XaW5kb3dX
YXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0geyB9OwogICAgICAgICBhdXRv
IHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6
OndpbmRvdyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0luV2luZG93Q2FsbGJhY2spLCB0aGlz
KTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIs
ICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0iKTsKKyAgICAgICAgc2VuZENvbW1h
bmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgIntcInByZXNlbnRhdGlvbkhp
bnRcIjpcIldpbmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
LmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwg
c2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRlV2ViVmlld0luV2luZG93
V2FzQ2FsbGVkKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRl
V2ViVmlld0luVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgICAgIG1fbWVzc2FnZSA9IHsgfTsK
ICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9zZXNzaW9uLCAiY3Jl
YXRlLXdlYi12aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdJblRhYkNhbGxiYWNr
KSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0Nv
bnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFiXCJ9Iik7CisgICAgICAgIHNlbmRD
b21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MsICJ7XCJwcmVzZW50YXRp
b25IaW50XCI6XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24s
IHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdJblRhYldh
c0NhbGxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFNTTC5jcHAKaW5kZXggNTFjODE1MWM5MGFhLi4wNTQwNTUzN2E3NTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKQEAgLTIzMiw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR19PQkpFQ1QoY2VydGlmaWNhdGUpKTsKICAgICAgICAgbV9jZXJ0aWZpY2F0ZSA9IGNl
cnRpZmljYXRlOwogICAgICAgICBtX3Rsc0Vycm9ycyA9IHRsc0Vycm9yczsKLSAgICAgICAgbV9m
YWlsaW5nVVJMID0gVVJMKHsgfSwgZmFpbGluZ1VSSSk7CisgICAgICAgIG1fZmFpbGluZ1VSTCA9
IFVSTChTdHJpbmcgeyBmYWlsaW5nVVJJIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RV
SUNsaWVudC5jcHAKaW5kZXggMjg0ZjgwNGI2NDEwLi5iN2MxY2MxYzVjNTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3Bw
CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgd2luZG93UHJv
cGVydGllc05vdGlmeUNhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMsIFVJ
Q2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIHRlc3QtPm1fd2luZG93UHJvcGVydGll
c0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJhbVNwZWMpKTsKKyAgICAgICAg
dGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5hZGQoU3RyaW5nIHsgZ19wYXJhbV9zcGVj
X2dldF9uYW1lKHBhcmFtU3BlYykgfSk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYktpdFdlYlZp
ZXcqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZp
Z2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uLCBVSUNsaWVudFRlc3QqIHRlc3QpCkBAIC03NjAsMTEg
Kzc2MCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMoVUlDbGll
bnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKGh0bWxTdHJp
bmcuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMo
KTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcm9wZXJ0aWVzQ2hhbmdlZFtdID0geworICAg
IHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb3BlcnRpZXNDaGFuZ2VkW10gPSB7CiAj
aWYgUExBVEZPUk0oR1RLKQotICAgICAgICAiZ2VvbWV0cnkiLAorICAgICAgICAiZ2VvbWV0cnki
X3MsCiAjZW5kaWYKLSAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCAibWVudWJhci12aXNp
YmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXItdmlzaWJsZSIsICJzY3JvbGxiYXJz
LXZpc2libGUiCisgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIl9zLCAibWVudWJhci12aXNp
YmxlIl9zLCAic3RhdHVzYmFyLXZpc2libGUiX3MsICJ0b29sYmFyLXZpc2libGUiX3MsICJzY3Jv
bGxiYXJzLXZpc2libGUiX3MKICAgICB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgR19O
X0VMRU1FTlRTKHByb3BlcnRpZXNDaGFuZ2VkKTsgKytpKQogICAgICAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29udGFpbnMocHJvcGVydGllc0NoYW5n
ZWRbaV0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDQwZWFlYjdiZjI3YS4uYzU2OTAyYTIy
OTcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViRXh0ZW5zaW9uUGFnZUlEKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIC8vIFJlZ2lzdGVyIGEgY3VzdG9tIFVSSSBzY2hlbWUgdG8gdGVzdCBoaXN0b3J5IG5h
dmlnYXRpb24uCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUodGVz
dC0+bV93ZWJDb250ZXh0LmdldCgpLCAiZm9vIiwKICAgICAgICAgW10oV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIpIHsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBVUkwo
eyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOworICAgICAg
ICAgICAgVVJMIHVybCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkgfSk7CiAgICAgICAgICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5w
dXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpKTsKICAgICAg
ICAgICAgIGNoYXIqIGh0bWwgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxoZWFkPjx0aXRsZT4l
czwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgdXJsLmhvc3QoKSA9PSAiaG9z
dDUiID8gIlRpdGxlNSIgOiAiVGl0bGU2Iik7CiAgICAgICAgICAgICBnX21lbW9yeV9pbnB1dF9z
dHJlYW1fYWRkX2RhdGEoR19NRU1PUllfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtLmdldCgpKSwg
aHRtbCwgc3RybGVuKGh0bWwpLCBnX2ZyZWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAppbmRleCBmMGJkODY2
NWY3MGEuLjI4MDM0MTE0MGYwMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBXZWJLaXRUZXN0U2VydmVyOjpydW4oU291cFNlcnZlckNhbGxiYWNrIHNlcnZlckNhbGxi
YWNrKQogCiB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OmFkZFdlYlNvY2tldEhhbmRsZXIoU291cFNl
cnZlcldlYnNvY2tldENhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAg
ICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJMLCAiL3dlYnNvY2tldC8iKTsKKyAg
ICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJMLCAiL3dlYnNvY2tldC8iX3MpOwog
ICAgIG1fYmFzZVdlYlNvY2tldFVSTC5zZXRQcm90b2NvbChtX2Jhc2VXZWJTb2NrZXRVUkwucHJv
dG9jb2xJcygiaHR0cCIpID8gIndzIiA6ICJ3c3MiKTsKIAogICAgIGlmIChtX3F1ZXVlKSB7CkBA
IC0xMDEsMTIgKzEwMSwxMiBAQCBDU3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6OmdldFdlYlNvY2tl
dFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKIHsKICAgICBnX2Fzc2VydF9mYWxz
ZShtX2Jhc2VXZWJTb2NrZXRVUkwuaXNOdWxsKCkpOwogICAgIGdfYXNzZXJ0X3RydWUocGF0aCAm
JiAqcGF0aCA9PSAnLycpOwotICAgIHJldHVybiBVUkwobV9iYXNlV2ViU29ja2V0VVJMLCBwYXRo
ICsgMSkuc3RyaW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCisgICAg
cmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIFN0cmluZyB7IHBhdGggKyAxIH0pLnN0cmlu
ZygpLnV0ZjgoKTsgLy8gSWdub3JlIHRoZSBsZWFkaW5nIHNsYXNoLgogfQogCiBDU3RyaW5nIFdl
YktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKIHsK
LSAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgcGF0aCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
dHVybiBVUkwobV9iYXNlVVJMLCBTdHJpbmcgeyBwYXRoIH0pLnN0cmluZygpLnV0ZjgoKTsKIH0K
IAogdW5zaWduZWQgV2ViS2l0VGVzdFNlcnZlcjo6cG9ydCgpIGNvbnN0CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2
OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJy
ZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0
Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1h
a2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRp
b25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJ
Il9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBS
ZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNz
Pgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
K3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2
aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAi
VGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
IHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRl
bnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2
aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAg
SVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7
CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBh
bmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2Vu
dF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29u
dGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAg
IHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2Vy
IGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRv
IFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0
OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNr
dG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAg
ICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcAppbmRl
eCA4Y2QyMmU0ZDM3MmEuLjg5NWYyZTY5OTAzNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGku
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcApAQCAtMzk4LDE4ICszOTgsMTggQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmUKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwog
ICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWFBsYWNlaG9sZGVyVmFsdWUiKQotICAgICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicGxhY2Vob2xkZXItdGV4dCIp
KS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0
dHJpYnV0ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0Il9zKSkubGVha1JlZigpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEludmFsaWQiKSB7CiAgICAgICAgIGF1dG8gdGV4dEF0dHJpYnV0
ZXMgPSBtX2VsZW1lbnQtPnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0
ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxpZCIpOworICAgICAgICBhdXRvIHZh
bHVlID0gdGV4dEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5nZXQoImludmFsaWQiX3MpOwogICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdmFsdWUgPSBjaGVja0VsZW1lbnRT
dGF0ZShtX2VsZW1lbnQuZ2V0KCksIFdlYkNvcmU6OkF0c3BpOjpTdGF0ZTo6SW52YWxpZEVudHJ5
KSA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgICAgICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVudFN0
YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50cnkp
ID8gInRydWUiX3MgOiAiZmFsc2UiX3M7CiAgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6
dHJ5Q3JlYXRlKHZhbHVlKS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEFSSUFMaXZlIikKLSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUoYXR0cmlidXRlcy5nZXQoImxpdmUiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSJfcykpLmxlYWtSZWYo
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVsZXZhbnQi
KSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShh
dHRyaWJ1dGVzLmdldCgicmVsZXZhbnQiX3MpKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIH0KQEAgLTQyMCwyMSArNDIw
LDIxIEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1
ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVzLmdldCgic2V0c2l6ZSIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzLmdldCgic2V0c2l6ZSJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInBv
c2luc2V0IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJwb3Np
bnNldCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29s
dW1uQ291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGNvdW50IikudG9E
b3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xjb3VudCJfcykudG9E
b3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93Q291bnQiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50IikudG9Eb3VibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3djb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBp
ZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uSW5kZXgiKQotICAgICAgICByZXR1cm4g
YXR0cmlidXRlcy5nZXQoImNvbGluZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuZ2V0KCJjb2xpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBUm93SW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQo
InJvd2luZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJy
b3dpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
Q29sdW1uU3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiIpLnRv
RG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiJfcykudG9E
b3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93U3BhbiIpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiJfcykudG9Eb3VibGUoKTsKIAogICAgIHJl
dHVybiAwOwogfQpAQCAtNDQyLDggKzQ0Miw4IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFs
dWUoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAg
YXV0byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCIpOwotICAg
IHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVl
IDogImZhbHNlIikubGVha1JlZigpOworICAgIGF1dG8gdmFsdWUgPSBtX2VsZW1lbnQtPmF0dHJp
YnV0ZXMoKS5nZXQoImN1cnJlbnQiX3MpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZhbHNlIl9zKS5sZWFrUmVmKCk7CiB9
CiAKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CkBAIC01MTQsNyArNTE0LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEludGVyZmFjZVRh
YmxlQ2VsbCIpCiAgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmludGVyZmFjZXMoKS5jb250YWlu
cyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVyZmFjZTo6VGFibGVDZWxs
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0
dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiYXRvbWljIikgPT0gInRydWUiOworICAg
ICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiX3MpID09ICJ0
cnVlIjsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpOwotICAgIFN0cmluZyBpc1JlYWRPbmx5ID0gYXR0cmlidXRl
cy5nZXQoInJlYWRvbmx5Iik7CisgICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1dGVzLmdl
dCgicmVhZG9ubHkiX3MpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBpc1JlYWRPbmx5ID09ICJ0cnVlIiA/IGZhbHNlIDogdHJ1ZTsKIApAQCAtNTczLDE3
ICs1NzMsMTcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBv
cnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsK
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRzaXplIik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzLmNvbnRhaW5zKCJzZXRzaXplIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhB
UklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicG9zaW5z
ZXQiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInBvc2luc2V0Il9zKTsK
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBTGl2ZSIpIHsKLSAgICAgICAgYXV0byB2
YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIik7CisgICAgICAgIGF1dG8gdmFsdWUgPSBhdHRy
aWJ1dGVzLmdldCgibGl2ZSJfcyk7CiAgICAgICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYm
IHZhbHVlICE9ICJvZmYiOwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
UmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVsZXZhbnQi
KTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInJlbGV2YW50Il9zKTsKICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuY29udGFpbnMoImF0b21pYyIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5j
b250YWlucygiYXRvbWljIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhFbGVtZW50
QnVzeSIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01OTgsMjcgKzU5OCwyNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzKCkKIHN0YXRpYyBTdHJpbmcgeG1sUm9sZVZhbHVlU3RyaW5nKGNvbnN0
IFN0cmluZyYgeG1sUm9sZXMpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiByZWdpb25Sb2xlcyA9IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KHsKLSAgICAgICAgImRvYy1hY2tub3ds
ZWRnbWVudHMiLAotICAgICAgICAiZG9jLWFmdGVyd29yZCIsCi0gICAgICAgICJkb2MtYXBwZW5k
aXgiLAotICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSIsCi0gICAgICAgICJkb2MtY2hhcHRlciIs
Ci0gICAgICAgICJkb2MtY29uY2x1c2lvbiIsCi0gICAgICAgICJkb2MtY3JlZGl0cyIsCi0gICAg
ICAgICJkb2MtZW5kbm90ZXMiLAotICAgICAgICAiZG9jLWVwaWxvZ3VlIiwKLSAgICAgICAgImRv
Yy1lcnJhdGEiLAotICAgICAgICAiZG9jLWZvcmV3b3JkIiwKLSAgICAgICAgImRvYy1nbG9zc2Fy
eSIsCi0gICAgICAgICJkb2MtZ2xvc3NyZWYiLAotICAgICAgICAiZG9jLWluZGV4IiwKLSAgICAg
ICAgImRvYy1pbnRyb2R1Y3Rpb24iLAotICAgICAgICAiZG9jLXBhZ2VsaXN0IiwKLSAgICAgICAg
ImRvYy1wYXJ0IiwKLSAgICAgICAgImRvYy1wcmVmYWNlIiwKLSAgICAgICAgImRvYy1wcm9sb2d1
ZSIsCi0gICAgICAgICJkb2MtdG9jIiwKLSAgICAgICAgInJlZ2lvbiIKKyAgICAgICAgImRvYy1h
Y2tub3dsZWRnbWVudHMiX3MsCisgICAgICAgICJkb2MtYWZ0ZXJ3b3JkIl9zLAorICAgICAgICAi
ZG9jLWFwcGVuZGl4Il9zLAorICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSJfcywKKyAgICAgICAg
ImRvYy1jaGFwdGVyIl9zLAorICAgICAgICAiZG9jLWNvbmNsdXNpb24iX3MsCisgICAgICAgICJk
b2MtY3JlZGl0cyJfcywKKyAgICAgICAgImRvYy1lbmRub3RlcyJfcywKKyAgICAgICAgImRvYy1l
cGlsb2d1ZSJfcywKKyAgICAgICAgImRvYy1lcnJhdGEiX3MsCisgICAgICAgICJkb2MtZm9yZXdv
cmQiX3MsCisgICAgICAgICJkb2MtZ2xvc3NhcnkiX3MsCisgICAgICAgICJkb2MtZ2xvc3NyZWYi
X3MsCisgICAgICAgICJkb2MtaW5kZXgiX3MsCisgICAgICAgICJkb2MtaW50cm9kdWN0aW9uIl9z
LAorICAgICAgICAiZG9jLXBhZ2VsaXN0Il9zLAorICAgICAgICAiZG9jLXBhcnQiX3MsCisgICAg
ICAgICJkb2MtcHJlZmFjZSJfcywKKyAgICAgICAgImRvYy1wcm9sb2d1ZSJfcywKKyAgICAgICAg
ImRvYy10b2MiX3MsCisgICAgICAgICJyZWdpb24iX3MKICAgICB9KTsKIAogICAgIGlmIChyZWdp
b25Sb2xlcy0+Y29udGFpbnMoeG1sUm9sZXMpKQpAQCAtNzYyLDcgKzc2Miw3IEBAIHN0YXRpYyBT
dHJpbmcgcm9sZVZhbHVlVG9TdHJpbmcodW5zaWduZWQgcm9sZVZhbHVlKQogICAgIGNhc2UgV2Vi
Q29yZTo6QXRzcGk6OlJvbGU6OlNjcm9sbEJhcjoKICAgICAgICAgcmV0dXJuICJBWFNjcm9sbEJh
ciJfczsKICAgICBjYXNlIFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpTY3JvbGxQYW5lOgotICAgICAg
ICByZXR1cm4gIkFYU2Nyb2xsQXJlYSI7CisgICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIl9z
OwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlY3Rpb246CiAgICAgICAgIHJldHVy
biAiQVhTZWN0aW9uIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlcGFyYXRv
cjoKQEAgLTgxNyw3ICs4MTcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm9sZSgpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKICAgICBhdXRvIHJvbGVWYWx1ZSA9IG1fZWxlbWVudC0+cm9sZSgpOwotICAgIGF1dG8g
cm9sZVZhbHVlU3RyaW5nID0gcm9sZVZhbHVlID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpMYW5k
bWFyayA/IHhtbFJvbGVWYWx1ZVN0cmluZyhtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInht
bC1yb2xlcyIpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CisgICAgYXV0byByb2xl
VmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkxhbmRtYXJr
ID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgieG1sLXJv
bGVzIl9zKSkgOiByb2xlVmFsdWVUb1N0cmluZyhyb2xlVmFsdWUpOwogICAgIGlmIChyb2xlVmFs
dWVTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtODMyLDE0ICs4MzIsMTQgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigp
CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIHJvbGVE
ZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9u
Iik7CisgICAgYXV0byByb2xlRGVzY3JpcHRpb24gPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5n
ZXQoInJvbGVkZXNjcmlwdGlvbiJfcyk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobWFrZVN0cmluZygiQVhSb2xlRGVzY3JpcHRpb246ICIsIHJvbGVEZXNjcmlwdGlvbikp
LmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGNvbXB1dGVkUm9sZSA9IG1fZWxlbWVudC0+YXR0cmli
dXRlcygpLmdldCgiY29tcHV0ZWQtcm9sZSIpOworICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIl9zKTsKICAgICBpZiAoY29t
cHV0ZWRSb2xlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAogCiAgICAgLy8gQ29uc2lkZXIgaGVh
ZGluZ3MgYXMgYW4gc3BlY2lhbCBjYXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBpbnQgdmFsdWUuCiAg
ICAgaWYgKG1fZWxlbWVudC0+cm9sZSgpID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpIZWFkaW5n
KQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCIpLnRv
RG91YmxlKCk7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxl
dmVsIl9zKS50b0RvdWJsZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05OTksNyArOTk5LDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVl
RGVzY3JpcHRpb24oKQogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAg
ICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgYXV0byB2
YWx1ZSA9IG1ha2VTdHJpbmcoIkFYVmFsdWVEZXNjcmlwdGlvbjogIiwgYXR0cmlidXRlcy5nZXQo
InZhbHVldGV4dCIpKTsKKyAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2Ny
aXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0Il9zKSk7CiAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKIH0KIApAQCAtMTA3Niw3
ICsxMDc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUo
KSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkg
Y29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8g
bGV2ZWwgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIik7CisgICAgYXV0byBs
ZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3MpOwogICAgIGlmIChs
ZXZlbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDkxLDEzICsxMDkxLDEz
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVh
a0FzKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0
CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJncmFiYmVkIikgPT0gInRydWUiOworICAgIHJldHVy
biBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiX3MpID09ICJ0cnVlIjsKIH0K
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFE
cm9wRWZmZWN0cygpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUo
KTsKLSAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJk
cm9wZWZmZWN0Iik7CisgICAgYXV0byBkcm9wRWZmZWN0cyA9IG1fZWxlbWVudC0+YXR0cmlidXRl
cygpLmdldCgiZHJvcGVmZmVjdCJfcyk7CiAgICAgaWYgKGRyb3BFZmZlY3RzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7
CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZHJvcEVmZmVjdHMpLmxlYWtS
ZWYoKTsKQEAgLTE0MjksNyArMTQyOSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKICAgICAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIikpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50
QXR0cmlidXRlKCJFbmNvZGluZyJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKQEAgLTE0Mzgs
NyArMTQzOCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpkb2N1bWVudFVSSSgpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKG51bGxwdHIsIDApOwogCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUo
KTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3Vt
ZW50QXR0cmlidXRlKCJVUkkiKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSJfcykpLmxlYWtS
ZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnVybCgpCmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5j
cHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKaW5kZXggMTIwNGNiNTI4
YmM2Li5jZjEzMWFlYmEwYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9tYWluLmNwcAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKQEAg
LTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQogICAgIENv
bXBhY3RQb2ludGVyVHVwbGU8U3RyaW5nKiwgdWludDhfdD4gZXhhbXBsZUNvbXBhY3RQb2ludGVy
VHVwbGVNYXhUeXBlVmFsdWUgeyAmYW44Qml0U3RyaW5nLCAyNTUgfTsKICAgICBDb21wYWN0UG9p
bnRlclR1cGxlPFN0cmluZyosIGJvb2w+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlU2ltcGxl
Qm9vbCB7ICZhbjhCaXRTdHJpbmcsIHRydWUgfTsKICAgICAKLSAgICBVUkwgYVVSTCh7IH0sICJo
dHRwczovL3d3dy5leGFtcGxlLmNvbSIpOworICAgIFVSTCBhVVJMKCJodHRwczovL3d3dy5leGFt
cGxlLmNvbSJfcyk7CiAKICAgICBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7CiB9
Cg==
</data>
<flag name="commit-queue"
          id="484849"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456527</attachid>
            <date>2022-04-03 20:15:17 -0700</date>
            <delta_ts>2022-04-03 21:25:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>238693_make_String_ASCIILiteral_constructor_explicit_final.patch</filename>
            <type>text/plain</type>
            <size>363677</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA2
NThlMDRiZjVhZDcuLjBkMzU4Mzg1MzJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcApAQCAtOTcxLDcgKzk3MSw3IEBAIEpTQ0NoZWNrU3ludGF4
UmVzdWx0IGpzY19jb250ZXh0X2NoZWNrX3N5bnRheChKU0NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBjaGFyKiBjCiAgICAgSlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKIAotICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBV
UkwoeyB9LCB1cmkpIDogVVJMKCk7CisgICAgVVJMIHNvdXJjZVVSTCA9IHVyaSA/IFVSTChTdHJp
bmcgeyB1cmkgfSkgOiBVUkwoKTsKICAgICBKU0M6OlNvdXJjZUNvZGUgc291cmNlID0gSlNDOjpt
YWtlU291cmNlKFN0cmluZzo6ZnJvbVVURjgoY29kZSwgbGVuZ3RoIDwgMCA/IHN0cmxlbihjb2Rl
KSA6IGxlbmd0aCksIEpTQzo6U291cmNlT3JpZ2luIHsgc291cmNlVVJMIH0sCiAgICAgICAgIHNv
dXJjZVVSTC5zdHJpbmcoKSAsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXIoKSkpOwogICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1v
dGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcAppbmRl
eCA1ZTIzNmEyYzRlMDIuLmU3YzAxOWRmYWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90
ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3Bl
Y3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0
byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2Ug
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nl
ck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAg
ICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2Fw
YWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJi
cm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1w
dHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywg
Y2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7
CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0
cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJp
bmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxh
clZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRl
eCA1MGIyZGZmYmMxZjcuLmE3NDY2Yzk3MjRmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxXaXRoU3RhY2tTaXplLCBTVVBQ
UkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJMRVIpCiAgICAgVU5VU0VEX1BB
UkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIik7CisgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZv
ciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVSKQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNi4uMzlmMmUyY2EyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmNwcApAQCAtMjg2LDE2ICsyODYsMTMgQEAgYm9vbCBhcHBlbmRGaWxlQ29udGVu
dHNUb0ZpbGVIYW5kbGUoY29uc3QgU3RyaW5nJiBwYXRoLCBQbGF0Zm9ybUZpbGVIYW5kbGUmIHRh
cmcKIAogYm9vbCBmaWxlc0hhdmVTYW1lVm9sdW1lKGNvbnN0IFN0cmluZyYgZmlsZUEsIGNvbnN0
IFN0cmluZyYgZmlsZUIpCiB7Ci0gICAgYXV0byBmc1JlcEZpbGVBID0gZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGZpbGVBKTsKLSAgICBhdXRvIGZzUmVwRmlsZUIgPSBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oZmlsZUIpOwotCi0gICAgaWYgKGZzUmVwRmlsZUEuaXNOdWxsKCkgfHwgZnNSZXBG
aWxlQi5pc051bGwoKSkKKyAgICBpZiAoZmlsZUEuaXNOdWxsKCkgfHwgZmlsZUIuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAKLSAg
ICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUEpOwotICAgIGF1dG8g
ZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBGaWxlQik7CisgICAgYXV0byBmaWxlQURl
diA9IGdldEZpbGVEZXZpY2VJZChmaWxlQSk7CisgICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVE
ZXZpY2VJZChmaWxlQik7CiAKICAgICBpZiAoZmlsZUFEZXYgJiYgZmlsZUJEZXYpCiAgICAgICAg
IHJlc3VsdCA9IChmaWxlQURldiA9PSBmaWxlQkRldik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9GaWxlU3lzdGVtLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKaW5kZXggMjEx
ODNhYTdlYjJmLi5iY2FlMTA2YjNlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUs
NyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcm
KTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsK
IFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3Bh
Y2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50
MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJ
VkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5n
Jik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1i
b2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGlj
TGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBB
cmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVT
eXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjYuLjg1MTAwNDA2M2VjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsyNDcsMTIgQEAgaW50IHJl
YWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lkKiBkYXRhLCBpbnQgbGVu
Z3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxl
RGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0g
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVmUHRyPEdGaWxlPiBmaWxl
ID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRhdGEoKSkpOwogICAgIEdS
ZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2ZpbGVfcXVlcnlfZmlsZXN5
c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5JWF9ERVZJQ0UsIG51bGxw
dHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0Zp
bGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjLi45MzMyNDUwZmZiZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcApAQCAtMjQxLDggKzI0MSwxMiBA
QCBlbmQ6CiB9CiAjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQogCi1zdGQ6Om9wdGlvbmFsPGlu
dDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlv
bmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAg
YXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZz
RmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIHN0cnVj
dCBzdGF0IGZpbGVTdGF0OwogICAgIGlmIChzdGF0KGZzRmlsZS5kYXRhKCksICZmaWxlU3RhdCkg
PT0gLTEpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
aAppbmRleCAyZTEzMTIxNzBiOGYuLjkyZGRlYTEwMDQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCkBAIC04MCw5ICs4MCwxNCBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0
cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJv
bSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdp
dGggTGF0aW4tMSBkYXRhLCBmcm9tIGEgbnVsbC10ZXJtaW5hdGVkIHNvdXJjZS4KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzKTsKLSAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOworCisgICAgLy8g
VGhpcyBjb25zdHJ1Y3RvciBpcyBleHBsaWNpdCB0byBlbmNvdXJhZ2UgZGV2ZWxvcGVycyB0byB1
c2UgQVNDSUlMaXRlcmFsIGFuZCB0aGUgIiJfcyBzdWZmaXggd2hlbiBwb3NzaWJsZSwKKyAgICAv
LyBhcyB0aGUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgaXMgbW9yZSBlZmZpY2llbnQuIEFsc28gbm90
ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgdHJlYXRzIGlucHV0IGFzIExhdGluLTEuCisgICAgLy8g
RGV2ZWxvcGVycyBvZnRlbiB3YW50IHRvIGNhbGwgU3RyaW5nOjpmcm9tVVRGOCgpIGluc3RlYWQu
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSByZW5hbWUgdGhpcyB0byBmcm9tTGF0
aW4xKCkuCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhjb25zdCBjaGFy
KiBjaGFyYWN0ZXJzKTsKIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyByZWZlcmVuY2luZyBh
biBleGlzdGluZyBTdHJpbmdJbXBsLgogICAgIFN0cmluZyhTdHJpbmdJbXBsJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3VuaXgvTG9nZ2luZ1VuaXguY3BwCmluZGV4IGIwMTJjOGMxY2YzOS4uOThiZjU2NmNlMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcg
bG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RFQlVHIGlzIG5vdCBl
bXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhhdCBtYW55IGxvZyBt
ZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7CiAjZW5kaWYKIAot
ICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0VudiB9OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lz
dGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcAppbmRleCAy
OGQxY2U1ZjZlZTEuLjk3OTE1YTIzODFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4Li5jOTJhNzdhOGMxNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
d2luL0xhbmd1YWdlV2luLmNwcApAQCAtNjMsNyArNjMsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRm
b3JtTGFuZ3VhZ2UoKQogICAgIGlmICghY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWREZWZhdWx0TGFuZ3VhZ2UuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzYzOUxB
TkdOQU1FLCAiZW4iKTsKKyAgICBTdHJpbmcgbGFuZ3VhZ2VOYW1lID0gbG9jYWxlSW5mbyhMT0NB
TEVfU0lTTzYzOUxBTkdOQU1FLCAiZW4iX3MpOwogICAgIFN0cmluZyBjb3VudHJ5TmFtZSA9IGxv
Y2FsZUluZm8oTE9DQUxFX1NJU08zMTY2Q1RSWU5BTUUsIFN0cmluZygpKTsKIAogICAgIGlmIChj
b3VudHJ5TmFtZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5k
cG9pbnQuY3BwCmluZGV4IDFhZTYyMjk4NThmZS4uMjllMjU1NzY0ZWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+PiBmZXRjaERl
c2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcFN0cmluZyhn
c3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgR1NUX1RSQUNF
X09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFtZSwgc2RwU3Ry
aW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRpb25UeXBlKCpk
ZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0dXJuIHsgeyBm
cm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBTdHJpbmcgeyBz
ZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWduYWxpbmdTdGF0
ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAgLTQ1Niw3ICs0
NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3RlTUxpbmVJbmZv
KEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlh
VHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZvck1pZC5zZXQo
U3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9zKSA/IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6
VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9nc3Ry
ZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAgICAgICBpZiAo
c2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBAIC05MjQsNyAr
OTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0
cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2FuZGlkYXRlLmNh
bmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBZGRJ
Y2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSldKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJF
eHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAgICAgICAgICB0
YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlk
YXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50Ojph
ZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKICAgICBh
dXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRpZGF0ZS5jYW5k
aWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRk
SWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFi
bGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAi
RXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAgIHRhc2stPnJ1
bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRp
ZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDg1
LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25E
ZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAgIEdVbmlxdWVQ
dHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9uLT5zZHApKTsK
ICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAgICAgICAgbV9w
ZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdl
dCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBzZHAuZ2V0KCkg
fSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0cmVhbWVyTWVk
aWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlxdWVQdHI8R0Vy
cm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IGVy
cm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8gZXhjID0gRXhj
ZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+
bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9pc0luaXRpYXRv
cikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyRmFpbGVk
KFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3IEBAIHZvaWQg
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAgICAgICAgIGlm
ICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIG1f
cGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1
ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21l
ZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tl
bmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1lclJ0cFRyYW5z
Y2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQuZ2V0KFN0cmlu
ZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlhNDY0ODAuLjMw
ZmVmMGUwMjI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rp
b25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVy
UGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGll
cyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxp
dGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDov
L3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0
ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13
aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7
CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRp
by9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAw
MCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0
eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9
IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBM
aW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5k
KHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRB
cHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1Jh
dGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3Ry
aW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVu
c2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAg
Y2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9y
aWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBh
Y2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAu
bWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNo
ZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNs
b2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAg
ICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZp
ZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9
ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAg
ICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNh
cGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQ
OSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNz
LnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAg
IC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAg
ICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUg
PSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2
ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpA
QCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpk
b0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBl
ZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQog
ewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFu
c3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNj
cmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNw
cAppbmRleCAyNDQ5YWU4NWYxNmQuLmU3NzhmNmQ0ZjBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2
ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC03OSw3ICs3OSw3
IEBAIFN0cmluZyBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCgpCiB7CiAgICAg
R1VuaXF1ZU91dFB0cjxjaGFyPiBtaWQ7CiAgICAgZ19vYmplY3RfZ2V0KG1fcnRjVHJhbnNjZWl2
ZXIuZ2V0KCksICJtaWQiLCAmbWlkLm91dFB0cigpLCBudWxscHRyKTsKLSAgICByZXR1cm4gbWlk
LmdldCgpOworICAgIHJldHVybiBTdHJpbmcgeyBtaWQuZ2V0KCkgfTsKIH0KIAogdm9pZCBHU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3AoKQpAQCAtOTcsNyArOTcsNyBAQCBib29s
IEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcHBlZCgpIGNvbnN0CiBzdGF0aWMg
aW5saW5lIFdBUk5fVU5VU0VEX1JFVFVSTiBFeGNlcHRpb25PcjxHc3RDYXBzKj4gdG9SdHBDb2Rl
Y0NhcGFiaWxpdHkoY29uc3QgUlRDUnRwQ29kZWNDYXBhYmlsaXR5JiBjb2RlYykKIHsKICAgICBp
ZiAoIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoInZpZGVvLyIpICYmICFjb2RlYy5taW1lVHlw
ZS5zdGFydHNXaXRoKCJhdWRpby8iKSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
IH07CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3Is
ICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1pbWVUeXBlIl9zIH07CiAKICAgICBhdXRvIGNv
bXBvbmVudHMgPSBjb2RlYy5taW1lVHlwZS5zcGxpdCgnLycpOwogICAgIGF1dG8qIGNhcHMgPSBn
c3RfY2Fwc19uZXdfc2ltcGxlKCJhcHBsaWNhdGlvbi94LXJ0cCIsICJtZWRpYSIsIEdfVFlQRV9T
VFJJTkcsIGNvbXBvbmVudHNbMF0uYXNjaWkoKS5kYXRhKCksICJlbmNvZGluZy1uYW1lIiwgR19U
WVBFX1NUUklORywgY29tcG9uZW50c1sxXS5hc2NpaSgpLmRhdGEoKSwgbnVsbHB0cik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKaW5kZXggYWFhNDEzN2Qy
YzYwLi5kN2I2MzhhNDMyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0Nv
bGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmlsbFJU
Q1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZQog
ICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShz
dHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMudGltZXN0
YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5n
KHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJl
X2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0cyYgc3Rh
dHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENTdGF0cyhz
dGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0cnVjdHVy
ZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRzLmNvZGVj
SWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKTsKKyAg
ICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhz
dHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBTdHJpbmcg
eyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9OwogCiAg
ICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQoc3RydWN0
dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRib3VuZFJ0
cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAgICAgaWYg
KGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlkOworICAg
ICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAvLyBGSVhN
RQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
V2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZC4uNmExNjM2YzZkZGI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJl
ZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0
YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0
Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdl
KTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4
KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRD
Qml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5n
UGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91
aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAg
ICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJh
bWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlk
Iik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJp
bmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9u
RG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywg
InNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1
ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5Li42NzYxMDE5NzE4MTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cApAQCAtMjc1LDEyICsyNzUsMTIgQEAgYm9vbCBXZWJYUk9wYXF1ZUZyYW1lYnVmZmVyOjpzZXR1
cEZyYW1lYnVmZmVyKCkKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRF
WDg7CiAjZWxpZiBVU0UoT1BFTkdMX0VTKQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVy
cHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsK
LSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNE
ZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9PRVNfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFj
a2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9O
RU5UMTY7CiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfSU5ERVg4OwogI2Vs
c2UKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVpbnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25zKCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBv
cnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5z
dXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9y
bVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5z
aW9ucy5zdXBwb3J0cygiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRv
IGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpE
RVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NPTVBPTkVOVDsKICAgICBhdXRvIHN0ZW5jaWxG
b3JtYXQgPSBHTDo6U1RFTkNJTF9DT01QT05FTlQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVB
ZGFwdGVySW1wbC5jcHAKaW5kZXggMDM5OTM0ZjI5NGVhLi5iZTdmYzRiODZlZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVQWRh
cHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBTdHJp
bmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRlclBy
b3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRhcHRl
ciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRlZEZl
YXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZp
Y2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwv
V2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5Li44Yzk0NzVhZjUwMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9X
ZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQg
RGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9u
OgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2Fn
ZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUo
U3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0
T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGEuLjBkNGQ0NmEwZWQ4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTM2OCw3
ICszNjgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZU1hdGNoZXNUZXh0TmVhclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgY29uc3QgU3RyaW5nJik7
CiAKLSAgICBzdGF0aWMgU3RyaW5nIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUo
QVhOb3RpZmljYXRpb24pOwogCiAgICAgQVhUcmVlRGF0YSB0cmVlRGF0YSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmpl
Y3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaS5jcHAKaW5kZXggYTZiNTExOWJlODJhLi5kYTkyZmQ0MTNmMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNS4uMThiOWQ2ZGM5NDViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEy
IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAg
ICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3Vu
ZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJ
KCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1h
a2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkp
KSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENh
c2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRy
aWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHRE
ZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xl
IiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3Ms
IHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVP
YmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJp
dGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0
cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRp
b25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5l
KCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJf
cyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZp
c2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7
CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0
LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYg
KCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUu
dGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBA
IC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1
dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVk
ZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJ
Zk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgi
anVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0
dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAg
YWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4
IGVlNmZhZDAyMGJjMy4uZDIwM2Y1NzQyYTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
QEAgLTE3NSw4ICsxNzUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OnNldFBhdGgo
U3RyaW5nJiYgcGF0aCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjplbWJlZGRlZChj
b25zdCBjaGFyKiBwYXJlbnRVbmlxdWVOYW1lLCBjb25zdCBjaGFyKiBwYXJlbnRQYXRoKQogewot
ICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IHBhcmVudFVuaXF1ZU5hbWU7Ci0gICAgbV9wYXJlbnRQ
YXRoID0gcGFyZW50UGF0aDsKKyAgICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBTdHJpbmc6OmZyb21V
VEY4KHBhcmVudFVuaXF1ZU5hbWUpOworICAgIG1fcGFyZW50UGF0aCA9IFN0cmluZzo6ZnJvbVVU
RjgocGFyZW50UGF0aCk7CiAgICAgQWNjZXNzaWJpbGl0eUF0c3BpOjpzaW5nbGV0b24oKS5wYXJl
bnRDaGFuZ2VkKCp0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KaW5kZXggYTQ1NjY1MTk2YzVhLi43OWI5MTVm
YmFjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
YXR0YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3Jh
cHBlci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0
Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2Jq
ZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmlj
YXRpb24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAg
ICBzd2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUg
PSAiQVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAg
bmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VP
dmVybGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxl
ZDoKLSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQ
YWdlU2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRl
Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVk
VGV4dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2Ug
QVhMaXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2Vk
IjsKKyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6
CiAgICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENo
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJB
WEN1cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2Vk
OgotICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1l
ID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlm
aWNhdGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlL
aXQgVUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBp
cyBub3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0
aGUgd3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3Rl
bSBXZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBT
dHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmlj
YXRpb24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5v
dGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsK
KyAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5T
U3RyaW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3Rp
ZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlv
bnMgZm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3Jh
cHBlcidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3Jh
cHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07
CisgICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246
bnNOb3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0
VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
aW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3
Ny4uNTM4Yjc4NWQ2OWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5t
bQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJ
QWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAog
ICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9i
amVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3Rp
ZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhP
YmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90
aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3Nl
bGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBD
R1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwog
ICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBv
cy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAg
ICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFt
ZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAog
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5k
IG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFm
NDQyLi42NGI4Y2FlNzY0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdENvbnRyb2xsZXIuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgVmFsdWVPckV4Y2VwdGlvbiBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdv
cmxkLAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAgICBpZiAobV9mcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKS5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMo
KSkgewogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVj
dGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIl9zKTsKICAgICAgICAgU0NSSVBUQ09OVFJPTExFUl9SRUxFQVNFX0xPR19FUlJP
UihMb2FkaW5nLCAiZXhlY3V0ZVNjcmlwdEluV29ybGQ6IElnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uIGFwcC1ib3VuZCBkb21haW4iKTsKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKEV4Y2VwdGlvbkRldGFpbHMgeyAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0
aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbiJfcyB9KTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwCmluZGV4IGQzZTk4
MTliZDUzMS4uODJmYTc1Zjk2NzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNv
bnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlv
blNpemUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0g
dXJsVG9NYXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIs
IERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNy
ZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTov
LyJfcywgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBl
ZDVmZjg0YjkuLjYzNjI5MzY1NzNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRv
cklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZv
ckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlm
ICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3
VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxp
Z25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVk
aXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRU
b0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdW
YWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7Cisg
ICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6
Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5l
d1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7
CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxl
cygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFi
bGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5k
IGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBu
b3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRT
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwg
MjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQg
dGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1v
dmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4Li40OTE0OTA1NzllNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcApA
QCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9odG1sO2NoYXJzZXQ9dXRm
LTgiKSAmJiBmcmFtZS5kb2N1bWVudCgpKSB7Ci0gICAgICAgIFN0cmluZyBtYXJrdXAgPSBwYXN0
ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04Iik7CisgICAgICAgIFN0
cmluZyBtYXJrdXAgPSBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvaHRtbDtjaGFyc2V0PXV0
Zi04Il9zKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqZnJhbWUu
ZG9jdW1lbnQoKSwgbWFya3VwLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBs
dWdpbkNvbnRlbnQpOwogICAgIH0KIApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBhc3RlYm9hcmREYXRhKFBhc3RlYm9h
cmQmIHBhcwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRm
LTgiKSkgewogICAgICAgICBjaG9zZVBsYWluVGV4dCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
cmVhdGVGcmFnbWVudEZyb21UZXh0KHJhbmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJv
bVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0
Zi04Il9zKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiYzBmNmQ2MTg4ZjkuLjJmY2VkYTUzMzkzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3
LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmlu
ZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsK
KyAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9PZmZzY3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMuLjNkMjdlODY2NDk4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAg
Y2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVu
Q2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29k
ZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4w
OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAKaW5kZXggNGRmZGU2NjNlOGJiLi41MGFkNWNiYzk2NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCBpbnQg
SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkK
IAogICAgICAgICAgICAgaWYgKG9mZnNjcmVlbkNhbnZhcy0+b3JpZ2luQ2xlYW4oKSAmJiBvZmZz
Y3JlZW5DYW52YXMtPmhhc0NyZWF0ZWRJbWFnZUJ1ZmZlcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKGF1dG8gKmJ1ZmZlciA9IG9mZnNjcmVlbkNhbnZhcy0+YnVmZmVyKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFVUkwgPSBidWZmZXItPnRvRGF0YVVSTCgiaW1hZ2UvcG5nIl9z
KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaW5kZXggPSBpbmRleEZvckRhdGEoZGF0
YVVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxv
YWRlclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJT
b3VwLmNwcAppbmRleCAxMjYzMmQ2ZTY3ZDMuLmFhMjRmNTMzNTgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5p
cXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IGFkb3B0R1JlZihzdGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIo
dGFzaywgJmVycm9yLm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAg
ICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVz
c2FnZSkpKTsKKyAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmlu
ZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmws
IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6Omxv
YWRHUmVzb3VyY2UoKQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29u
c3QgZ3VjaGFyKj4oZ19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAg
ICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwu
cGF0aCgpLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50
VHlwZShnX2NvbnRlbnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUs
IG51bGxwdHIpKTsKLSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0
cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0
PGxvbmcgbG9uZz4oZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVu
dFR5cGUuZ2V0KCkpIH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRl
bnRUeXBlLmdldCgpIH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmws
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNf
Y2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlU3RyaW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgy
MDApOwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAg
ICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBl
LCBjb250ZW50VHlwZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVs
ZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAg
ICAgcmVzcG9uc2Uuc2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7
CiAgICAgICAgIGxvYWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtS
ZWYoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CmluZGV4IGU5MjhjZTlhMTRmYS4uZDcxYzNmNzg0YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQuLjI1OWM3MjI1MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1
Z1BhZ2VPdmVybGF5cy5jcHAKQEAgLTI1MiwxNCArMjUyLDE0IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgZmlu
YWw7CiAKICAgICBGbG9hdFJlY3QgcmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkKTsKLSAg
ICBib29sIHZhbHVlRm9yU2V0dGluZyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIHZhbHVlRm9y
U2V0dGluZyhBU0NJSUxpdGVyYWwpOwogICAgICAgICAKICAgICBzdGQ6Om9wdGlvbmFsPEludGVy
YWN0aW9uUmVnaW9uPiBhY3RpdmVSZWdpb24oKTsKIAogICAgIHN0cnVjdCBTZXR0aW5nIHsKLSAg
ICAgICAgU3RyaW5nIGtleTsKLSAgICAgICAgU3RyaW5nIG5hbWU7Ci0gICAgICAgIGJvb2wgdmFs
dWU7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXk7CisgICAgICAgIEFTQ0lJTGl0ZXJhbCBuYW1l
OworICAgICAgICBib29sIHZhbHVlIHsgZmFsc2UgfTsKICAgICB9OyAgICAKIAogICAgIEZpeGVk
VmVjdG9yPFNldHRpbmc+IG1fc2V0dGluZ3MgewpAQCAtMzc5LDcgKzM3OSw3IEBAIEZsb2F0UmVj
dCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICB9OwogfQogCi1ib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFs
dWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYgbmFtZSkKK2Jvb2wgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoQVNDSUlMaXRlcmFsIG5hbWUpCiB7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBzZXR0aW5nIDogbV9zZXR0aW5ncykgewogICAgICAgICBpZiAobmFtZSA9PSBz
ZXR0aW5nLmtleSkKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAg
ICAgCiAgICAgY29udGV4dC5jbGVhclJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmICh2YWx1ZUZv
clNldHRpbmcoInJlZ2lvbnMiKSkgeworICAgIGlmICh2YWx1ZUZvclNldHRpbmcoInJlZ2lvbnMi
X3MpKSB7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDIpOwogICAgICAgICBj
b250ZXh0LnNldFN0cm9rZUNvbG9yKENvbG9yOjpncmVlbik7CiAKQEAgLTQzOCw3ICs0MzgsNyBA
QCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICBhdXRvIHJlZ2lvbiA9IGFjdGl2ZVJlZ2lv
bigpOwogCi0gICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkg
eworICAgIGlmIChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewog
ICAgICAgICBhdXRvIGdyYWRpZW50RGF0YSA9IFsmXSAoZmxvYXQgcmFkaXVzKSB7CiAgICAgICAg
ICAgICBHcmFkaWVudDo6UmFkaWFsRGF0YSBncmFkaWVudERhdGE7CiAgICAgICAgICAgICBncmFk
aWVudERhdGEucG9pbnQwID0gbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXM7CkBA
IC00NTEsMTAgKzQ1MSwxMCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1Jl
Y3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAKICAgICAgICAgYXV0
byBtYWtlR3JhZGllbnQgPSBbJl0gKGJvb2wgaGFzTGlnaHRCYWNrZ3JvdW5kLCBHcmFkaWVudDo6
UmFkaWFsRGF0YSBncmFkaWVudERhdGEpIHsKICAgICAgICAgICAgIGF1dG8gZ3JhZGllbnQgPSBH
cmFkaWVudDo6Y3JlYXRlKFdURk1vdmUoZ3JhZGllbnREYXRhKSwgeyBDb2xvckludGVycG9sYXRp
b25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxp
ZWQgfSk7Ci0gICAgICAgICAgICBpZiAocmVnaW9uICYmIHZhbHVlRm9yU2V0dGluZygid2FzaCIp
ICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKSB7CisgICAgICAgICAgICBpZiAocmVnaW9uICYm
IHZhbHVlRm9yU2V0dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSkg
ewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENv
bG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC41KSB9KTsKICAgICAgICAgICAgICAgICBncmFk
aWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgaGFzTGlnaHRCYWNrZ3JvdW5kID8gQ29sb3IoQ29sb3I6
OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjA1KSA6IENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JX
aXRoQWxwaGEoMC4xKSB9KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGlu
ZygiY2xpcCIpIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpIHx8ICF2YWx1ZUZvclNldHRp
bmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMCkgfSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDY2
LDE4ICs0NjYsMTggQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBh
Z2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9OwogICAgICAg
ICAKICAgICAgICAgY29uc3RleHByIGZsb2F0IGRlZmF1bHRSYWRpdXMgPSA1MDsKLSAgICAgICAg
Ym9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIik7CisgICAgICAgIGJvb2wg
c2hvdWxkQ2xpcCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcyk7CiAgICAgICAgIFZlY3RvcjxQ
YXRoPiBjbGlwUGF0aHM7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgICAgICBj
bGlwUGF0aHMgPSBwYXRoc0ZvclJlZ2lvbigqcmVnaW9uKTsKIAotICAgICAgICBib29sIHNob3Vs
ZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8ICghdmFsdWVG
b3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpOworICAgICAgICBi
b29sIHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgPSAhc2hvdWxkQ2xpcCB8fCAhcmVnaW9uIHx8
ICghdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3Mp
KTsKIAogICAgICAgICBpZiAoc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCkgewogICAgICAgICAg
ICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFs
dWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOworICAgICAgICAgICAgICAg
ICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9zKSA/
IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVs
dFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgYXV0byBiYWNrZHJvcEdyYWRpZW50ID0gR3Jh
ZGllbnQ6OmNyZWF0ZShncmFkaWVudERhdGEocmFkaXVzICogMS41KSwgeyBDb2xvckludGVycG9s
YXRpb25NZXRob2Q6OlNSR0IgeyB9LCBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRp
cGxpZWQgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OmJsYWNrKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwog
ICAgICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBD
b2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDApIH0pOwpAQCAtNDk2LDEyICs0OTYs
MTIgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBo
YXNMaWdodEJhY2tncm91bmQgPSBmYWxzZTsKLSAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJv
cEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIikpCisgICAgICAg
IGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2YWx1ZUZvclNldHRpbmcoImNvbnRl
eHR1YWxDb2xvciJfcykpCiAgICAgICAgICAgICBoYXNMaWdodEJhY2tncm91bmQgPSByZWdpb24t
Pmhhc0xpZ2h0QmFja2dyb3VuZDsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhzKSB7Ci0gICAgICAgICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSIpID8gMS41
ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFk
aXVzOworICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29u
dGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGlt
ZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0Rmls
bEdyYWRpZW50KG1ha2VHcmFkaWVudChoYXNMaWdodEJhY2tncm91bmQsIGdyYWRpZW50RGF0YShy
YWRpdXMpKSk7CiAgICAgICAgICAgICAgICAgY29udGV4dC5maWxsUGF0aChwYXRoKTsKICAgICAg
ICAgICAgIH0KQEAgLTUyMiw5ICs1MjIsOSBAQCBib29sIEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29uc3QgUGxhdGZvcm1NbwogCiAg
ICAgc3RkOjpvcHRpb25hbDxDdXJzb3I+IGN1cnNvclRvU2V0OwogCi0gICAgaWYgKCF2YWx1ZUZv
clNldHRpbmcoImN1cnNvciIpKQorICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJzb3IiX3Mp
KQogICAgICAgICBjdXJzb3JUb1NldCA9IG5vbmVDdXJzb3IoKTsKLSAgICBlbHNlIGlmICghdmFs
dWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhv
dmVyIl9zKSkKICAgICAgICAgY3Vyc29yVG9TZXQgPSBwb2ludGVyQ3Vyc29yKCk7CiAKICAgICBh
dXRvIGV2ZW50SW5Db250ZW50c0Nvb3JkaW5hdGVzID0gbWFpbkZyYW1lVmlldy0+d2luZG93VG9D
b250ZW50cyhldmVudC5wb3NpdGlvbigpKTsKQEAgLTU0NCw3ICs1NDQsNyBAQCBib29sIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VFdmVudChQYWdlT3ZlcmxheSYgb3ZlcmxheSwgY29u
c3QgUGxhdGZvcm1NbwogICAgIG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzID0g
ZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXM7CiAgICAgb3ZlcmxheS5zZXROZWVkc0Rpc3BsYXko
KTsKIAotICAgIGlmIChldmVudC50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAm
JiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgaWYg
KGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0
b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Y29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Nl
dHRpbmdzQmFzZUNvY29hLm1tCmluZGV4IDQ3NzRjZTA4YTViOC4uZTAxNmY5MjFkNWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYz
LDE1ICs2MywxNSBAQCBib29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3Vy
Y2VFbmFibGVkKCkKIAogdm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZh
bWlsaWVzKCkKIHsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVND
UklQVF9UUkFESVRJT05BTF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0Zh
bmcgU0MiLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1p
bHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7
Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQ
VF9IQU5HVUwpOwotCi0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRf
Q09NTU9OKTsKLSAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1P
Tik7Ci0gICAgc2V0U2VyaWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7Cisg
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJ
T05BTF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVT
Q1JJUFRfU0lNUExJRklFRF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdp
bm8gTWluY2hvIFByb04iX3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5H
VUwpOworCisgICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01N
T04pOworICAgIHNldEZpeGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04p
OworICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAg
ICBzZXRTYW5zU2VyaWZGb250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMuLmQyMzdlMTg4Yzkz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURh
dGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5o
CkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZP
Uk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53
ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3Rv
bS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyLi41YTk0ODkwMDk0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1VzZXJBZ2VudC5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGVudW0gY2xhc3MgVXNlckFnZW50VHlwZSB7IERlZmF1bHQsIERlc2t0b3AgfTsKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29u
c3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJz
aW9uID0gZW1wdHlTdHJpbmcoKSwgVXNlckFnZW50VHlwZSA9IFVzZXJBZ2VudFR5cGU6OkRlZmF1
bHQpOwogCi1XRUJDT1JFX0VYUE9SVCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCk7CitXRUJD
T1JFX0VYUE9SVCBBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNlckFnZW50KCk7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOwog
I2Vsc2UKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVh
bWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCmluZGV4IGU0
NWZjMDY0MzM5NC4uOGI3ZTc0MWI3YzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25H
U3RyZWFtZXIuY3BwCkBAIC0xMjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
cjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAog
ICAgIG1fc3JjID0gR1NUX0VMRU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VC
X0FVRElPX1NSQywgInJhdGUiLCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJC
dXMuZ2V0KCksICJkZXN0aW5hdGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6
cmVuZGVyUXVhbnR1bVNpemUsIG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4g
YXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0
cjxHc3RFbGVtZW50PiBhdWRpb1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMi
X3MpOwogICAgIG1fYXVkaW9TaW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVk
aW9TaW5rKSB7CiAgICAgICAgIEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIg
YXVkaW8gc2luayBlbGVtZW50Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9V
c2VyQWdlbnRHTGliLmNwcAppbmRleCBmNjAwMDEwYWFjODguLjBkMjlkNWYzZDU3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3
ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmco
KQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lz
VHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAg
ICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1l
OwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVy
c2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25W
ZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0g
IjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsg
JyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhLi5jNWRlMWI2OGI1Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHAKQEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNv
bXBpbGVTaGFkZXJTb3VyY2UoY29uc3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlCiAg
ICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxv
ZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVyKTsKICAgICAgICAgaWYgKGxvZy5sZW5ndGgoKSkK
LSAgICAgICAgICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBsb2cuY19zdHIoKTsKKyAgICAgICAg
ICAgIHNoYWRlclZhbGlkYXRpb25Mb2cgPSBTdHJpbmcgeyBsb2cuY19zdHIoKSB9OwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENv
ZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21waWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVu
Z3RoKCkpCi0gICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3Ry
KCk7CisgICAgICAgIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSBTdHJpbmcgeyBvYmplY3RDb2Rl
LmNfc3RyKCkgfTsKICAgICAKICAgICBpZiAoIWdldFN5bWJvbEluZm8oY29tcGlsZXIsIFNIQURF
Ul9TWU1CT0xfVFlQRV9BVFRSSUJVVEUsIHN5bWJvbHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFw
aGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwCmluZGV4IDFhNWJlNmUxYjQ4MC4uZTYy
Y2ZkNzVkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
bmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyAr
NTQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNr
ZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCI7CitzdGF0aWMgY29uc3RleHByIGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFt
ZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1h
eEZyYW1lRHVyYXRpb24gPSA1X3M7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dEdMQU5HTEU6OnJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NH
THNpemVpIHdpZAogCiAvLyBUaGUgY29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNv
bW1vbiBmb2xsb3csIHBvcnRlZCB0byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uKQordm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRo
U3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAg
IC8vIEZJWE1FOiBTaW5jZSB0aGUgY29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFy
ZSBub3Qgc2hhcmVkLCB3ZSBpbml0aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0
cnVjdGluZyB0aGUgY29udGV4dCwgYWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhh
dCB0aGUgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKaW5kZXggZDlkMzY3NDE4M2E5Li5mY2Q1NjNhNjczMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0Nv
bnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4g
cGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291
bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0
aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlk
YXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7
CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAg
dm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0
aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dM
c2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NH
THNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MS4uM2Yz
NTQ4ZGEwZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtNzAxLDcgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByaW50VHJhbnNmb3JtKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNv
bnN0IENBVHJhbnNmb3JtM0QmIHRyYW5zZm9yCiAgICAgYnVpbGRlci5hcHBlbmQoJ1snLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTEpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMiksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6
OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0yMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTIzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMjQpLCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tMzEpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0zMiksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTMzKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzQp
LCAiOyAiLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDEpLCAn
ICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MiksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQzKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDQpLCAnXScpOwogfQogCi1z
dGF0aWMgdm9pZCBwcmludENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQs
IGNvbnN0IFN0cmluZyYgbGFiZWwsIENHQ29sb3JSZWYgY29sb3IpCitzdGF0aWMgdm9pZCBwcmlu
dENvbG9yKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGludCBpbmRlbnQsIEFTQ0lJTGl0ZXJhbCBs
YWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKIHsKICAgICBDb2xvciBsYXllckNvbG9yKHJvdW5kQW5k
Q2xhbXBUb1NSR0JBTG9zc3koY29sb3IpKTsKICAgICBpZiAoIWxheWVyQ29sb3IuaXNWYWxpZCgp
KQpAQCAtNzYyLDEwICs3NjIsMTAgQEAgc3RhdGljIHZvaWQgcHJpbnRMYXllcihTdHJpbmdCdWls
ZGVyJiBidWlsZGVyLCBjb25zdCBQbGF0Zm9ybUNBTGF5ZXIqIGxheWVyLCBpbnQKICAgICB9CiAK
ICAgICAvLyBQcmludCBiYWNrZ3JvdW5kQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJpbnRDb2xvcihi
dWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dyb3VuZENvbG9yIiwgQ0FDRkxheWVyR2V0QmFja2dy
b3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKKyAgICBwcmludENvbG9yKGJ1aWxk
ZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiX3MsIENBQ0ZMYXllckdldEJhY2tncm91
bmRDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBib3JkZXJD
b2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3Jk
ZXJDb2xvciIsIENBQ0ZMYXllckdldEJvcmRlckNvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkp
KTsKKyAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJib3JkZXJDb2xvciJfcywg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOwogCiAgICAg
Ly8gUHJpbnQgbWFza3NUb0JvdW5kcyBpZiBuZWVkZWQKICAgICBpZiAoYm9vbCBsYXllck1hc2tz
VG9Cb3VuZHMgPSBsYXllci0+bWFza3NUb0JvdW5kcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNh
aXJvQmFja2VuZC5jcHAKaW5kZXggYzhlNTY3ODI0MjMxLi4zYjdhNzVkYzc4YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fp
cm9CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcg
SW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBzdGQ6Om9wdGlvbmFsPAogewogICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0
b0RhdGEobWltZVR5cGUsIHF1YWxpdHkpOwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gImRhdGE6LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwog
CiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJh
c2U2NEVuY29kZWQoZW5jb2RlZEltYWdlLmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUv
Rm9udENhY2hlRnJlZVR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNC4uMWY1MTY5
MWVmOWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0Miwy
MiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0
cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8
fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZh
bWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9z
OwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4
OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAg
ICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVy
biAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1p
bHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUi
X3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICBy
ZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9
PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8
fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVs
dEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBl
bXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZh
dGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2QuLmZk
OWY3OGU3ZDIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6
OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigx
LCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBz
X2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0g
Y29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdl
dCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJDb21tb24uY3BwCmluZGV4IGQ2OTQyY2UyMjU0MS4uMTIwN2MzNWExMTNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0
cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFs
dWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYgKGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJl
VmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAgICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0
X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRhdGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVl
KGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpLCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OworICAgICAgICBvYmplY3QtPnNldFZhbHVlKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZp
ZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFzZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVy
biBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCAyZDljMGU5ZTQ1MzguLmJkNmJlNmY3YTYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdp
c3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5l
cjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVj
a0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3Rvcmll
cyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9y
aWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0
RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1l
dGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VM
RU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0
X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURB
VEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxp
dCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikp
IHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMz
MSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMo
Y29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNv
ZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZh
Y3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9y
aWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3Vw
cG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRy
b3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6
RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAg
ICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVy
QXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFk
ZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUp
OwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYx
RGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZv
aWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChB
dG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVk
IHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1
ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBw
b3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChh
dWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0
b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFk
ZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4ZjczYzQyYi4uN2ViYmE0MzIyZTg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApA
QCAtMTI0Niw3ICsxMjQ2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omxv
YWRpbmdGYWlsZWQoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBuZXR3b3IKIAogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmsoKQogewotICAg
IGNvbnN0IGNoYXIqIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIiA6
ICJtdXNpYyI7CisgICAgYXV0byByb2xlID0gbV9wbGF5ZXItPmlzVmlkZW9QbGF5ZXIoKSA/ICJ2
aWRlbyJfcyA6ICJtdXNpYyJfczsKICAgICBHc3RFbGVtZW50KiBhdWRpb1NpbmsgPSBjcmVhdGVQ
bGF0Zm9ybUF1ZGlvU2luayhyb2xlKTsKICAgICBSRUxFQVNFX0FTU0VSVChhdWRpb1NpbmspOwog
ICAgIGlmICghYXVkaW9TaW5rKQpAQCAtMTczNSw3ICsxNzM1LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAg
ICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IobWVzc2FnZSwgJmVyci5vdXRQdHIoKSwgJmRl
YnVnLm91dFB0cigpKTsKICAgICAgICAgR1NUX0VSUk9SKCJFcnJvciAlZDogJXMgKHVybD0lcyki
LCBlcnItPmNvZGUsIGVyci0+bWVzc2FnZSwgbV91cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnItPm1lc3NhZ2U7CisgICAgICAgIG1fZXJy
b3JNZXNzYWdlID0gU3RyaW5nIHsgZXJyLT5tZXNzYWdlIH07CiAKICAgICAgICAgZXJyb3IgPSBN
ZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlOjpFbXB0eTsKICAgICAgICAgaWYgKGdfZXJyb3JfbWF0
Y2hlcyhlcnIuZ2V0KCksIEdTVF9TVFJFQU1fRVJST1IsIEdTVF9TVFJFQU1fRVJST1JfQ09ERUNf
Tk9UX0ZPVU5EKQpAQCAtMTg4OSw3ICsxODg5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmhhbmRsZU1lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2FnZSkKICAgICAgICAgZWxz
ZSBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJodHRwLWhlYWRlcnMiKSkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUHJvY2Vzc2luZyBI
VFRQIGhlYWRlcnM6ICUiIEdTVF9QVFJfRk9STUFULCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAg
aWYgKGNvbnN0IGNoYXIqIHVyaSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUs
ICJ1cmkiKSkgewotICAgICAgICAgICAgICAgIFVSTCB1cmwgeyB1cmkgfTsKKyAgICAgICAgICAg
ICAgICBVUkwgdXJsIHsgU3RyaW5nIHsgdXJpIH0gfTsKICAgICAgICAgICAgICAgICBtX29yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKSk7CiAKICAgICAgICAgICAgICAgICBp
ZiAodXJsICE9IG1fdXJsKSB7CkBAIC0yMTI3LDcgKzIxMjcsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
KiBlbnRyeQogICAgICAgICBnY2hhciogdGl0bGUgPSBudWxscHRyOwogICAgICAgICBnc3RfdGFn
X2xpc3RfZ2V0X3N0cmluZyh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOwogICAgICAgICBp
ZiAodGl0bGUpIHsKLSAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudCh0aXRsZSk7CisgICAgICAg
ICAgICBjdWUtPnNldENvbnRlbnQoU3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwogICAgICAgICAg
ICAgZ19mcmVlKHRpdGxlKTsKICAgICAgICAgfQogICAgIH0KQEAgLTIxNjYsNyArMjE2Niw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZl
cihHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdfb2JqZWN0X3NldChlbGVtZW50LCAidGVtcC10
ZW1wbGF0ZSIsIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCksIG51bGxwdHIpOwogICAgIEdTVF9E
RUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlJlY29uZmlndXJlZCBmaWxlIGRvd25sb2FkIHRlbXBs
YXRlIGZyb20gJyVzJyB0byAnJXMnIiwgb2xkRG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSk7CiAKLSAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVmaXhQYXRo
ID0gbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKTsKKyAgICBTdHJpbmcgbmV3RG93bmxvYWRQcmVm
aXhQYXRoIHsgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSB9OwogICAgIHB1cmdlT2xkRG93bmxv
YWRGaWxlcyhuZXdEb3dubG9hZFByZWZpeFBhdGgucmVwbGFjZSgiWFhYWFhYIiwgIiIpKTsKIH0K
IApAQCAtMjE3OSw3ICsyMTc5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
OmRvd25sb2FkQnVmZmVyRmlsZUNyZWF0ZWRDYWxsYmFjayhNZWRpYVBsYXllclAKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IGRvd25sb2FkRmlsZTsKICAgICBnX29iamVjdF9nZXQocGxheWVyLT5t
X2Rvd25sb2FkQnVmZmVyLmdldCgpLCAidGVtcC1sb2NhdGlvbiIsICZkb3dubG9hZEZpbGUub3V0
UHRyKCksIG51bGxwdHIpOwogCi0gICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVtOjpkZWxldGVG
aWxlKGRvd25sb2FkRmlsZS5nZXQoKSkpKSB7CisgICAgaWYgKFVOTElLRUxZKCFGaWxlU3lzdGVt
OjpkZWxldGVGaWxlKFN0cmluZzo6ZnJvbVVURjgoZG93bmxvYWRGaWxlLmdldCgpKSkpKSB7CiAg
ICAgICAgIEdTVF9XQVJOSU5HKCJDb3VsZG4ndCB1bmxpbmsgbWVkaWEgdGVtcG9yYXJ5IGZpbGUg
JXMgYWZ0ZXIgY3JlYXRpb24iLCBkb3dubG9hZEZpbGUuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjQ3MCwxMSArMjQ3MCwxMSBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6bG9hZE5leHRMb2NhdGlvbigpCiAgICAgICAgIC8vIHRob3VnaC4gV2UgbmVlZCB0
byB0YWtlIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHVybCBhbmQKICAgICAgICAgLy8gYXBwZW5k
IHRoZSB2YWx1ZSBvZiBuZXctbG9jYXRpb24gdG8gaXQuCiAgICAgICAgIFVSTCBiYXNlVXJsID0g
Z3N0X3VyaV9pc192YWxpZChuZXdMb2NhdGlvbikgPyBVUkwoKSA6IG1fdXJsOwotICAgICAgICBV
UkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIG5ld0xvY2F0aW9uKTsKKyAgICAgICAgVVJMIG5ld1Vy
bCA9IFVSTChiYXNlVXJsLCBTdHJpbmcgeyBuZXdMb2NhdGlvbiB9KTsKIAogICAgICAgICBHVW5p
cXVlT3V0UHRyPGdjaGFyPiBwbGF5YmluVXJsU3RyOwogICAgICAgICBnX29iamVjdF9nZXQobV9w
aXBlbGluZS5nZXQoKSwgImN1cnJlbnQtdXJpIiwgJnBsYXliaW5VcmxTdHIub3V0UHRyKCksIG51
bGxwdHIpOwotICAgICAgICBVUkwgcGxheWJpblVybCB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfTsK
KyAgICAgICAgVVJMIHBsYXliaW5VcmwgeyBTdHJpbmcgeyBwbGF5YmluVXJsU3RyLmdldCgpIH0g
fTsKIAogICAgICAgICBpZiAocGxheWJpblVybCA9PSBuZXdVcmwpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1QocGlwZWxpbmUoKSwgIlBsYXliaW4gYWxyZWFkeSBoYW5kbGVkIHJlZGly
ZWN0aW9uLiIpOwpAQCAtMjcwMSw3ICsyNzAxLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXI6OmNyZWF0ZUdTVFBsYXlCaW4oY29uc3QgVVJMJiB1cmwpCiAKICAgICBhdXRvIGVs
ZW1lbnRJZCA9IG1fcGxheWVyLT5lbGVtZW50SWQoKTsKICAgICBpZiAoZWxlbWVudElkLmlzRW1w
dHkoKSkKLSAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciI7CisgICAgICAgIGVsZW1l
bnRJZCA9ICJtZWRpYS1wbGF5ZXIiX3M7CiAKICAgICBjb25zdCBjaGFyKiB0eXBlID0gaXNNZWRp
YVNvdXJjZSgpID8gIk1TRS0iIDogdXJsLnByb3RvY29sSXMoIm1lZGlhc3RyZWFtIikgPyAibWVk
aWFzdHJlYW0tIiA6ICIiOwogCkBAIC0zOTE4LDcgKzM5MTgsNyBAQCBJbml0RGF0YSBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2Uo
R3N0TWVzcwogICAgICAgICAgICAgR3N0QnVmZmVyKiBkYXRhID0gbnVsbHB0cjsKICAgICAgICAg
ICAgIGdzdF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LmdldCgpLCAmZXZlbnRLZXlTeXN0
ZW1JZCwgJmRhdGEsIG51bGxwdHIpOwogCi0gICAgICAgICAgICBpbml0RGF0YS5hcHBlbmQoe2V2
ZW50S2V5U3lzdGVtSWQsIGRhdGF9KTsKKyAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7IFN0
cmluZyB7IGV2ZW50S2V5U3lzdGVtSWQgfSwgZGF0YSB9KTsKICAgICAgICAgICAgIG1faGFuZGxl
ZFByb3RlY3Rpb25FdmVudHMuYWRkKEdTVF9FVkVOVF9TRVFOVU0oZXZlbnQuZ2V0KCkpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTQwMzksNyArNDAzOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQoR3N0RXZlbnQqIGV2ZW50KQogICAg
IGNvbnN0IGNoYXIqIGV2ZW50S2V5U3lzdGVtVVVJRCA9IG51bGxwdHI7CiAgICAgR3N0QnVmZmVy
KiBpbml0RGF0YSA9IG51bGxwdHI7CiAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZl
bnQsICZldmVudEtleVN5c3RlbVVVSUQsICZpbml0RGF0YSwgbnVsbHB0cik7Ci0gICAgaW5pdGlh
bGl6YXRpb25EYXRhRW5jb3VudGVyZWQoe2V2ZW50S2V5U3lzdGVtVVVJRCwgaW5pdERhdGF9KTsK
KyAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7IFN0cmluZyB7IGV2ZW50S2V5U3lz
dGVtVVVJRCB9LCBpbml0RGF0YSB9KTsKIH0KIAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXI6OndhaXRpbmdGb3JLZXkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IGYzY2E4YTMwMWM2Ny4uMzJlZDNhZThiMjljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyAr
NDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVz
c2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5
Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmluZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIiX3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JT
QWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGNhblNhdmVNZWRpYURhdGEo
KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3Ry
ZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMC4uMDNlZGFjOGM4ZTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAg
Ym9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlz
dCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYg
KGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAg
ICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdl
LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0
X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAg
ICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4i
LCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdl
ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIx
MSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3Qq
IHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4g
dGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUs
ICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3Qg
JXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1
ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1
ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRl
eCA4OTQ3NTQwNWM4MDkuLmQ3YmU4MDUxOGVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVv
RnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgZ3N0X3BhZF9hZGRfcHJvYmUoc2lua1BhZC5nZXQoKSwgcHJvYmVUeXBlLCBbXShHc3RQYWQq
LCBHc3RQYWRQcm9iZUluZm8qIGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBHc3RQYWRQcm9i
ZVJldHVybiB7CiAgICAgICAgIGF1dG8gW21vZGlmaWVkQnVmZmVyLCBtZXRhXSA9IGVuc3VyZVZp
ZGVvRnJhbWVNZXRhZGF0YShHU1RfUEFEX1BST0JFX0lORk9fQlVGRkVSKGluZm8pKTsKICAgICAg
ICAgR1NUX1BBRF9QUk9CRV9JTkZPX0RBVEEoaW5mbykgPSBtb2RpZmllZEJ1ZmZlcjsKLSAgICAg
ICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChyZWludGVycHJldF9jYXN0PGNoYXIq
Pih1c2VyRGF0YSksIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NU
X0NMT0NLX1RJTUVfTk9ORSkpOworICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMu
c2V0KFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9LCBzdGQ6Om1h
a2VfcGFpcihnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAgICAgfSwgZ3N0X2VsZW1lbnRfZ2V0
X25hbWUoZWxlbWVudCksIGdfZnJlZSk7CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIHdlYmtp
dEdzdFRyYWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIGlmICghbWV0YSkKICAgICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOwog
Ci0gICAgICAgIGF1dG8qIGVsZW1lbnROYW1lID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNl
ckRhdGEpOworICAgICAgICBTdHJpbmcgZWxlbWVudE5hbWUgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfTsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1ldGEtPnByaXYtPnByb2Nl
c3NpbmdUaW1lcy5nZXQoZWxlbWVudE5hbWUpOwogICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNz
aW5nVGltZXMuc2V0KGVsZW1lbnROYW1lLCBzdGQ6Om1ha2VfcGFpcih2YWx1ZS5maXJzdCwgZ3N0
X3V0aWxfZ2V0X3RpbWVzdGFtcCgpKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NDMzNjg1ZTIzMzk1Li5kNjQwNGMxMjBjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2FwcygpCiAKICNpZiBH
U1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBHVW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdz
dF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVjKGNhcHMuZ2V0KCkpKTsKLSAgICBjb25m
aWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7CisgICAgY29uZmlndXJhdGlvbi5jb2RlYyA9
IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYKIAogICAgIGNhbGxPbk1haW5UaHJlYWRB
bmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDc1NGIzZmY0ODM5MC4uZDBhZDY3MmQ3MTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2Vi
S2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29s
IHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUq
IHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwi
JXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VS
ZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEp
OwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxk
TmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFT
U0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24p
OwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBS
JXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlv
bj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmln
aW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9w
UG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAg
ICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAg
IFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tp
ZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFr
ZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAg
ICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAo
cHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHBy
aXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3Ry
aW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8v
IEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2Ug
ZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8v
IExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2Ug
bW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBs
ZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0
cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkp
Ci0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7Cisg
ICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAog
ICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRp
b24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFu
Z2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVx
dWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50Zigi
Ynl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
KSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBm
b3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBm
b3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBv
c2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19P
QkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVw
QWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2
ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChI
VFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5l
eHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhl
YWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsK
IAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBq
dXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxk
KEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBX
VEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3RO
dW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29u
c3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRp
YyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJl
dHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3Ry
aW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFu
ZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0
NzlkNmJiNTI3Li4xYWYwZTU1NGQ4MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUu
Y3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgc3RkOjp0dXBsZTxHUmVmUHRyPEdzdENhcHM+LCBBcHBl
bmRQaXBlbGluZTo6U3RyZWFtVHlwZSwgRmxvYXRTaXplPiBBcHBlbmRQaXBlbGkKIAogICAgIGNv
bnN0IGNoYXIqIG9yaWdpbmFsTWVkaWFUeXBlID0gY2Fwc01lZGlhVHlwZShkZW11eGVyU3JjUGFk
Q2Fwcyk7CiAgICAgYXV0byYgZ3N0UmVnaXN0cnlTY2FubmVyID0gR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyTVNFOjpzaW5nbGV0b24oKTsKLSAgICBpZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0Nv
ZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVj
b2RpbmcsIG9yaWdpbmFsTWVkaWFUeXBlKSkgeworICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVy
LmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9u
OjpEZWNvZGluZywgU3RyaW5nIHsgb3JpZ2luYWxNZWRpYVR5cGUgfSkpIHsKICAgICAgICAgc3Ry
ZWFtVHlwZSA9IFN0cmVhbVR5cGU6OkludmFsaWQ7CiAgICAgfSBlbHNlIGlmIChkb0NhcHNIYXZl
VHlwZShkZW11eGVyU3JjUGFkQ2FwcywgR1NUX1ZJREVPX0NBUFNfVFlQRV9QUkVGSVgpKSB7CiAg
ICAgICAgIHByZXNlbnRhdGlvblNpemUgPSBnZXRWaWRlb1Jlc29sdXRpb25Gcm9tQ2FwcyhkZW11
eGVyU3JjUGFkQ2FwcykudmFsdWVfb3IoRmxvYXRTaXplKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCmluZGV4IDgzMWMy
YjJjNmVmYi4uMmNlYzY4NDY2ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgU3RyaW5nJikKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6OmxvYWQoY29uc3QgVVJMJiB1cmws
IGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBtZWRpYVNvdXJj
ZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVy
bC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1cmwuc3RyaW5nKCkpOworICAgIGF1
dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291cmNlIiwgdXJsLnN0cmluZygpLmlz
RW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygpKTsKICAgICBHU1RfREVCVUcoIkxv
YWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgpKTsKICAgICBtX21lZGlhU291cmNl
ID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5jcHAKaW5kZXggNzNlMjQ4
NDVjYjMzLi45MTk2M2QzMjkwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0x
MDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0
c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZm
ZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4g
VGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBw
YXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5h
bWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBs
ZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0g
ICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5z
dGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhU
X2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4g
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMi
X3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1l
ID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3Mp
ICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1
ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJh
Z19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBw
b3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdi
YTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRm
b3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FS
Ql90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVu
IHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0
dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMg
YXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFt
ZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1
cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xp
bmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdM
X0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9P
RVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2Fy
cmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3Zl
cnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAg
ICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0
ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9m
aWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3Mp
OwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBw
bGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJp
bmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEsp
IHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5
T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRl
eEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRz
KCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVy
dGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENv
bW1vbi5jcHAKaW5kZXggNDg5Njk5YzRlZTNjLi4zMDQwY2ViZGE5YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xD
b21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwCkBAIC0xNzQsMTIgKzE3NCwxMiBAQCBTdHJpbmcg
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUo
UGxhdGZvcm1HTE9iamVjdAogICAgIGVsc2UgaWYgKEdMc2hhZGVyVHlwZSA9PSBHcmFwaGljc0Nv
bnRleHRHTDo6RlJBR01FTlRfU0hBREVSKQogICAgICAgICBzaGFkZXJUeXBlID0gU0hBREVSX1RZ
UEVfRlJBR01FTlQ7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gIiI7IC8vIEludmFsaWQgc2hh
ZGVyIHR5cGUuCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOyAvLyBJbnZhbGlkIHNoYWRl
ciB0eXBlLgogCiAgICAgSGFzaE1hcDxQbGF0Zm9ybUdMT2JqZWN0LCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnk+OjppdGVyYXRvciByZXN1bHQgPSBtX2NvbnRleHQt
Pm1fc2hhZGVyU291cmNlTWFwLmZpbmQoc2hhZGVyKTsKIAogICAgIGlmIChyZXN1bHQgPT0gbV9j
b250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpTaGFkZXJTb3VyY2VFbnRyeSYgZW50cnkgPSByZXN1bHQtPnZhbHVlOwogCkBAIC0yMDMsNyAr
MjAzLDcgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRlZFNo
YWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICB9CiAKICAgICBpZiAoIWlzVmFs
aWQpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAK
ICAgICByZXR1cm4gdHJhbnNsYXRlZFNoYWRlclNvdXJjZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dM
T3BlbkdMRVMuY3BwCmluZGV4IDU0YjE3MDAxNTA5NS4uYjkxMTEwMjU5ODM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3Bl
bkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lv
bnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFt
ZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVO
VFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFy
cmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAo
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIp
ICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2Vk
IikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3Mp
KSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0
ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdM
RSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50
c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRH
TE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4Yi4uMGE2YTg4Y2YxYWQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1MiwxMyArMzUy
LDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5nUmVzdWx0
cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lkIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0
cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYgKHN1cHBv
cnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAgICAgICAg
IGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAg
ICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBhY2tlZERl
cHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFj
a2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5zdXJlRXh0
ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwogICAgICAg
ICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAgICAgYXR0
cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdM
T3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyLi5hZjc1ZTBkMDk5OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC00MzMsNyArNDMzLDcgQEAgcHJvdGVjdGVkOgogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCiAgICAgLy8gaW1wbGVtZW50YXRpb24uCi0gICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRl
bnNpb24pOworICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CiAgICAgdm9pZCB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsK
IAogICAgIHZvaWQgcmVhZG5QaXhlbHNJbXBsKEdDR0xpbnQgeCwgR0NHTGludCB5LCBHQ0dMc2l6
ZWkgd2lkdGgsIEdDR0xzaXplaSBoZWlnaHQsIEdDR0xlbnVtIGZvcm1hdCwgR0NHTGVudW0gdHlw
ZSwgR0NHTHNpemVpIGJ1ZlNpemUsIEdDR0xzaXplaSogbGVuZ3RoLCBHQ0dMc2l6ZWkqIGNvbHVt
bnMsIEdDR0xzaXplaSogcm93cywgR0NHTHZvaWQqIGRhdGEsIGJvb2wgcmVhZGluZ1RvUGl4ZWxC
dWZmZXJPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNw
cAppbmRleCBjMzViMmYwZjE1ZDkuLjdiNTRhMDFmM2U5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25h
bDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWlu
dFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFw
ZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAg
ICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lv
bnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93
IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFj
a2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVO
VDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2
YzUzMjcuLjNhZTYyYmY2ZWViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBhbGxv
dyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90Lgog
ICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzLgot
ICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0
ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNp
bEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3Vw
cG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICAv
LyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNlOwpA
QCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4SW1h
Z2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0
ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJpYnV0
ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9y
ZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYmICFz
dXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSJf
cykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAgc2V0
Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVy
ZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4YzY2
ZGFhLi5iMWY0YzY0N2E3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMzUwLDcgKzM1MCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEU6OnBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAgICAg
QVNTRVJUX1VOVVNFRChzdWNjZXNzLCBzdWNjZXNzKTsKIAogICAgIC8vIFdlIHJlcXVpcmUgdGhp
cyBleHRlbnNpb24gdG8gcmVuZGVyIGludG8gdGhlIGRtYWJ1Zi1iYWNrZWQgRUdMSW1hZ2UuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSk7
CisgICAgUkVMRUFTRV9BU1NFUlQoc3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Ui
X3MpKTsKICAgICBHTF9SZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoIkdMX09FU19FR0xfaW1hZ2UiKTsK
IAogICAgIHZhbGlkYXRlQXR0cmlidXRlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggOWUwZjlkMGNmNjBlLi5iY2I2NzUxZWRiM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAg
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAg
Y2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2Fu
aW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDUuLmM3
YTFjMjcyNWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTUuLjc2NjlhMTFkYmEyNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAK
QEAgLTE0NTMsNyArMTQ1Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXN1
bWVBbmltYXRpb25zKCkKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlv
blN0YXJ0ZWRUaW1lckZpcmVkKCkKIHsKLSAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFy
dGVkKHRoaXMsICIiLCBtX2xhc3RBbmltYXRpb25TdGFydFRpbWUpOworICAgIGNsaWVudCgpLm5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9sYXN0QW5pbWF0aW9u
U3RhcnRUaW1lKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlcXVlc3RQ
ZW5kaW5nVGlsZUNyZWF0aW9uVGltZXJGaXJlZCgpCkBAIC0xNDkwLDcgKzE0OTAsNyBAQCBzdGF0
aWMgdm9pZCBkdW1wSW5uZXJMYXllcihUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBDb29yZGluYQogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmR1bXBB
ZGRpdGlvbmFsUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0ZXh0U3RyZWFtLCBPcHRpb25TZXQ8TGF5
ZXJUcmVlQXNUZXh0T3B0aW9ucz4gb3B0aW9ucykgY29uc3QKIHsKICAgICBpZiAob3B0aW9ucyAm
IExheWVyVHJlZUFzVGV4dE9wdGlvbnM6OkluY2x1ZGVDb250ZW50TGF5ZXJzKQotICAgICAgICBk
dW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAiYmFja2Ryb3AgbGF5ZXIiLCBtX2JhY2tkcm9wTGF5
ZXIuZ2V0KCksIG9wdGlvbnMpOworICAgICAgICBkdW1wSW5uZXJMYXllcih0ZXh0U3RyZWFtLCAi
YmFja2Ryb3AgbGF5ZXIiX3MsIG1fYmFja2Ryb3BMYXllci5nZXQoKSwgb3B0aW9ucyk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9Q
YXN0ZWJvYXJkR3RrLmNwcAppbmRleCAxZjVjYTNiMmFjMzkuLmM4YWIyNjQ3ZjdmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIg
KzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFz
dGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0
cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVl
PFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsK
IH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckds
b2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQp
LCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUo
Y29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJk
RXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMC4uYzAxN2YyMWZiZDg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50
R3RrLmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNh
c2UgR0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19L
RVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAg
ICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgog
ICAgIGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0
dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0Vu
dGVyOgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJu
OgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAg
ICBjYXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0
dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgot
ICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdE
S19LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVy
biAiRjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVy
biAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAg
ICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtf
S0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAg
ICBjYXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4g
IkY5Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAg
ICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0
dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEy
OgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNh
c2UgR0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJG
MTMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAg
ICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1
cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6
Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYx
NyJfczsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVy
biAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoK
LSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNl
IEdES19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIx
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAg
ICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJu
ICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0Ogot
ICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhl
bHAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7Cisg
ICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAg
ICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxl
ZnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdl
RG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1Bh
Z2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAg
ICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVl
bjoKICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
OworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdo
dDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAg
ICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVy
biAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlz
IHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICBy
ZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNh
c2UgR0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAg
cmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmlj
b2RlKGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNTgu
LmU5NTc4MjkyYjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9h
cmRJT1MubW0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpzZXREcmFnSW1hZ2Uo
RHJhZ0ltYWdlLCBjb25zdCBJbnRQb2ludCYpCiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpuYW1lT2ZE
cmFnUGFzdGVib2FyZCgpCiB7Ci0gICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQi
OworICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIl9zOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3Aoc3Rk
Ojp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA2MDExZmEyYzlhYzcuLjhkNWM0
M2RlODM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2Vu
dElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1t
CkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkK
ICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkg
X2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFk
OwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVG
b3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFp
c0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9u
ZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7
CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MC4uYmU0NmUxZTBlYzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2Vi
QVZQbGF5ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJv
bGxlcigpOwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0
ZXJuYWxQbGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFs
c2UsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdl
dFR5cGVOb25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJk
TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGli
V1BFLmNwcAppbmRleCAxODg3ZDhjNmYyNDcuLmFlNDM5ZTMwZjFmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxS
ZWFkaW5nUG9saWN5LCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiB7Ci0gICAgdGV4dC50ZXh0ID0g
cGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJv
bVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIG5hbWUoKSwgY29udGV4
dCgpKTsKKyAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCBuYW1lKCksIGNvbnRleHQoKSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCBz
dGQ6Om9wdGlvbmFsPHNpemVfdD4pCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRGaWxlUmVhZGVyJiwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogCiB2
b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKLSAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB1cmwudXJsLnN0cmluZygpKTsKKyAgICBw
bGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJv
YXJkKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHVybC51cmwuc3RyaW5nKCkpOwogfQog
CiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVHJ1c3R3b3J0aHlXZWJVUkxzUGJvYXJkVHlwZShjb25z
dCBQYXN0ZWJvYXJkVVJMJikKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVQbGFpblRl
eHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24pCiB7Ci0gICAgd3JpdGVT
dHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHRleHQpOworICAgIHdyaXRlU3RyaW5n
KCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MsIHRleHQpOwogfQogCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlQ3VzdG9tRGF0YShjb25zdCBWZWN0b3I8UGFzdGVib2FyZEN1c3RvbURhdGE+JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHAKaW5kZXggYTM0ZGMyMjBiYmI5Li44NDMyMzFkM2I1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndw
ZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBA
IFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2Rl
KHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVf
S0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQi
OworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAg
ICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2Ug
V1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRv
d24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAg
cmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVy
IgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVy
OgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAg
ICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICBy
ZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICBy
ZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6
Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7
CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0
dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOwor
ICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0
dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoK
LSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjEx
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAg
ICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJu
ICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0Ogot
ICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAg
ICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4g
IkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0g
ICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBX
UEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJf
czsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAg
IHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAi
RjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAg
ICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQ
RV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAg
cmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAi
SGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToK
LSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0
dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAi
TGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9E
b3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93
biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAi
OworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0g
ICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNh
c2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAg
ICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4i
X3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAg
ICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7
CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAg
Y2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBy
ZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BF
X0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBj
YXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVy
biAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRl
clByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNv
cmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJm
Li40ZmE4MmJiZGUxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
cmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFt
ZXIuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclBy
b2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBh
dXRvIHNlbGVjdGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyht
X3N0cmVhbSk7CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYg
KCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNr
ID8gInZpZGVvL21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3Rl
ZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAg
ICBHU1RfREVCVUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1p
bWVUeXBlLmFzY2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5
cGUobWltZVR5cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250
YWluZXJQcm9maWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJv
CiAgICAgICAgIGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2Rl
Y3MuY29udGFpbnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRp
by94LW9wdXMiOworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7
CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJu
IGNvZGVjLnN0YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBh
dWRpb0NhcHNOYW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVs
c2UgaWYgKGNvbnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZS4uYjQy
Mzc5ZjMzYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01J
TUVIZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhl
YWRlci5jcHAKQEAgLTg1LDE0ICs4NSwxNCBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRl
cjo6cGFyc2VIZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKIHsKICAgICBh
dXRvIG1pbWVIZWFkZXIgPSBhZG9wdFJlZigqbmV3IE1JTUVIZWFkZXIpOwogICAgIEtleVZhbHVl
TWFwIGtleVZhbHVlUGFpcnMgPSByZXRyaWV2ZUtleVZhbHVlUGFpcnMoYnVmZmVyKTsKLSAgICBL
ZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFp
cnMuZmluZCgiY29udGVudC10eXBlIik7CisgICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQ
YXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSJfcyk7
CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkg
ewogICAgICAgICBTdHJpbmcgY29udGVudFR5cGUsIGNoYXJzZXQsIG11bHRpcGFydFR5cGUsIGVu
ZE9mUGFydEJvdW5kYXJ5OwogICAgICAgICBpZiAoYXV0byBwYXJzZWRDb250ZW50VHlwZSA9IFBh
cnNlZENvbnRlbnRUeXBlOjpjcmVhdGUobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpKSB7
CiAgICAgICAgICAgICBjb250ZW50VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5taW1lVHlwZSgp
OwogICAgICAgICAgICAgY2hhcnNldCA9IHBhcnNlZENvbnRlbnRUeXBlLT5jaGFyc2V0KCkuc3Ry
aXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgidHlwZSIpOwotICAgICAgICAgICAgZW5kT2ZQ
YXJ0Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJi
b3VuZGFyeSIpOworICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBl
LT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiX3MpOworICAgICAgICAgICAgZW5kT2ZQYXJ0
Qm91bmRhcnkgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJib3Vu
ZGFyeSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHlwZSA9
IGNvbnRlbnRUeXBlOwogICAgICAgICBpZiAoIW1pbWVIZWFkZXItPmlzTXVsdGlwYXJ0KCkpCkBA
IC0xMDksMTEgKzEwOSwxMSBAQCBSZWZQdHI8TUlNRUhlYWRlcj4gTUlNRUhlYWRlcjo6cGFyc2VI
ZWFkZXIoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlcikKICAgICAgICAgfQogICAgIH0K
IAotICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtdHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKQogICAgICAgICBt
aW1lSGVhZGVyLT5tX2NvbnRlbnRUcmFuc2ZlckVuY29kaW5nID0gcGFyc2VDb250ZW50VHJhbnNm
ZXJFbmNvZGluZyhtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSk7CiAKLSAgICBtaW1lUGFy
YW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9uIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC1sb2NhdGlvbiJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFs
dWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50TG9jYXRpb24gPSBt
aW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDUxNjkwNDVj
NzA1Zi4uMmRjMjcxNjYzYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllLi42Y2YwNDkxODE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1
LDkgKzIzNSw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgYXV0byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24obV91cmwuZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRG
aWxlRGV2aWNlSWQoZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZp
bGVTeXN0ZW1QYXRoKCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAg
ICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxl
UGF0aCk7CiAgICAgICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkp
CiAgICAgICAgICAgICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJl
cldpdGhJbnRlZ2VyOmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0Rmls
ZVByb3RvY29sRXhwZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwCmluZGV4IGUwZWVmNjg4MGYyYi4uMDcxYmIxYTQ3YmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIENlcnRpZmljYXRlSW5mbyBDZXJ0aWZpY2F0ZUluZm86
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAKIFN0cmluZyBDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNh
dGlvbkVycm9yRGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIHJldHVybiBYNTA5X3ZlcmlmeV9j
ZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcikgfTsK
IH0KIAogQ2VydGlmaWNhdGVJbmZvOjpDZXJ0aWZpY2F0ZSBDZXJ0aWZpY2F0ZUluZm86Om1ha2VD
ZXJ0aWZpY2F0ZShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKaW5k
ZXggNjEzNjUzMWI1YjFjLi42YjE2ZmMzNGRlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJl
cXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHko
KSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8i
X3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RV
cmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNS4uMDRlNjRjZDJjN2E5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBA
IC0xODcsMTEgKzE4NywxMSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAo
cGF0aC5pc0VtcHR5KCkgfHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4g
Ii8iOworICAgICAgICByZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9u
ID0gcGF0aC5yZXZlcnNlRmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0g
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBw
YXRoLnN1YnN0cmluZygwLCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRl
eCA3YjQ2ODU1YTA1MTUuLmE3YTE1MjdjODZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCkBAIC02MSwxMCAr
NjEsMTAgQEAgQ3VybENhY2hlRW50cnk6OkN1cmxDYWNoZUVudHJ5KGNvbnN0IFN0cmluZyYgdXJs
LCBSZXNvdXJjZUhhbmRsZSogam9iLCBjb25zdCBTdHIKICAgICBnZW5lcmF0ZUJhc2VGaWxlbmFt
ZSh1cmwubGF0aW4xKCkpOwogCiAgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQobV9iYXNlbmFt
ZSk7Ci0gICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiKTsKKyAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciJfcyk7CiAKICAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQobV9iYXNlbmFtZSk7Ci0gICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVu
dCIpOworICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiX3MpOwogfQogCiBD
dXJsQ2FjaGVFbnRyeTo6fkN1cmxDYWNoZUVudHJ5KCkKQEAgLTEzOSw5ICsxMzksOSBAQCBib29s
IEN1cmxDYWNoZUVudHJ5OjpzYXZlUmVzcG9uc2VIZWFkZXJzKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5lbmQoKTsKICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7
CiAgICAgICAgIFN0cmluZyBoZWFkZXJGaWVsZCA9IGl0LT5rZXk7Ci0gICAgICAgIGhlYWRlckZp
ZWxkLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICJfcyk7CiAg
ICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZChpdC0+dmFsdWUpOwotICAgICAgICBoZWFkZXJGaWVs
ZC5hcHBlbmQoIlxuIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iX3MpOwogICAg
ICAgICBDU3RyaW5nIGhlYWRlckZpZWxkTGF0aW4xID0gaGVhZGVyRmllbGQubGF0aW4xKCk7CiAg
ICAgICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGhlYWRlckZpbGUsIGhlYWRlckZpZWxkTGF0
aW4xLmRhdGEoKSwgaGVhZGVyRmllbGRMYXRpbjEubGVuZ3RoKCkpOwogICAgICAgICBtX2NhY2hl
ZFJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChpdC0+a2V5LCBpdC0+dmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1h
bmFnZXIuY3BwCmluZGV4IDNiZDJjYzc0Mjg2ZS4uNzAyYzViMzFhMDFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFn
ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsK
IAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsx
MzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlz
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2Fj
aGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRv
IGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwog
CiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lz
dGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUo
aW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcApp
bmRleCA3MjhjYjg4YmZiMDUuLjNlNWQ2ZjFjOTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQy
OSwyMyBAQCB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnMpCiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cihjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5n
IGhlYWRlcihuYW1lKTsKKyAgICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBo
ZWFkZXIgaGFzIGFuIGVtcHR5IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7Cisg
ICAgICAgIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBoZWFkZXIuYXBwZW5kKCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsK
KyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQog
Ci0gICAgYXBwZW5kUmVxdWVzdEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFk
ZXIoV1RGTW92ZShoZWFkZXIpKTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0
SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBu
byBjb250ZW50LCB0aGUgaW50ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4g
Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAg
ICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3Ry
aW5nKG5hbWUsICc6Jyk7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikp
OwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5n
JiBoZWFkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybERvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsRG93bmxvYWQuY3BwCmluZGV4IGFhZjBjOGQ5NDA3MC4uYjA5MjU2YjE5ODNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25s
b2FkLmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgQ3VybERvd25sb2FkOjp3aWxsU2VuZFJl
cXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxk
UmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVx
dWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0
aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwog
ICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAK
aW5kZXggMmJhZjk0MmRiYzk2Li43ZWIwODcwZDc5NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1
OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVu
YWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBj
b250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4
cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9z
KTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXpl
KCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwg
Z3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNp
ZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJh
bnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFu
c2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJl
cXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsK
ICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0
SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0u
dG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4
IDM4OTdlMDFjNmQwNy4uYjNhYjhkMWNiNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVE
ZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURl
bGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQog
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgp
LT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNl
LnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0
SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUuLjRm
ODlkOTczZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtNDMs
MTMgKzQzLDEzIEBAIHN0YXRpYyBTdHJpbmcgZGVmYXVsdENvb2tpZUphclBhdGgoKQogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0RmlsZU5hbWUgPSAiY29va2llLmphci5kYiI7CiAgICAg
Y2hhciogY29va2llSmFyUGF0aCA9IGdldGVudigiQ1VSTF9DT09LSUVfSkFSX1BBVEgiKTsKICAg
ICBpZiAoY29va2llSmFyUGF0aCkKLSAgICAgICAgcmV0dXJuIGNvb2tpZUphclBhdGg7CisgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZUphclBhdGgpOwogCiAjaWYgUExBVEZP
Uk0oV0lOKQogICAgIHJldHVybiBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQo
RmlsZVN5c3RlbTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCksIGRlZmF1bHRG
aWxlTmFtZSk7CiAjZWxzZQogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTkyNDE3Ci0gICAgcmV0dXJuIGRlZmF1bHRGaWxlTmFtZTsKKyAgICBy
ZXR1cm4gU3RyaW5nIHsgZGVmYXVsdEZpbGVOYW1lIH07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3Bw
CmluZGV4IDM2MTUwOWQ3NGRjOS4uZDM5YjY1YjQ0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAs
MTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4g
Y3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lv
bihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7Cisg
ICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0
bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dl
dF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7
IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4Li5mOWIwMGUxODQ1MDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZm
aXhDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVi
bGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0
IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0
byBkb21haW4ncyBkYXRhIG9yIG51bGwgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAg
ICBpZiAoY29uc3QgY2hhciogdG9wUHJpdmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21h
aW4ocHNsLCBkb21haW4pKQotICAgICAgICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZyB7IHRvcFByaXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VFcnJvci5oCmluZGV4IGQxZDdiNjZlYWE3OC4uMTQ1ZmY2OGQ1ODg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lkIGRvUGxhdGZv
cm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCi0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGNvbnN0IGN1cmxFcnJvckRvbWFpbjsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1
cmxFcnJvckRvbWFpbjsKIAogICAgIHVuc2lnbmVkIG1fc3NsRXJyb3JzIHsgMCB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVy
cm9yQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VFcnJvckN1cmwuY3BwCmluZGV4IDllM2UxNTYxYjUyOS4uOTlkMDZhMjdhMDJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1
cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3Vy
bEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21h
aW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6
Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlw
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmLi5kZWEwZGFjNGJk
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdV
UkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmln
aW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAg
IG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5z
ZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50
VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3
ZC4uNWJmOGQ2ODAxMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKQEAgLTg5LDEzICs4
OSwxMyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKGNvbnN0IEN1cmxSZXNw
b25zZSYgcmVzcG9uc2UpCiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlLmh0dHBWZXJzaW9uKSB7CiAg
ICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzEuMCIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiX3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFfMToKLSAgICAgICAgc2V0SFRU
UFZlcnNpb24oIkhUVFAvMS4xIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSJf
cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMl8wOgotICAg
ICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIik7CisgICAgICAgIHNldEhUVFBWZXJzaW9uKCJI
VFRQLzIiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OX05P
TkU6CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCAwZmU2
NWEyOWU2MzYuLmMyMGVjOGU3MjExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApA
QCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmco
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAuLmE4ZDIzNzA2NDhkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vz
c2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3JhZ2UoKSkpOwogICAgIGZvciAoYXV0byogaXRl
bSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAg
ICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYgKFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNr
ZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9nZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09
IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSB9
KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4
YTAzZmRmMDIuLjM0YTU3ZTVjMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC00NCw3ICs0
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0cmFuc3BvcnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGludCBzdGF0dXNDb2RlLCBj
b25zdCBTdHJpbmcmIHJlYXNvblBocmFzZSkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgc3RhdHVzQ29kZSwgZmFp
bGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBzdGF0dXNDb2Rl
LCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNl
RXJyb3I6Omh0dHBFcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSwgR0Vycm9yKiBlcnJvcikKQEAg
LTYxLDIyICs2MSwyMiBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0
aW9uRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1lc3NhZ2UpOwog
I2lmIFVTRShTT1VQMikKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VS
Uk9SX0RPTUFJTikgfSwgbWVzc2FnZS0+c3RhdHVzX2NvZGUsCiAgICAgICAgIHNvdXBVUklUb1VS
TChzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSksIFN0cmluZzo6ZnJvbVVURjgobWVzc2Fn
ZS0+cmVhc29uX3BocmFzZSkpOwogI2Vsc2UKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpLCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1
cyhtZXNzYWdlKSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3Rv
X3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1l
c3NhZ2UpLAogICAgICAgICBzb3VwX21lc3NhZ2VfZ2V0X3VyaShtZXNzYWdlKSwgU3RyaW5nOjpm
cm9tVVRGOChzb3VwX21lc3NhZ2VfZ2V0X3JlYXNvbl9waHJhc2UobWVzc2FnZSkpKTsKICNlbmRp
ZgogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IoY29uc3Qg
VVJMJiBmYWlsaW5nVVJMLCBHRXJyb3IqIGVycm9yKQogewotICAgIHJldHVybiBSZXNvdXJjZUVy
cm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgZmFpbGlu
Z1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOworICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVy
cm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSk7
CiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGxzRXJyb3IoY29uc3QgVVJMJiBm
YWlsaW5nVVJMLCB1bnNpZ25lZCB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNh
dGUpCiB7Ci0gICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5n
KEdfVExTX0VSUk9SKSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJMLCB1
bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpIH0sIEdfVExTX0VS
Uk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNh
dGUoKSk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRUTFNFcnJvcnModGxzRXJyb3JzKTsKICAgICBy
ZXNvdXJjZUVycm9yLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlKTsKICAgICByZXR1cm4gcmVz
b3VyY2VFcnJvcjsKQEAgLTg4LDkgKzg4LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
Ojp0aW1lb3V0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIC8vIG5ldHdvcmtpbmcg
ZXJyb3JzIGZyb20gdGhhdCBmaWxlIHNob3VsZCBiZSBtb3ZlZCBoZXJlLgogCiAgICAgLy8gVXNl
IHRoZSBzYW1lIHZhbHVlIGFzIGluIE5TVVJMRXJyb3IuaAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGltZW91dEVycm9yID0gLTEwMDE7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0ICBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiOwotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91
dCIsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRpbWVvdXQpOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOworICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBlcnJv
ckRvbWFpbiA9ICJXZWJLaXROZXR3b3JrRXJyb3IiX3M7CisgICAgcmV0dXJuIFJlc291cmNlRXJy
b3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFpbGluZ1VSTCwgIlJlcXVlc3QgdGltZWQg
b3V0Il9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImIG90aGVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVzcG9uc2VTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKaW5kZXggOWI3YjRiMzJkNzU3Li44ODhkYjdkOGYz
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29u
c3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21l
c3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0
YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNz
YWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVy
X2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2Fn
ZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkg
KzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSog
c291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7
CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRD
b250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05P
VF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAg
ICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRl
bnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UK
LSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBl
ID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVU
eXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1w
dHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAg
ICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJs
LnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1
YzUxMTgyLi5hMmYwYzk1NDcyOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEy
ICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVO
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlG
b3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3Ry
aW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxvY2FsZXMpCiB7Ci0gICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsK
KyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGRpcmVjdG9y
eVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUgOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAgICAgIFN0cmluZyBsb2NhbGUgPSBleHRy
YWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShmaWxlTmFtZSk7CiAgICAgICAgIGlmIChs
b2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQ
YXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0aFN0cmluZywgZmlsZU5hbWUpOwogICAg
ICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFYXTsKICAgICAgICAgaWYgKCFyZWFscGF0
aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwg
bm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcAppbmRleCBhYTAwYTRhZDZmNWIuLmE0
NGU0MzZiNjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4v
TG9jYWxlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwCkBAIC00MzQsOCArNDM0LDggQEAgdm9pZCBMb2NhbGVXaW46OmluaXRpYWxpemVM
b2NhbGVEYXRhKCkKICAgICBTdHJpbmcgbmVnYXRpdmVTdWZmaXggPSBlbXB0eVN0cmluZygpOwog
ICAgIHN3aXRjaCAobmVnYXRpdmVGb3JtYXQpIHsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0UGFy
ZW50aGVzaXM6Ci0gICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiOwotICAgICAgICBuZWdhdGl2
ZVN1ZmZpeCA9ICIpIjsKKyAgICAgICAgbmVnYXRpdmVQcmVmaXggPSAiKCJfczsKKyAgICAgICAg
bmVnYXRpdmVTdWZmaXggPSAiKSJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFNpZ25TcGFjZVByZWZpeDoKICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBuZWdhdGl2
ZVNpZ24gKyAiICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5
RXZlbnRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNw
cAppbmRleCBhYWU2Yzk5ZGQwNTIuLjA1YTBkMTI1NmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMg
U3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlD
b2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0g
ICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAg
ICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAg
ICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAg
ICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsK
ICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7
CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46
CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAg
ICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAg
ICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAg
ICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAg
cmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoK
LSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwog
ICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAg
cmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBj
YXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAg
ICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAg
cmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZL
X0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9z
OwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAg
ICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0
dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1
OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwog
ICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAg
ICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJu
ICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4Ogot
ICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAg
ICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAi
RjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoK
LSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJl
dHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZL
X0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1
Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAg
ICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBj
YXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVy
biAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAg
ICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
ICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAg
IHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVy
biAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0Yy
MzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9z
OwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBj
YXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0
dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVy
biAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNl
IFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJu
ICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2Ug
VktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1
cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVy
biAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBW
S19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAg
ICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAg
ICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAg
ICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAg
ICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAg
ICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsK
ICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAg
ICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNv
bWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIo
a2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhLi44MDdkNTcyMzQz
MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJp
bmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3Ry
aW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTdHJp
bmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwogfQogCiBTdHJpbmcgYWxsRmlsZXNU
ZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiYWxsIGZpbGVzIjsK
KyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlX
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwCmluZGV4IGI2YjA3NjM3Y2Q1Ni4uMjhiNTRlZjQ3YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCkBAIC03NCwzNCAr
NzQsMzQgQEAgU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKFN0
cmluZ1ZpZXcgc3RyaW5nKQogICAgIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBtaW1l
dHlwZU1hcDsKICAgICBpZiAobWltZXR5cGVNYXAuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vZmls
bCB3aXRoIGluaXRpYWwgdmFsdWVzCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0IiwgInRl
eHQvcGxhaW4iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicHMiLCAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyIsICJ0ZXh0L2NzcyIpOwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwiLCAidGV4dC9odG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiaHRtIiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhtbCIsICJ0ZXh0L3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCIsICJ0ZXh0
L3hzbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIiwgImFwcGxpY2F0aW9uL3gtamF2
YXNjcmlwdCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCIsICJhcHBsaWNhdGlvbi94
aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCIsICJhcHBsaWNhdGlv
bi94aHRtbCt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJyc3MiLCAiYXBwbGljYXRp
b24vcnNzK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiLCAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZnIiwg
ImltYWdlL3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6IiwgImltYWdl
L3N2Zyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciLCAiaW1hZ2UvanBlZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciLCAiaW1hZ2UvanBlZyIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBuZyIsICJpbWFnZS9wbmciKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ0aWYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRp
ZmYiLCAiaW1hZ2UvdGlmZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyIsICJpbWFn
ZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiLCAiaW1hZ2UvaWNvIik7Ci0g
ICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiYm1wIiwgImltYWdlL2JtcCIpOwotICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgid21sYyIsICJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiLCAiYXVkaW8veC1tNGEiKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0eHQiX3MsICJ0ZXh0L3BsYWluIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJw
ZGYiX3MsICJhcHBsaWNhdGlvbi9wZGYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBz
Il9zLCAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgiY3NzIl9zLCAidGV4dC9jc3MiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bWwi
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSJfcywgInRl
eHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIl9zLCAidGV4dC94bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhzbCJfcywgInRleHQveHNsIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyJfcywgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0Il9zLCAiYXBwbGljYXRpb24veGh0bWwr
eG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHRtbCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIl9zLCAiYXBwbGlj
YXRpb24vcnNzK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid2ViYXJjaGl2ZSJf
cywgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgic3ZnIl9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
c3ZneiJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpw
ZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpwZWciX3Ms
ICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciX3MsICJpbWFn
ZS9wbmciX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiJfcywgImltYWdlL3RpZmYi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZmYiX3MsICJpbWFnZS90aWZmIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28iX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImN1ciJfcywgImltYWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgiYm1wIl9zLCAiaW1hZ2UvYm1wIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWwiX3MsICJ0ZXh0L3ZuZC53YXAud21sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ3bWxjIl9zLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIl9zKTsKKyAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJtNGEiX3MsICJhdWRpby94LW00YSJfcyk7CiAjaWYgVVNFKEpQRUdYTCkK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiLCAiaW1hZ2UvanhsIik7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgianhsIl9zLCAiaW1hZ2UvanhsIl9zKTsKICNlbmRpZgogICAgIH0KICAg
ICBTdHJpbmcgcmVzdWx0ID0gbWltZXR5cGVNYXAuZ2V0KGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggMGIyNWZmNmMzOGM4Li42Njg1
ZWQ5OTM2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdp
bi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3Rh
dGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3Vs
dHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQg
PT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0
KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAg
ICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9
PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3Rk
OjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9h
cmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJv
YXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAg
ICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVi
b2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
InRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwi
KTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJk
VHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21Q
YXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJk
OjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1F
VHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpA
QCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0
cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2Rh
dGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQy
NSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNv
bnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1M
KSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NG
SFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBt
YXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2Zo
dG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0
bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXRE
YXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxG
cmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRs
ZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlz
QWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJp
bmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAi
LlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxP
clRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVu
dFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAg
ICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyAr
NzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0
ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0
byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawog
ICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+
IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwu
dXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJr
dXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAg
ICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYg
KCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAg
ICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFk
aW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0Zf
VEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUg
Y2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9y
IGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAg
ICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkp
OworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEds
b2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwog
ICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
OTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2Ny
aXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJl
ZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2Vy
dCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9
IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5z
aW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYs
NyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVj
dChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6Ondy
aXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRh
OwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZI
VE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVt
IHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZC4uZTE2NTMzYmUy
ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgogCiAjaW5jbHVkZSA8d2luZG93
cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25Gb3JVQVN0cmluZygpCiAgICAg
Y2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoKICAgICBjYXNlIFdpbmRvd3ND
RTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAgICAgIHJldHVybiAiV2luZG93
cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBD
RSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiX3M7CiAgICAgY2FzZSBX
aW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIjsKKyAgICAgICAgcmV0dXJu
ICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1Il9zOwogICAgIGNhc2UgV2lu
ZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAgICAgIHJldHVybiAiV2luZG93
cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTg7IFdpbiA5eCA0
LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAgcmV0dXJuICJXaW5OVDQuMCI7
CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFtZSA9ICh2ZXJzaW9uID49IFdp
bmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENFICI7Ci0gICAgcmV0dXJuIGZh
bWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicgKyBTdHJpbmc6Om51bWJlciht
aW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFtZSwgbWFqb3IsICcuJywgbWlu
b3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1MiwxMSArMTUzLDExIEBAIHN0
YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0aWMgU3RyaW5nIGFyY2hpdGVj
dHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dPVzY0KCkpCi0gICAgICAgIHJl
dHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2NCJfczsKICAgICBpZiAocHJv
Y2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9BTUQ2NCkKLSAg
ICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBw
aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFw
cGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWEuLjVkNzU0ODk3NmM0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5o
CkBAIC00NywxNyArNDcsMTcgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8T3BlblhSQnV0dG9uVHlw
ZSwgNz4gb3BlblhSQnV0dG9uVHlwZXMgewogaW5saW5lIFN0cmluZyBidXR0b25UeXBlVG9TdHJp
bmcoT3BlblhSQnV0dG9uVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmlnZ2VyIjsKLSAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0gICAgY2FzZSBP
cGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjogcmV0dXJuICJidXR0b25iIjsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlNxdWVlemU6IHJldHVybiAic3F1ZWV6ZSJfczsKKyAgICBjYXNl
IE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwor
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJyZXN0OiByZXR1cm4gInRodW1icmVzdCJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAiYnV0dG9uYSJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiJf
czsKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApA
QCAtODAsMTEgKzgwLDExIEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkF4aXNUeXBlLCAy
PiBvcGVuWFJBeGlzVHlwZXMgewogaW5saW5lIFN0cmluZyBheGlzVHlwZXRvU3RyaW5nKE9wZW5Y
UkF4aXNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQXhp
c1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayI7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJB
eGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIl9zOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMuaAppbmRleCA5ZWNjNDhhNmE2ZjAuLjU2
MzcyYmIzNTZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09w
ZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNz
VG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVz
cykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQi
OworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0
OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsKICAg
ICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTMuLjBjZjQyNDgyOWQ4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2LDcgKzU4Niw3IEBAIHZv
aWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2UmIHBhZ2UpCiAgICAgcGFn
ZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRlc3RpbmcoZmFsc2UpOwog
CiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2FkZXJDbGllbnQ6OnNpbmds
ZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAgTGVnYWN5UHJldmlld0xv
YWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9D
b21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMuLjgzNTk2OWJmYTM2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC01MywxMSArNTMsMTEgQEAgQ29tbWFuZFJlc3Vs
dDo6Q29tbWFuZFJlc3VsdChSZWZQdHI8SlNPTjo6VmFsdWU+JiYgcmVzdWx0LCBzdGQ6Om9wdGlv
bmFsPEVycm9yQ28KICAgICBpZiAoIWVycm9yT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBhdXRvIGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiKTsKKyAgICBhdXRv
IGVycm9yID0gZXJyb3JPYmplY3QtPmdldEludGVnZXIoImNvZGUiX3MpOwogICAgIGlmICghZXJy
b3IpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JPYmpl
Y3QtPmdldFN0cmluZygibWVzc2FnZSIpOworICAgIGF1dG8gZXJyb3JNZXNzYWdlID0gZXJyb3JP
YmplY3QtPmdldFN0cmluZygibWVzc2FnZSJfcyk7CiAgICAgaWYgKCFlcnJvck1lc3NhZ2UpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKaW5kZXggMDUyNDZiYWE2M2M1Li5kNzFm
NGQxMDU3ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMi4uNTkxODQ3MGI4NWNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgaW50IFdlYkRy
aXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYgVVNFKElOU1BFQ1RP
Ul9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAgICAgaWYgKGNvbnN0
IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdFVF9BRERSIikpCi0g
ICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAgdGFyZ2V0U3RyaW5n
ID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3IgKGludCBpID0gMSA7
IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0gYXJndltpXTsKQEAg
LTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChhcmd2WzBdKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0U3RyaW5nID0gU3Ry
aW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApAQCAt
OTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFyZ2V0U3RyaW5nID0g
U3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApA
QCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5PiBkZXNlcmlhbGl6
ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAgICBpZiAoIXByb3h5
Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSBwcm94eU9iamVj
dC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1dG8gc29ja3NQcm94
eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1Byb3h5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyArNDUwLDcgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBw
cm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwtPmlzVmFsaWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgICAgICAgICBhdXRv
IHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiIp
OworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5T2JqZWN0LmdldFZh
bHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nrc1ZlcnNpb25WYWx1
ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBAIC04NzIsMzAgKzg3
MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24oVmVjdG9yPENhcGFi
aWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmlsaXRpZXMuc2V0V2lu
ZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2ggKGNhcGFiaWxpdGll
cy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQcm9tcHRCZWhhdmlv
cjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0
QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyIpOworICAgICAg
ICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRC
ZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0OgotICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlv
ciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+
c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlm
eSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0IGFuZCBub3RpZnki
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpJ
Z25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVu
aGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAgICAgICAgICAgY2Fw
YWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAi
aWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3kudmFsdWVfb3IoUGFn
ZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0
ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5n
KCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6
Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIl9zKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVn
eTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAiZWFnZXIiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFj
YXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9D
YXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0
aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTUuLjJiNjcxMzQ5ZDM1YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCkBAIC0zMiwxMiAr
MzIsMTIgQEAgdm9pZCBDYXBhYmlsaXRpZXNTb2NrZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKGNvbnN0
IEpTT046Ok9iamVjdCYgbWF0Y2hlZENhcGFiaWxpdGkKIHsKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHRhcmdldEFkZHJWYWx1ZTsKICAgICBTdHJpbmcgdGFyZ2V0QWRkcjsKLSAgICBpZiAobWF0
Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFkZHIiLCB0YXJnZXRBZGRy
VmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCisgICAgaWYg
KG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIl9zLCB0YXJn
ZXRBZGRyVmFsdWUpICYmIHRhcmdldEFkZHJWYWx1ZS0+YXNTdHJpbmcodGFyZ2V0QWRkcikpCiAg
ICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRBZGRyID0gdGFyZ2V0QWRkcjsKIAogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0UG9ydFZhbHVlOwogICAgIGludCB0YXJnZXRQb3J0OwotICAg
IGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCIsIHRh
cmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0ludGVnZXIodGFyZ2V0UG9ydCkp
CisgICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRQb3J0
Il9zLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdl
dFBvcnQpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0UG9ydCA9IHRhcmdldFBvcnQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQu
Y3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNlcnZlclNvY2tldC5jcHAKaW5kZXgg
NzliN2NhNGIyZDEzLi43MGFhNDRmMGJlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
c29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0
L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RI
YW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVj
dGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2Ugewog
ICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIs
Ci0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwK
KyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3Ms
CiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXgg
M2I2ZmY4YWYyMDZhLi41N2RiYTAzZTFlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRF
bmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1
ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAg
ICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQi
CiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlv
biwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3Ig
YW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVU
b0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAvLyAi
SWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5hdGlvbiwgY29w
eVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0
b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAvLyAiSWYgYW55
IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAgICAgaWYgKCF2
YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24sIGNvcHlTaXpl
KSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIK
LSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJW
YWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCmluZGV4IGUxODA4MmU1ZDUyOC4uMzVmYWJlZTVhNGU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCkBAIC0yNTAsOSArMjUwLDkgQEAgc3RhdGljIFN0cmluZyBzdHJpbmdGb3JTU0xQcm90
b2NvbChTU0xQcm90b2NvbCBwcm90b2NvbCkKICAgICBjYXNlIGtUTFNQcm90b2NvbDEzOgogICAg
ICAgICByZXR1cm4gIlRMUyAxLjMiX3M7CiAgICAgY2FzZSBrU1NMUHJvdG9jb2xBbGw6Ci0gICAg
ICAgIHJldHVybiAiQWxsIjsKKyAgICAgICAgcmV0dXJuICJBbGwiX3M7CiAgICAgY2FzZSBrU1NM
UHJvdG9jb2xVbmtub3duOgotICAgICAgICByZXR1cm4gIlVua25vd24iOworICAgICAgICByZXR1
cm4gIlVua25vd24iX3M7CiAgICAgY2FzZSBrVExTUHJvdG9jb2xNYXhTdXBwb3J0ZWQ6CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAK
aW5kZXggMDZjY2VjNjIxYTA1Li4wOWRiZTk5NjYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAg
LTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJl
cXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3Qg
bWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJl
Y3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJl
cXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNH
RVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRU
UE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJf
cyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzLi5lNjdmN2VkMjliYzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5j
cHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVl
SFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVkaXJlY3Rz
ID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4gbWF4UmVk
aXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6
OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19N
QU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlkRmFpbChS
ZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTT1VQ
X1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3MpKTsKICNl
bHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhTT1VQ
X1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJFQ1RTLCBt
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSByZWRpcmVj
dHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01B
TllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJU
b28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUhUVFBS
ZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdSZXF1ZXN0
IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3VzIHJlZGly
ZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAgaWYgKHNv
dXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBfTUVUSE9E
X0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwgc2hvdWxk
UmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkgewotICAg
ICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAgIHJlcXVl
c3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEJv
ZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7
CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291
cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVxdWVzdC51
cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxlKQotICAg
ICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVy
cm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFkID4gMCkK
QEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkUmVxdWVz
dE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAgQVNTRVJU
KCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1dFN0cmVh
bSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVhbV9nZXRf
aGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcgY29udGVu
dFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5
cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRf
b25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBSZXNvdXJj
ZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X2NvbnRl
bnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5
cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMoaGVhZGVy
cyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRvd25s
b2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVBVEVfTk9O
RSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsK
LSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3Bv
bnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWRE
ZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJbnRlcm1l
ZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRpYXRlUGF0
aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVwbGFjZSht
X2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19GSUxFX0NS
RUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9y
KG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChk
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25sb2FkT3V0
cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0ubGVha1Jl
ZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdBcwogICAg
IGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxsX2Zpbmlz
aChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0cigpKTsK
ICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5t
X3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpAQCAtMTQ0
NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hEb3dubG9h
ZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBHVW5pcXVl
T3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25sb2FkSW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19G
SUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBudWxscHRy
LCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERl
c3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlk
RmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0Rmls
ZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1fZmlyc3RS
ZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShpbmZvKSA9
PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlw
ZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRleHQvaHRt
bCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKC0xKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBnX2ZpbGVf
aW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUg
eyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1fcmVzcG9u
c2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkp
OwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRG
cm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNlLm1pbWVU
eXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQqIHJlc3Vs
dCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdfZmlsZV9y
ZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBpZiAoZXJy
b3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgp
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNrLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFp
bikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZy
b21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+ZGlkUmVh
ZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFjayhHRmls
ZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAg
ICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYoZ19maWxl
X2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0UHRyKCkp
KTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmly
c3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAg
ICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJp
bmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVy
bCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAg
ICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXcoV1RGTW92
ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2Vi
U29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dl
YlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjcuLjk3ZjA5ODU0Y2Y1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tT
b3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJTb2NrZXRUYXNrOjpkaWRD
b25uZWN0KEdSZWZQdHI8U291cFdlYnNvY2tldENvbm5lY3Rpb24+JiYgY29ubmVjdGlvbikKICAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiZXJyb3IiLCBy
ZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkUmVjZWl2ZUVycm9yQ2FsbGJhY2spLCB0aGlz
KTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQobV9jb25uZWN0aW9uLmdldCgpLCAiY2xv
c2VkIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZENsb3NlQ2FsbGJhY2spLCB0aGlz
KTsKIAotICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KHNvdXBfd2Vic29ja2V0X2Nvbm5lY3Rpb25f
Z2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSksIGFjY2VwdGVkRXh0ZW5zaW9ucygpKTsK
KyAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChTdHJpbmcgeyBzb3VwX3dlYnNvY2tldF9jb25uZWN0
aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpIH0sIGFjY2VwdGVkRXh0ZW5zaW9u
cygpKTsKIAogICAgIG1fY2hhbm5lbC5kaWRSZWNlaXZlSGFuZHNoYWtlUmVzcG9uc2UobV9oYW5k
c2hha2VNZXNzYWdlLmdldCgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2RhdGEobV9oYW5kc2hha2VNZXNzYWdlLmdldCgpLCB0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCmluZGV4IGE5ZGRh
MzAwZmQ4Ni4uM2E4OGZjMjZhZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3Mg
RGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBt
ZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVj
dENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0Li4xNTczZGYyYjcyYzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCkBA
IC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0ZUVu
Y29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3RyaW5n
JiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29t
cGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChsb2Nh
bCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBOU09y
ZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5ndGgo
KSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5ndGgp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2FsLmxl
bmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAg
ICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBlID0g
d2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAgICAg
ICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KLSAg
ICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwgd2ly
ZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFjdGVy
ID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBgc2ln
bmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdCJyA/
ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0aDsK
KyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBp
ZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFyYWN0
ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3LDgg
QEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVjdERl
Y29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1hdDpA
Ikludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVtb3Rl
TWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmluZyBs
b2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5cGVT
dHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNv
bXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCisg
ICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAgICAg
ICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9u
IGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBjb21w
YXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxlY3Rv
cikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NC4uNTk2OTdlMjYyZDk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lm1tCkBAIC0xODcsNyArMTg3LDcgQEAgLSAoV2ViS2l0OjpSZW1vdGVPYmplY3RSZWdpc3Ry
eSYpcmVtb3RlT2JqZWN0UmVnaXN0cnkKICAgICByZXR1cm4gKl9yZW1vdGVPYmplY3RSZWdpc3Ry
eTsKIH0KIAotc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90
b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCitzdGF0aWMgTlNTdHJp
bmcgKnJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3Is
IE5TVUludGVnZXIgYmxvY2tJbmRleCkKIHsKICAgICAvLyBSZXF1aXJlZCwgbm9uLWluaGVyaXRl
ZCBtZXRob2Q6CiAgICAgY29uc3QgY2hhciogbWV0aG9kVHlwZUVuY29kaW5nID0gX3Byb3RvY29s
X2dldE1ldGhvZFR5cGVFbmNvZGluZyhwcm90b2NvbCwgc2VsZWN0b3IsIHRydWUsIHRydWUpOwpA
QCAtMTk3LDEyICsxOTcsMTIgQEAgc3RhdGljIFN0cmluZyByZXBseUJsb2NrU2lnbmF0dXJlKFBy
b3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGIKIAogICAgIEFTU0VS
VChtZXRob2RUeXBlRW5jb2RpbmcpOwogICAgIGlmICghbWV0aG9kVHlwZUVuY29kaW5nKQotICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgTlNNZXRob2RTaWdu
YXR1cmUgKnRhcmdldE1ldGhvZFNpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1
cmVXaXRoT2JqQ1R5cGVzOm1ldGhvZFR5cGVFbmNvZGluZ107CiAgICAgQVNTRVJUKHRhcmdldE1l
dGhvZFNpZ25hdHVyZSk7CiAgICAgaWYgKCF0YXJnZXRNZXRob2RTaWduYXR1cmUpCi0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gW3RhcmdldE1l
dGhvZFNpZ25hdHVyZSBfc2lnbmF0dXJlRm9yQmxvY2tBdEFyZ3VtZW50SW5kZXg6YmxvY2tJbmRl
eF0uX3R5cGVTdHJpbmc7CiB9CkBAIC0yNDcsMTcgKzI0NywxNyBAQCAtICh2b2lkKV9pbnZva2VN
ZXRob2Q6KGNvbnN0IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0
SW52b2NhdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU3RyaW5n
IHdpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVyZSBzaWduYXR1cmVXaXRoT2Jq
Q1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKV0uX3R5cGVTdHJp
bmc7Ci0gICAgICAgIFN0cmluZyBleHBlY3RlZEJsb2NrU2lnbmF0dXJlID0gcmVwbHlCbG9ja1Np
Z25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2NhdGlvbi5zZWxlY3RvciwgaSk7Cisg
ICAgICAgIE5TU3RyaW5nICp3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUg
c2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5k
YXRhKCldLl90eXBlU3RyaW5nOworICAgICAgICBOU1N0cmluZyAqZXhwZWN0ZWRCbG9ja1NpZ25h
dHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRp
b24uc2VsZWN0b3IsIGkpOwogCi0gICAgICAgIGlmIChleHBlY3RlZEJsb2NrU2lnbmF0dXJlLmlz
TnVsbCgpKSB7CisgICAgICAgIGlmICghZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkgewogICAgICAg
ICAgICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxv
Y2sgc2lnbmF0dXJlOiBjb3VsZCBub3QgZmluZCBsb2NhbCBzaWduYXR1cmUiKTsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKCFXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKHdp
cmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSkpIHsKLSAgICAgICAgICAg
IE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNp
Z25hdHVyZTogJXMgIT0gJXMiLCB3aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgZXhw
ZWN0ZWRCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIE5TTG9nKEAi
X2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTog
JUAgIT0gJUAiLCB3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpOwog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTI5OCw3ICsyOTgsNyBAQCAtICh2b2lkKV9pbnZva2VNZXRob2Q6KGNvbnN0
IFdlYktpdDo6UmVtb3RlT2JqZWN0SW52b2NhdGlvbiYpcmVtb3RlT2JqZWN0SW52b2NhdAogICAg
ICAgICB9OwogCiAgICAgICAgIFJlZlB0cjxSZXBseUJsb2NrQ2FsbENoZWNrZXI+IGNoZWNrZXIg
PSBSZXBseUJsb2NrQ2FsbENoZWNrZXI6OmNyZWF0ZShzZWxmLCByZXBseUlEKTsKLSAgICAgICAg
aWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxvY2sod2ly
ZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJl
Z2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKKyAg
ICAgICAgaWQgcmVwbHlCbG9jayA9IF9fTlNNYWtlU3BlY2lhbEZvcndhcmRpbmdDYXB0dXJlQmxv
Y2soW3dpcmVCbG9ja1NpZ25hdHVyZSBVVEY4U3RyaW5nXSwgW2ludGVyZmFjZSwgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikg
ewogICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW1dLUmVtb3RlT2JqZWN0RW5j
b2RlciBhbGxvY10gaW5pdF0pOwogICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0Omlu
dm9jYXRpb24gZm9yS2V5Omludm9jYXRpb25LZXldOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwCmluZGV4IDE0NDhkZjllOWRlYS4u
ZmYyMjFjYTQ5YTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9X
ZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9y
ZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJp
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsK
ICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAg
VVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2
LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQuLjNmOWZlNjU3
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NC4uNzAwMjZmZDI4NjQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIHdlYmtpdEF1dG9tYXRp
b25TZXNzaW9uR2V0QnJvd3Nlck5hbWUoV2ViS2l0QXV0b21hdGlvblNlc3Npb24qIHNlc3Npb24p
CiAgICAgaWYgKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykKICAgICAgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgod2Via2l0X2FwcGxpY2F0aW9uX2luZm9fZ2V0X25hbWUoc2Vzc2lv
bi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKSk7CiAKLSAgICByZXR1cm4gZ19nZXRfcHJnbmFtZSgp
OworICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGdfZ2V0X3ByZ25hbWUoKSk7CiB9CiAKIFN0
cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJWZXJzaW9uKFdlYktpdEF1dG9t
YXRpb25TZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcAppbmRleCBmODI2ZWUxODlhNTQuLjBkYWE1
YzliZDVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFs
KiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciog
cGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RF
TkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJD
b3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJr
aXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3Ry
aW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lz
dGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDky
NjJhODRkZWNlMi4uM2ZmZmM4ZmI5ZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CkBAIC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmll
d1JlbW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZh
bHVlKCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVh
bChtZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUlu
dDY0KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgi
Q2FsbGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAg
ICAgICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdl
LmdldCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAg
d2ViS2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1
ZSgpLCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXgg
OWZjNGQzMTk5MDM2Li43NTMyZmY1YmVkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtOTQs
NyArOTQsNyBAQCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OldlYktpdFByb3RvY29sSGFuZGxlcihX
ZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0KQogCiB2b2lkIFdlYktpdFByb3RvY29sSGFuZGxlcjo6
aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0KQogewotICAgIFVS
TCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJp
KHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAgICAgaWYgKHJlcXVlc3RVUkwu
aG9zdCgpID09ICJncHUiKSB7CiAgICAgICAgIGhhbmRsZUdQVShyZXF1ZXN0KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
U2V0dGluZ3MuY3BwCmluZGV4IDAzYzVhMGIwM2Q4OC4uOWI3YjVhMDc0MjJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBA
IC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0
U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAg
OiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAg
ICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51
dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRG
b250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0
dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFy
KiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2Vy
QWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNl
ckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1
c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygp
KTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsK
ICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVz
dC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0Li4wYzNlMmI3ZWE4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwCkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVS
ZXF1ZXN0UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAg
ICAgV2ViS2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsK
ICAgICBpZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBl
ID0gd2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJ
U2NoZW1lUmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAg
ICAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlh
VHlwZShjb250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsg
d2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAg
ICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJs
KCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklT
Y2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAg
ICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2Ug
PSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAg
IGlmIChzdGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1Rl
eHQoIk9LIl9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhU
VFBTdGF0dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7
Ci0gICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRh
dGEoKSk7CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBz
dGF0dXNNZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2Uu
bWltZVR5cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShN
SU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRv
U3RyaW5nKCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgog
CiAgICAgV2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2
OwogICAgIHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9y
KGVycm9yLT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KGVycm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3Vy
Y2VFcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0RyYWdTb3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJh
Z1NvdXJjZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNi4uMmE3Y2JmOWY0MWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdTb3VyY2VHdGs0LmNwcApA
QCAtODksNyArODksNyBAQCB2b2lkIERyYWdTb3VyY2U6OmJlZ2luKFNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhLCBPcHRpb25TZXQ8RHJhZ09wZXJhdGlvbj4gbwogCiAgICAgaWYgKG1fc2Vs
ZWN0aW9uRGF0YS0+aGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBi
eXRlcyA9IG1fc2VsZWN0aW9uRGF0YS0+Y3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAg
ICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVz
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsK
ICAgICB9CiAKICAgICBhdXRvKiBzdXJmYWNlID0gZ3RrX25hdGl2ZV9nZXRfc3VyZmFjZShndGtf
d2lkZ2V0X2dldF9uYXRpdmUobV93ZWJWaWV3KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwCmluZGV4IGY1YWYwOTJiYjIyNS4uMWY1
MjJkZTk2YmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0
KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRz
KGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NB
UEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBw
bGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpT
bWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9t
X2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAw
LCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3Qu
Z2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRh
OjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAg
ICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVs
dHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihH
REtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAg
ICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3Rr
NC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNw
cAppbmRleCBhYmJhY2EyOWM3NDEuLjc0NzkxNDJiOWYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcg
QEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2Nv
bnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0
L3VyaS1saXN0Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5
cGUoZm9ybWF0c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92
bmQud2Via2l0Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxk
ZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSk7CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUo
Zm9ybWF0c0J1aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKTsKICAgICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19j
b250ZW50X2Zvcm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRh
cmdldCwgImFjY2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ry
b3AqIGdka0Ryb3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3Li4y
YTA2NmI4NWNjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxl
ci5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKCkKICAgICAgICAgZ19vYmplY3Rfd2Vha191
bnJlZihHX09CSkVDVCh3ZWJWaWV3KSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlmeT4od2Vi
Vmlld0Rlc3Ryb3llZCksIHRoaXMpOwogCiAgICAgZm9yIChhdXRvKiB1c2VyQ29udGVudE1hbmFn
ZXIgOiBtX3VzZXJDb250ZW50TWFuYWdlcnMpIHsKLSAgICAgICAgd2Via2l0VXNlckNvbnRlbnRN
YW5hZ2VyR2V0VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+
cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFu
YWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJl
bW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50
V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYo
R19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vha05vdGlm
eT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQogfQpAQCAtOTks
NyArOTksNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dXNlckNvbnRl
bnRNYW5hZ2VyRGVzdHJveWVkKFJlbW90ZUluc3BlY3RvcgogCiB2b2lkIFJlbW90ZUluc3BlY3Rv
clByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiBy
ZXF1ZXN0KQogewotICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKHsgfSwgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpKTsKKyAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTChT
dHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkgfSk7CiAg
ICAgaWYgKCFyZXF1ZXN0VVJMLnBvcnQoKSkgewogICAgICAgICBHVW5pcXVlUHRyPEdFcnJvcj4g
ZXJyb3IoZ19lcnJvcl9uZXdfbGl0ZXJhbChXRUJLSVRfUE9MSUNZX0VSUk9SLCBXRUJLSVRfUE9M
SUNZX0VSUk9SX0NBTk5PVF9TSE9XX1VSSSwgIkNhbm5vdCBzaG93IGluc3BlY3RvciBVUkw6IG5v
IHBvcnQgcHJvdmlkZWQiKSk7CiAgICAgICAgIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmlu
aXNoX2Vycm9yKHJlcXVlc3QsIGVycm9yLmdldCgpKTsKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdChXZWJLaXRVUklT
Y2hlbWVSZXF1ZXN0KiByZXF1ZQogICAgIGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA9IHdlYmtp
dF93ZWJfdmlld19nZXRfdXNlcl9jb250ZW50X21hbmFnZXIod2ViVmlldyk7CiAgICAgYXV0byB1
c2VyQ29udGVudE1hbmFnZXJSZXN1bHQgPSBtX3VzZXJDb250ZW50TWFuYWdlcnMuYWRkKHVzZXJD
b250ZW50TWFuYWdlcik7CiAgICAgaWYgKHVzZXJDb250ZW50TWFuYWdlclJlc3VsdC5pc05ld0Vu
dHJ5KSB7Ci0gICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpj
cmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3Ii
LCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgYXV0byBo
YW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlw
dE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdl
dFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPmFkZFVzZXJT
Y3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vh
a19yZWYoR19PQkpFQ1QodXNlckNvbnRlbnRNYW5hZ2VyKSwgcmVpbnRlcnByZXRfY2FzdDxHV2Vh
a05vdGlmeT4odXNlckNvbnRlbnRNYW5hZ2VyRGVzdHJveWVkKSwgdGhpcyk7CiAgICAgfQpAQCAt
MTQzLDcgKzE0Myw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJn
ZXRMaXN0Q2hhbmdlZChSZW1vdGVJbnNwZWN0b3JDbGllbnQmIGNsCiAgICAgICAgIGlmICh3ZWJr
aXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKHsgfSwgd2Via2l0X3dlYl92aWV3X2dldF91
cmkod2ViVmlldykpOworICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTChTdHJpbmcgeyB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSB9KTsKICAgICAgICAgYXV0byBjbGllbnRGb3JX
ZWJWaWV3ID0gbV9pbnNwZWN0b3JDbGllbnRzLmdldCh3ZWJWaWV3VVJMLmhvc3RBbmRQb3J0KCkp
OwogICAgICAgICBpZiAoIWNsaWVudEZvcldlYlZpZXcpIHsKICAgICAgICAgICAgIC8vIFRoaXMg
dmlldyBpcyBub3Qgc2hvd2luZyBhIGluc3BlY3RvciB2aWV3IGFueW1vcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmlu
ZGV4IDk5N2I2YTVlZmZmMy4uNTQyOTNlN2U0YzkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOS4uMjJmYzBhOGRmYjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIGdib29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3Is
IGNvbnN0IGdjaGFyKiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xv
ciwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7
CiAKLSAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xv
cldpdGhvdXRDb250ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3Ig
PSBXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBj
b2xvclN0cmluZyB9KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBGQUxTRTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlYy4uYmMx
ZTFjOWUzYzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZl
QnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCkBAIC00MSw4ICs0MSw4IEBAIHN0YXRpYyBT
dHJpbmcgbWFsd2FyZURldGFpbHNCYXNlKFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkK
ICAgICByZXR1cm4gcmVzdWx0Lm1hbHdhcmVEZXRhaWxzQmFzZVVSTFN0cmluZzsKICNlbHNlCiAg
ICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2Vu
dF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jaGVjay5odG1s
P3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly9nb29nbGUuY29tL3NhZmVicm93c2lu
Zy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVy
bHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6
Ly9nb29nbGUuY29tL3NhZmVicm93c2luZy9kaWFnbm9zdGljP3RwbD1zYWZhcmkiX3M7CiAjZW5k
aWYKIH0KIApAQCAtNjMsOCArNjMsOCBAQCBzdGF0aWMgU3RyaW5nIHJlcG9ydEFuRXJyb3JCYXNl
KFNTQlNlcnZpY2VMb29rdXBSZXN1bHQgKnJlc3VsdCkKICAgICByZXR1cm4gcmVzdWx0LnJlcG9y
dEFuRXJyb3JCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3VsdC5wcm92aWRlciBp
c0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAgcmV0dXJuICJodHRw
czovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSI7Ci0gICAgcmV0
dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93c2luZy9yZXBvcnRfZXJyb3IvP3Rw
bD1zYWZhcmkiOworICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY29t
cGxhaW4uaHRtbD90cGw9c2FmYXJpIl9zOworICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xl
LmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZp
ZXdDb250cm9sbGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0
ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDVlNjY3OGZlNzNlNS4uNWY1ZTJkNDUy
YzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVt
UHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2Vy
ZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBl
ZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2
b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldp
dGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlH
dGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MS4uMjY2YTc3MzFjNzg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVm
ZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJX
ZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRl
KFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVM
T1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIElu
c3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBw
cmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsx
MTQsNyBAQCBzdGF0aWMgdm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09i
amVjdCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRp
Y19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBh
dGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChw
YXRoLmdldCgpKSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRm
b3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHAKaW5kZXggMjgyMmVlODdlZjQ1Li5iNzcxY2FkZTU0YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0
ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JWaWV3
KTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmlu
ZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRvIHByZWZlcmVuY2VzID0gV2Vi
UHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3Mp
OwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBBbGxvdyBkZXZlbG9wZXJzIHRv
IGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVpbGRzIHdpdGhvdXQgY2hhbmdp
bmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQo
dHJ1ZSk7CkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGljIHZvaWQgZmlsZVJlcGxhY2VDb250ZW50
c0NhbGxiYWNrKEdPYmplY3QqIHNvdXJjZU9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXMKIAogICAg
IGF1dG8qIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlUHJveHkqPih1c2VyRGF0YSk7CiAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBwYXRoKGdfZmlsZV9nZXRfcGF0aChmaWxlKSk7Ci0gICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUocGF0aC5nZXQoKSkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFN0cmluZzo6ZnJv
bVVURjgocGF0aC5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0
Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgY29udGVu
dCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZURpYWxvZykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9z
b2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCBhMjYzMDg4NTcz
Y2YuLmI2NjQzNzEzZjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94
eSwKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xp
ZW50PihyZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3Nh
Z2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5k
bGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1l
c3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50
Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsK
IAogICAgIC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9h
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1v
dGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3Yjgw
NDc3YmRjLi5hMWM2OGU0MjBlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVBy
b3h5V2luLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIExSRVNVTFQgUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eTo6b25DbG9zZSgpCiAKIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewotICAgIFJlZlB0
cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0
cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktp
dDIuIl9zLCAiV2ViS2l0Mi4iX3MpOwogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHModHJ1ZSk7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3Rv
clVJUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9X
ZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAppbmRleCBmNDAwZDVlNzM3MTkuLjFhMTkxNTU1Zjll
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAg
V2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZSgpCiB7CiAgICAgQVNTRVJUKGluc3BlY3RlZFBhZ2UoKSk7CiAKLSAgICBhdXRvIHByZWZl
cmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxP
UEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5z
cGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHBy
ZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1
bmNoZXIuY3BwCmluZGV4IDlkM2Y5OGEzNDk0MC4uZTJmOTcxMzI1NTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFw
TGF1bmNoZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3Mgewog
CiBzdGF0aWMgdm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3Ms
IGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikK
IHsKLSAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgp
OworICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5n
Ojpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAg
Q1N0cmluZyBycGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0
b3IoVmVjdG9yPENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRh
KCkgfSkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdy
YXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAg
ICAgICAgYWRkRXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5k
Ym94QXJncyk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2Nr
ZXQiLCAid2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+
IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlz
RGlyZWN0b3J5Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5
Il9zIH07CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAg
ICAgICAgICAgIFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6
YXRpb25EYXRhLmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHko
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5
ZmQyNDQuLmZkNzE0YTMwNTkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLmNwcApAQCAtNTUsNyArNTUsNyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAg
ICBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJp
YnV0aW9uZC5zZXJ2aWNlIik7CisgICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFw
cGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGli
LmNwcAppbmRleCAwZDFmNDAwZTQ0NDEuLmNmZTdhMGViM2JlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcApAQCAtNzksNyAr
NzksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNz
KGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmlz
U2VydmljZVdvcmtlclByb2Nlc3MpIHsKICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50Rmls
ZURlc2NyaXB0b3IgPSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAg
IHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25f
bGlicmFyeV9uYW1lKCkpOworICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFy
eU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3Bl
X2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAg
IH0KICNlbmRpZgogCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRm
b3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAg
ICAgICAgIHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvLjEiKTsKICAg
ICAgICAgaWYgKEFjY2VsZXJhdGVkQmFja2luZ1N0b3JlV2F5bGFuZDo6Y2hlY2tSZXF1aXJlbWVu
dHMoKSkgewogICAgICAgICAgICAgcGFyYW1ldGVycy5ob3N0Q2xpZW50RmlsZURlc2NyaXB0b3Ig
PSB3cGVfcmVuZGVyZXJfaG9zdF9jcmVhdGVfY2xpZW50KCk7Ci0gICAgICAgICAgICBwYXJhbWV0
ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVw
cmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlf
bmFtZSgpKTsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFt
ZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmcgeyB3cGVfbG9h
ZGVyX2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkgfSk7CiAgICAgICAg
IH0KICNlbGlmIFVTRShFR0wpCiAgICAgICAgIHBhcmFtZXRlcnMud2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5TmFtZSA9IFdheWxhbmRDb21wb3NpdG9yOjpzaW5nbGV0b24oKS5kaXNwbGF5TmFtZSgp
OwpAQCAtMTE2LDggKzExNiw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzCiAKICAgICBHQXBw
bGljYXRpb24qIGFwcCA9IGdfYXBwbGljYXRpb25fZ2V0X2RlZmF1bHQoKTsKICAgICBpZiAoYXBw
KQotICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQgPSBnX2FwcGxpY2F0aW9uX2dldF9h
cHBsaWNhdGlvbl9pZChhcHApOwotICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gZ19n
ZXRfYXBwbGljYXRpb25fbmFtZSgpOworICAgICAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uSUQg
PSBTdHJpbmcgeyBnX2FwcGxpY2F0aW9uX2dldF9hcHBsaWNhdGlvbl9pZChhcHApIH07CisgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbk5hbWUgPSBTdHJpbmcgeyBnX2dldF9hcHBsaWNhdGlvbl9u
YW1lKCkgfTsKIAogICAgIHBhcmFtZXRlcnMuaW5zcGVjdG9yU2VydmVyQWRkcmVzcyA9IEluc3Bl
Y3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjppbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3Bw
CmluZGV4IDYzMzg4NGRhZGNiMS4uODY0ZDBlMzZmYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpw
bGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBs
YXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRh
dGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQo
KSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXph
dGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVu
YWJsZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29s
LT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5
Li42MjY5Y2M0ZDI4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIv
V2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8
d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNF
X0RJUkVDVE9SWSAid2Via2l0Z3RrIgorI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3Rr
Il9zCiAjZWxpZiBQTEFURk9STShXUEUpCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisj
ZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiX3MKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGsz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRl
eCBlOGI5YTA0N2U4ZmIuLmUzZTBjNDRkNWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgQ2xpcGJv
YXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICBp
ZiAoc2VsZWN0aW9uRGF0YS5jYW5TbWFydFJlcGxhY2UoKSkKICAgICAgICAgZ3RrX3RhcmdldF9s
aXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGlj
YXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6
OlNtYXJ0UGFzdGUpOwogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkKLSAg
ICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3Rh
dGljX3N0cmluZyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwg
Q2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2Fk
ZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3JlOjpQYXN0
ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDAsIENsaXBib2FyZFRh
cmdldFR5cGU6OkN1c3RvbSk7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0a1Rh
cmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0Lmdl
dCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIENsaXBib2Fy
ZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgICAg
ICAgICBjYXNlIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbToKICAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5zZWxlY3Rpb25EYXRhLmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICAgICAgICAg
ICAgICBhdXRvKiBidWZmZXIgPSBkYXRhLnNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpOwotICAg
ICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0
b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKSksIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRh
KCkpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25f
ZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhXZWJDb3Jl
OjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSksIDgsIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oYnVmZmVyLT5kYXRhKCkpLCBidWZmZXItPnNpemUo
KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCmlu
ZGV4IDA3YWJiNzEzMTk4OC4uNGZkOTYxNmM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlw
Ym9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAg
ICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8
R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMo
KTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9y
X2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdl
dCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3
X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJh
Y3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1w
dHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5n
VHJhbnNsYXRvci5jcHAKaW5kZXggMTU5OTcxYWNjNmYwLi5jYmYxYTI5ZmRhMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cApAQCAtMTk4LDIzICsxOTgsMjMgQEAgS2V5QmluZGluZ1RyYW5zbGF0b3I6On5LZXlCaW5kaW5n
VHJhbnNsYXRvcigpCiBzdHJ1Y3QgS2V5Q29tYmluYXRpb25FbnRyeSB7CiAgICAgdW5zaWduZWQg
Z2RrS2V5Q29kZTsKICAgICB1bnNpZ25lZCBzdGF0ZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogfTsKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9u
RW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9IHsKLSAgICB7IEdES19LRVlfYiwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVCb2xkIiAgICAgIH0sCi0g
ICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlSXRhbGljIiAgICB9LAotICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdE
S19LRVlfZ3JlYXRlciwgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDYW5j
ZWwiICAgICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIiAgICAgICB9LAotICAgIHsgR0RLX0tFWV9U
YWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0
YWIiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVy
LCAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9
LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfUmV0dXJuLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAg
eyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
SW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9N
QVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19L
RVlfViwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJQYXN0ZUFz
UGxhaW5UZXh0IiB9LAorICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiX3MgICAgICB9LAorICAgIHsgR0RLX0tFWV9p
LCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2dsZUl0YWxp
YyJfcyAgICB9LAorICAgIHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9ncmVh
dGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAg
ICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkluc2VydFRhYiJfcyAgICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiX3Mg
ICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9
LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAg
IHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywg
IlBhc3RlQXNQbGFpblRleHQiX3MgfSwKIH07CiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBoYW5k
bGVLZXlCaW5kaW5nc0Zvck1hcChjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5KiBtYXAsIHVuc2ln
bmVkIG1hcFNpemUsIHVuc2lnbmVkIGtleXZhbCwgR2RrTW9kaWZpZXJUeXBlIHN0YXRlKQpAQCAt
MjY3LDcxICsyNjcsNzEgQEAgVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNv
bW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRLZXkqIGV2ZW50KQogI2VuZGlmCiAKIHN0YXRpYyBj
b25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IHByZWRlZmluZWRLZXlCaW5kaW5nc1tdID0gewotICAg
IHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0
LCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVCYWNrd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1Bf
TGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJh
Y2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sg
fCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElG
VF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIiB9LAotICAgIHsgR0RL
X0tFWV9SaWdodCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAg
ICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRN
b2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9SaWdodCwg
ICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIg
fSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NI
SUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBH
REtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAi
TW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9VcCwg
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgfSwK
LSAgICB7IEdES19LRVlfS1BfVXAsICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlVXAiIH0sCi0gICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAot
ICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAg
ICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRG93biwg
ICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgfSwK
LSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93biIgfSwKLSAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfRG93biwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlf
SG9tZSwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9C
ZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAotICAg
IHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfSG9tZSwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZ
X0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
IiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtf
U0hJRlRfTUFTSywgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0VuZCwgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiB9
LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdE
S19LRVlfS1BfRW5kLCAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0VuZCwg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZE
b2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNL
LCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tF
WV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVU
b0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0Vu
ZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZE
b2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9QYWdlX0Rvd24sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlRG93biIgfSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2Vf
RG93biwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKLSAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9EZWxl
dGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0RlbGV0ZSwgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0
ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndh
cmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFj
ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQi
IH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9hLCAgICAg
ICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwK
LSAgICB7IEdES19LRVlfYSwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZU
X01BU0ssICJVbnNlbGVjdCIgfSwKLSAgICB7IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJTZWxlY3RBbGwiIH0sCi0gICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiIH0sCi0gICAgeyBHREtfS0VZX3gsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX3Ys
ICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9M
X01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX0tQX0luc2Vy
dCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0KKyAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlTGVmdCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0sCisgICAgeyBHREtfS0VZX0xl
ZnQsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9MZWZ0LCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1v
dmVXb3JkQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIl9z
IH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAg
eyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1Bf
UmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2Fy
ZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdE
S19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAg
ICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAg
IEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05U
Uk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9VcCwgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwgICAg
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAg
IHsgR0RLX0tFWV9VcCwgICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwg
ICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlm
eVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0Rvd24sICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24i
X3MgfSwKKyAgICB7IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAg
ICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9Eb3duLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZM
aW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIl9zIH0sCisgICAgeyBHREtf
S0VZX0hvbWUsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92
ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0hvbWUsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
QmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hv
bWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQi
X3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RL
X1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdE
S19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlv
biJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9F
bmQsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9m
TGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAg
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9
LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsg
R0RLX0tFWV9FbmQsICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
Ik1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50Il9z
IH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRf
TUFTSywgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7
IEdES19LRVlfUGFnZV9VcCwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1BhZ2VfVXAsICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCJfcyB9LAorICAgIHsgR0RLX0tF
WV9QYWdlX1VwLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX1BhZ2VfRG93biwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtf
S0VZX0RlbGV0ZSwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVs
ZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiX3MgfSwKKyAgICB7IEdES19L
RVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19DT05U
Uk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAg
eyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRGVsZXRlQmFja3dhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCJfcyB9LAorICAg
IHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCJfcyB9LAorICAg
IHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFT
SywgIlVuc2VsZWN0Il9zIH0sCisgICAgeyBHREtfS0VZX3NsYXNoLCAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZ
X2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxl
Y3QiX3MgfSwKKyAgICB7IEdES19LRVlfeCwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfYywgICAgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX3YsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAg
ICAgICAgICAgICAgICAgICJDdXQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtf
S0VZX0tQX0luc2VydCwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFz
dGUiX3MgfQogfTsKIAogVmVjdG9yPFN0cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1h
bmRzRm9yS2V5dmFsKHVuc2lnbmVkIGtleXZhbCwgdW5zaWduZWQgbW9kaWZpZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXgg
YTg2YjM0ZGRhYThmLi5lMzE4ODlmMzQ0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
U3RyaW5nIGJhY2tlbmRDb21tYW5kc1BhdGgoKQogICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVt
UmVwcmVzZW50YXRpb24odXJsUmVmLmdldCgpLCBmYWxzZSwgcmVpbnRlcnByZXRfY2FzdDxVSW50
OCo+KHBhdGgpLCBNQVhfUEFUSCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
cGF0aDsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChwYXRoKTsKIH0KIAogc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggZTVhOGMzYjY5ZTE3Li45
ZDdlNzFjMjI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAg
LTI0MCw3ICsyNDAsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQ
YWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3BhZ2Ut
PmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVNT1RF
X0lOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3Ii
KTsKKyAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVj
dG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwogI2Vu
ZGlmCiAKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJl
IG1hdGNoZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1Li40NGNiZjczYzZhZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTczMywxMCArNzMzLDEw
IEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBh
Z2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlm
IChtZXNzYWdlTmFtZSA9PSBTdHJpbmcoIkdldFNuYXBzaG90IikpIHsKLSAgICAgICAgU25hcHNo
b3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4o
c3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RPcHRpb25zIikp
LT52YWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PEFQ
STo6VUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxiYWNrSUQiKSktPnZhbHVlKCk7Ci0gICAgICAg
IFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9uPihzdGF0
aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+dmFs
dWUoKSk7Ci0gICAgICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8
QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRyYW5zcGFyZW50QmFja2dyb3VuZCIpKS0+dmFs
dWUoKTsKKyAgICAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19j
YXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RPcHRpb25zIl9zKSktPnZhbHVlKCkpOworICAgICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJ
RCJfcykpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNf
Y2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdl
dCgiU25hcHNob3RSZWdpb24iX3MpKS0+dmFsdWUoKSk7CisgICAgICAgIGJvb2wgdHJhbnNwYXJl
bnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRy
YW5zcGFyZW50QmFja2dyb3VuZCJfcykpLT52YWx1ZSgpOwogCiAgICAgICAgIFJlZlB0cjxXZWJJ
bWFnZT4gc25hcHNob3RJbWFnZTsKICAgICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnBy
aXYtPndlYlBhZ2U7CkBAIC03NjUsMTAgKzc2NSwxMCBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRS
ZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VO
YQogICAgICAgICB9CiAKICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VS
ZXBseTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSIsIHdlYlBhZ2UpOwotICAgICAg
ICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lEIiwgQVBJOjpVSW50NjQ6OmNyZWF0ZShjYWxs
YmFja0lEKSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJ
bWFnZSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkt
PnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CisgICAgICAgIG1lc3NhZ2VSZXBs
eS5zZXQoIlBhZ2UiX3MsIHdlYlBhZ2UpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxs
YmFja0lEIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVz
c2FnZVJlcGx5LnNldCgiU25hcHNob3QiX3MsIHNuYXBzaG90SW1hZ2UpOworICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2ViUGFn
ZS5EaWRHZXRTbmFwc2hvdCJfcywgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNz
YWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3Vt
ZW50R3RrLmNwcAppbmRleCBmZTBkNDAxOGUzZjguLmE5Y2RhYzljMDkxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURvY3VtZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCkBAIC0xOTA5LDkg
KzE5MDksOSBAQCBnY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfdmlzaWJpbGl0eV9zdGF0
ZShXZWJLaXRET01Eb2N1bWVudCogc2VsZikKICAgICBXZWJDb3JlOjpEb2N1bWVudCogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKICAgICBzd2l0Y2ggKGl0ZW0tPnZpc2liaWxpdHlTdGF0ZSgp
KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpWaXNpYmlsaXR5U3RhdGU6OkhpZGRlbjoKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoImhpZGRlbiIpOworICAgICAgICByZXR1cm4gY29u
dmVydFRvVVRGOFN0cmluZygiaGlkZGVuIl9zKTsKICAgICBjYXNlIFdlYkNvcmU6OlZpc2liaWxp
dHlTdGF0ZTo6VmlzaWJsZToKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoInZp
c2libGUiKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoInZpc2libGUiX3Mp
OwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUv
V2ViRWRpdG9yQ2xpZW50V1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcAppbmRleCA0NTJjZjBjYzhjN2EuLjMz
ODRmYTI1OGMyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcApAQCAtMTY4
LDcgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudChjb25zdCBL
ZXlib2FyZEV2ZW50JiBldmVudCkKIAogc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJhbWUm
IGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50
JiBwbGF0Zm9ybUV2ZW50KQogewotICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtl
eUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgeyBpbnRlcnByZXRLZXlFdmVu
dChldmVudCkgfTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAg
IGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKQEAgLTE5MCw3
ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJv
YXJkRXZlbnQmIGV2ZW50LCBjb25zdCBQbGF0Zm9ybUtleQogCiBzdGF0aWMgdm9pZCBoYW5kbGVL
ZXlEb3duKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudCYpCiB7Ci0gICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5
RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGludGVycHJldEtleUV2ZW50
KGV2ZW50KSB9OwogICAgIGlmIChjb21tYW5kTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkNmIzMjJhMDk2MGYuLmEyZTFjMTMxNTA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIsNyArMzg1Miw3IEBAIHZvaWQgV2ViUGFn
ZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2
YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRo
YXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4iX3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFp
bHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBkb2N1bWVudC0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6
V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3Vu
ZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVz
ZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIl9zKTsKICAgICAg
ICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2FkaW5nLCAicnVuSmF2YVNjcmlwdDogSWdu
b3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAppbmRleCA5YmFhNzI4ODRhODkuLjFjOTM2
OWRjOGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xp
Yi9XZWJQYWdlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z2xpYi9XZWJQYWdlR0xpYi5jcHAKQEAgLTExNCwyMiArMTE0LDIyIEBAIHZvaWQgV2ViUGFnZTo6
Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0YXRlJiByZXN1bHQp
IGNvbnN0CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNvbnN0IEVkaXRvciYgZWRpdG9yID0gZnJh
bWUuZWRpdG9yKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc1JhbmdlKCkpIHsKLSAgICAgICAgaWYg
KGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikg
PT0gVHJpU3RhdGU6OlRydWUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCJfcykgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAg
ICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUJvbGQ7
Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5
bGUsICJpdGFsaWMiKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxl
Y3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyJfcykgPT0gVHJpU3Rh
dGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpID09
IFRyaVN0YXRlOjpUcnVlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiX3MpID09
IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmli
dXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9u
SGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgImxpbmUt
dGhyb3VnaCIpID09IFRyaVN0YXRlOjpUcnVlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
bkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJsaW5l
LXRocm91Z2giX3MpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERh
dGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVTdHJpa2VUaHJvdWdoOwogICAgIH0gZWxz
ZSBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpKQorICAgICAgICBp
ZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAi
Ym9sZCJfcykpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9
IEF0dHJpYnV0ZUJvbGQ7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHls
ZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpKQorICAgICAgICBpZiAoZWRpdG9yLnNl
bGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiX3MpKQog
ICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJ
dGFsaWNzOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJv
cGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpKQorICAgICAg
ICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSJfcykpCiAgICAgICAgICAgICBwb3N0TGF5
b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLSAgICAgICAg
aWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSkKKyAgICAgICAgaWYgKGVkaXRvci5z
ZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5F
ZmZlY3QsICJsaW5lLXRocm91Z2giX3MpKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlw
aW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVTdHJpa2VUaHJvdWdoOwogICAgIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50
T3BlcmF0aW9uR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9X
ZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKaW5kZXggMmYyMWYyYmVmM2M5Li5jMmZiY2JjOTA2OWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmlu
dE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlID0gZ3RrX3ByaW50X2pvYl9nZXRfc3VyZmFjZShtX3ByaW50Sm9iLmdldCgp
LCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgICAg
IHByaW50RG9uZShwcmludEVycm9yKGZyYW1lVVJMKCksIGVycm9yLT5tZXNzYWdlKSk7CisgICAg
ICAgICAgICBwcmludERvbmUocHJpbnRFcnJvcihmcmFtZVVSTCgpLCBTdHJpbmc6OmZyb21VVEY4
KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBwcmludEpvYkNvbXBs
ZXRlKEd0a1ByaW50Sm9iKiwgV2ViUHJpbnRPcGVyYXRpb25HdGtVbml4KiBwcmludE9wZXJhdGlv
biwgY29uc3QgR0Vycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIHByaW50T3BlcmF0aW9uLT5w
cmludERvbmUoZXJyb3IgPyBwcmludEVycm9yKHByaW50T3BlcmF0aW9uLT5mcmFtZVVSTCgpLCBl
cnJvci0+bWVzc2FnZSkgOiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkpOworICAgICAgICBwcmlu
dE9wZXJhdGlvbi0+cHJpbnREb25lKGVycm9yID8gcHJpbnRFcnJvcihwcmludE9wZXJhdGlvbi0+
ZnJhbWVVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpIDogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcigpKTsKICAgICAgICAgcHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IgPSAw
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzQuLjM0ZmYyZDQwNTg3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAg
LTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgY29tbWFuCiAgICAgCiAgICAgc3dp
dGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlVu
ZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZl
bnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIsICJLZXlaIl9zLAotICAgICAgICBA
IlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpu
b3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3Jt
RXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAgICAgInoiX3MsICJLZXlaIl9zLAor
ICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBX
YWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJk
RXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAieSIsCi0gICAgICAgICJ5IiwgIktl
eVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlm
aWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiX3MsICJ5Il9zLAorICAgICAgICAi
eSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3MsIDg5LCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVCb2xkZmFjZToKLSAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
ImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0gICAgICAgIEAiVSswMDQyIiwgNjYs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktleUIiX3MsCisgICAgICAgICJVKzAw
NDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
OjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50
KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAotICAgICAgICAiaSIsICJLZXlJIl9z
LAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMs
IFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAiaSJfcywKKyAgICAgICAgImkiX3Ms
ICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3MywgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
bW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5kZXJsaW5lOgotICAgICAgICBrZXlF
dmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAidSIs
ICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAgICAgQCJVKzAwNTUiLCA4NSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBr
ZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAi
dSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJfcywKKyAgICAgICAgIlUrMDA1NSJf
cywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CkBAIC00MzI0LDcg
KzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikg
Y29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKGRvY3VtZW50LT5xdWly
a3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgpICYmIG9zTmFtZUZvclVzZXJBZ2Vu
dCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRo
QXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAgICAgICByZXR1cm4gc3RhbmRhcmRV
c2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyJfcyk7CiAKICAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYmI1MTJhZWMzNDUwLi43NjQ0M2E5NDI1NGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdp
bi5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCBib29sIFdlYlBhZ2U6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KFdlYkNvcmU6OktleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50
eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZl
bnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1
dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZl
dmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmlu
ZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5
cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBk
b2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQppbmRleCBlMDEw
NDU3NDdmNzQuLmI3ZmU4MDA0ZTQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xp
ZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFt
X2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQg
Y3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRz
IGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBu
dWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1f
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAg
ICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhNy4uYTI2MmJmYzE0MDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3ICs3MTYsNyBAQCAtIChCT09M
KV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbGluay5kb2N1
bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlhUXVlcnlTZXQ6OmNyZWF0ZSht
ZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQpKTsKLSAgICByZXR1cm4gTWVk
aWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwgZG9jdW1lbnQucmVuZGVyVmll
dygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6IG51bGxwdHIgfS5ldmFsdWF0
ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7
ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQu
cmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQu
Z2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4IDQyMDEwN2RhNjViNy4uMDk4
ZjhlYzI5NjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaApAQCAtMjc1LDcgKzI3NSw3IEBAIGlubGluZSB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKFN0cmluZ1ZpZXcsIGlu
dCogbWlzc3BlbGxpbmdMCiAKIGlubGluZSBTdHJpbmcgV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRv
Q29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKQogewotICAg
IHJldHVybiAiIjsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAogaW5saW5lIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpjaGVja0dyYW1tYXJPZlN0cmluZyhTdHJpbmdWaWV3LCBWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwgaW50KiBi
YWRHcmFtbWFyTGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJEYXRhU291cmNlLm1tCmluZGV4IDVlYjVkNmExOWU2ZC4uYmMyYTMyZWEzMzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0y
MDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9P
TClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4
dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJp
dmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10p
OworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhl
bmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1Yi4uZjE0ZmEzOTk0ZjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2LDcgKzE4NzYsNyBAQCAt
IChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0cmluZyAqKXN0eWxlIGZy
YW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRpc3BsYXlMaXN0RHJhd2lu
Z0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldEZvbnRGYWxs
YmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIik7CisgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRGYW1pbHkoIkFwcGxlQ29s
b3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRTY3JpcHRN
YXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRT
Y3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
QWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMS4uYzI5MGRhZTM3OTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgQWNjZXNz
aWJsZUJhc2U6OkFjY2Vzc2libGVCYXNlKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3
aW5kb3cpCiAgICAgQVNTRVJUX0FSRyhvYmosIG9iaik7CiAgICAgbV9vYmplY3QtPnNldFdyYXBw
ZXIodGhpcyk7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxl
QmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UoKQogewogICAg
IC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nlc3NpYmxl
QmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiX3Mp
OwogfQogCiBBY2Nlc3NpYmxlQmFzZSogQWNjZXNzaWJsZUJhc2U6OmNyZWF0ZUluc3RhbmNlKEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgSFdORCB3aW5kb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKaW5kZXggOWExZjAxMTIy
MWJjLi5hNWMwN2ViOTEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NG
RGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFn
Il9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRl
LmNwcAppbmRleCAxYTgwYzRkNmU4ZTIuLjMwMmY2MzdhYmMwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcApAQCAtNDUsMTMg
KzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERvd25sb2FkRGVsZWdh
dGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKIH0KIAog
RGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxvYWQqPjo6aXRlcmF0
b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBtX2Rvd25sb2Fkcy5l
bmQoKTsgKytpKQogICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBlOGU1ZjVjNGNjMTEu
LjFmYThjMzU0ZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVs
dFBvbGljeURlbGVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0
UG9saWN5RGVsZWdhdGUuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgdHlwZWRlZiBlbnVtIFdlYkV4
dHJhTmF2aWdhdGlvblR5cGUgewogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZhdWx0UG9saWN5
RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6
fkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVm
YXVsdFBvbGljeURlbGVnYXRlKiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OnNoYXJlZEluc3RhbmNl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCmluZGV4IDM2MGFlZGNl
YWNjYi4uOWRhNTk2MDU2NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVh
bS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVy
KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVt
b3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3Mp
OwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxN
ZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
Y3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Q
cm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Li5lOTdjNDEzMjQ3MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKQEAgLTQ1
LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWco
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9mcmFtZShXVEZN
b3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWc6On5X
ZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkFjdGlv
blByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYmIGZvcm0s
IFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxLi5mMzEwMmU1MjY4N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwCkBA
IC01MCwxMyArNTAsMTMgQEAgV2ViQXBwbGljYXRpb25DYWNoZTo6V2ViQXBwbGljYXRpb25DYWNo
ZSgpCiAgICAgOiBtX3JlZkNvdW50KDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBXZWJBcHBsaWNhdGlv
bkNhY2hlOjp+V2ViQXBwbGljYXRpb25DYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFwcGxpY2F0aW9uQ2FjaGUiX3MpOwogfQogCiBX
ZWJBcHBsaWNhdGlvbkNhY2hlKiBXZWJBcHBsaWNhdGlvbkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgp
CkBAIC04MSw3ICs4MSw3IEBAIHN0YXRpYyBTdHJpbmcgYXBwbGljYXRpb25DYWNoZVBhdGgoKQog
CiBXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgV2ViQXBwbGljYXRpb25DYWNoZTo6
c3RvcmFnZSgpCiB7Ci0gICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdl
ID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgp
LCAiQXBwbGljYXRpb25DYWNoZSIpLmxlYWtSZWYoKTsKKyAgICBzdGF0aWMgQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UmIHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFw
cGxpY2F0aW9uQ2FjaGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIl9zKS5sZWFrUmVmKCk7CiAK
ICAgICByZXR1cm4gc3RvcmFnZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5j
cHAKaW5kZXggODE1Nzk5NjEwNzY3Li4xN2RlYmM0ODdlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJj
aGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2Vi
QXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4
IDkwNGFjMmQyODEwNC4uMTE2YWE0MjAxNzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFja0Zvcndh
cmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4mJiBiYWNr
Rm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2JhY2tGb3J3
YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2FyZExpc3Q6
On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9yd2FyZExp
c3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCku
cmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdl
YkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShSZWZQ
dHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNiMDMuLjhiMTZiNDNkNDFmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogV2ViQ2FjaGU6OldlYkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkNhY2hlIl9zKTsKIH0KIAogV2ViQ2FjaGU6On5XZWJDYWNoZSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNh
Y2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSJfcyk7CiB9CiAK
IFdlYkNhY2hlKiBXZWJDYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCmluZGV4IDM1Njk4M2M1MmIzNy4uZjEzMTZk
ZTQ2YzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlz
dGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3Mu
Y3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3Jl
U3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3Rh
dGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29y
ZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDks
NyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3Rl
ZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpz
T2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291
bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJl
Z2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5z
ZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5z
ZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0
cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+Ojpj
cmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBl
TmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRp
c3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3Bl
cnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhh
c2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJl
bnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVu
dCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVl
KTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3Vy
cmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRD
T00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwog
ICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5
NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01f
T3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3Rp
Y3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBI
YXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNl
cnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRl
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3Mu
Y29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5
dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGlj
cy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwg
aGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVl
KTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmll
bGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxv
bmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1h
bGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihm
YXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJG
YXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBs
b25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRz
LmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxk
cy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQo
IkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFT
Y3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFs
TWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRT
aXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRz
LkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVk
IGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVs
ZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmEuLmI5ZjQxMDkzNTli
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJFZGl0
b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXlib2Fy
ZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElET01I
VE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VDQ0VF
REVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVudCwg
KHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgY29t
bWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAgICAg
IFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsKICAg
ICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2UgdGhl
IGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFsbCBr
ZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0IHRo
aXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQgYW4g
ZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZvcm1D
b21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3VtZW50
KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291
cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzkuLmY3OGMxYmQyYTg1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViRGF0YVNvdXJjZS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgV2ViRGF0YVNv
dXJjZTo6V2ViRGF0YVNvdXJjZShXZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIFdl
YkRhdGFTb3VyY2VDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQpA
QCAtNjYsNyArNjYsNyBAQCBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgpCiAgICAgICAg
IG1fbG9hZGVyLT5kZXRhY2hEYXRhU291cmNlKCk7CiAgICAgV2ViRGF0YVNvdXJjZUNvdW50LS07
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRh
dGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFTb3VyY2Ui
X3MpOwogfQogCiBXZWJEYXRhU291cmNlKiBXZWJEYXRhU291cmNlOjpjcmVhdGVJbnN0YW5jZShX
ZWJEb2N1bWVudExvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNjc2NzcyMDMxNWMzLi44ZjM3NjU0MTI1NmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAt
MTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6
OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2Vy
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFz
ZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFn
ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDky
ZDBmYTcyY2Q2Zi4uMjU2YTM1ODgwN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVy
OjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8
V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2Vi
RG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsK
ICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNv
dXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmlu
ZGV4IGFmNzk1MmE3ZTc1Ni4uOTk0NjkwNDU1MWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogV2ViRG93bmxvYWQ6OldlYkRvd25sb2FkKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQ6On5XZWJEb3dubG9h
ZCgpCkBAIC02MSw3ICs2MSw3IEBAIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQogICAgIExP
RyhEb3dubG9hZCwgIldlYkRvd25sb2FkIC0gRGVzdHJveWluZyBkb3dubG9hZCAoJXApIiwgdGhp
cyk7CiAgICAgY2FuY2VsKCk7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkKiBXZWJEb3dubG9hZDo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZENGTmV0LmNw
cAppbmRleCAxODEwYTY2ODU4MTguLmZjNjRiOWJjOTk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxU
IFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2Vi
VVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJM
IG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBl
cnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRB
dXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmlu
ZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0
aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJv
cihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxl
Z2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhLi41YjFj
NWRmYzdlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3Vy
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBA
IC01MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3
ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+
V2ViRHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJv
cGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5
QmFnLmNwcAppbmRleCA4YWZiYTBmNmQ1M2EuLmM2MWYxNzJkNDdmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCkBAIC00NiwxMyAr
NDYsMTMgQEAgV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcoY29u
c3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogICAgIDogbV9yZXN1bHQobWFrZVVuaXF1ZTxIaXRU
ZXN0UmVzdWx0PihyZXN1bHQpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9w
ZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsK
IH0KIAogV2ViRWxlbWVudFByb3BlcnR5QmFnKiBXZWJFbGVtZW50UHJvcGVydHlCYWc6OmNyZWF0
ZUluc3RhbmNlKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkVycm9yLmNwcAppbmRleCAxOWRlMzcxYmVhMWMuLjcxNjEyMTkyMzNlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpX
ZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5m
bykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciog
V2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJv
cGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4
IDU5NDhiMGVjNWI4MC4uMDdiZDQ2ZmM5OThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJh
bWUuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBX
ZWJGcmFtZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJf
cyk7CiB9CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZy
YW1lOjp+V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2Vi
RnJhbWUqIFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9p
ZCBXZWJGcmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+
JiYgZGF0YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5
cGUsIFN5c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAg
IG1pbWVUeXBlU3RyaW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0g
InRleHQvaHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdO
YW1lLCBTeXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyLi45NDQ2
OGJiNzNkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXIuY3BwCkBAIC0zOSwxMyArMzksMTMgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
cjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcihSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCiAgICAgOiBt
X2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJGcmFtZVBvbGljeUxpc3RlbmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIl9zKTsKIH0KIAogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciogV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNw
cAppbmRleCBkYTRjMjI3Nzk2YjcuLjY4OTJmNzcxYWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAg
LTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2Nh
dGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2Nh
dGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7
CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGlj
eUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8v
IElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
R2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxLi5mZjFmZDkwYzQzNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwCkBAIC0zNiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+
IFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9u
UG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0K
IAogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9s
b2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9u
OjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBw
dk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50
YXRpb24uY3BwCmluZGV4IDQ2YWFhZTk3ZDdiYi4uODZhM2NiNmRhYTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24oKQog
ewogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsKIH0KIAog
V2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKQEAgLTU0LDcg
KzU0LDcgQEAgV2ViSFRNTFJlcHJlc2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkK
IAogICAgIFdlYkhUTUxSZXByZXNlbnRhdGlvbkNvdW50LS07CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIl9zKTsK
IH0KIAogV2ViSFRNTFJlcHJlc2VudGF0aW9uKiBXZWJIVE1MUmVwcmVzZW50YXRpb246OmNyZWF0
ZUluc3RhbmNlKFdlYkZyYW1lKiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9y
eS5jcHAKaW5kZXggM2YxZWI2ZDczOGJkLi41MGE4ZTVmNmJjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09N
UHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3Rp
ZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcg
QEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwog
fQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2Li44ZGQ5
YmRhYWEyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJ
dGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxI
aXN0b3J5SXRlbT4mJiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0
KG1faGlzdG9yeUl0ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2Vi
SGlzdG9yeUl0ZW0oKQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3Rv
cnlJdGVtKCkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0u
Z2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJI
aXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5z
cGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5k
ZXggZjYyMTlhNjZkYWE5Li40NDdkOTJhM2EzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSW5zcGVjdG9yLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIFdlYkluc3BlY3Rvcjo6V2ViSW5z
cGVjdG9yKFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvckNsaWVudCogaW5z
cGVjCiAgICAgQVNTRVJUX0FSRyhpbnNwZWN0ZWRXZWJWaWV3LCBpbnNwZWN0ZWRXZWJWaWV3KTsK
IAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNw
ZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciJfcyk7CiB9
CiAKIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQqIFdlYkluc3BlY3Rvcjo6ZnJvbnRlbmRDbGllbnQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcAppbmRleCBj
OGU0YmU4YWMyMWIuLjc1ODY2MjcyZDVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3Jp
cHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxl
Y3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsK
IH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFj
dG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3Li42ZWUwNzI1MzJlZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEz
IEBAIFdlYktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENs
YXNzKQogICAgIFdlYkNvcmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0K
IAogV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0
b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3Rvcnki
X3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4Li5lNjljMGM4MDg5
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29w
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAK
QEAgLTM0LDEzICszNCwxMyBAQAogV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29w
KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
S2l0TWVzc2FnZUxvb3AiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3Nh
Z2VMb29wIl9zKTsKIH0KIAogV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdlTG9vcCgp
CiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldl
YktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRN
ZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wKiBXZWJLaXRNZXNzYWdlTG9v
cDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViS2l0U3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0
aXN0aWNzLmNwcAppbmRleCAxMjYzYmMwYzExZjkuLmY1MTUxY2JlMGJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBA
QCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0
aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3Rh
dGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
S2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3Rh
dGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11
dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjYuLjI0NDEwNjY4ODY3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDks
NyArNDksNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9v
bCBpc011dGFibGUpCiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7
CiB9CiAKIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRl
SW5zdGFuY2UoKQpAQCAtOTMsNyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0
YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2Vi
TXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNz
Q291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1
ZXN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVz
dCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTYuLjZhOTMzYWJi
NWY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNw
cApAQCAtNzIsMTMgKzcyLDEzIEBAIFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZpZ2F0aW9uRGF0
YShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlCiAKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRh
dGEiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsK
IH0KIAogV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25E
YXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSJf
cyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhKiBXZWJOYXZpZ2F0aW9uRGF0YTo6Y3JlYXRlSW5z
dGFuY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZWJVUkxSZXF1
ZXN0KiByZXF1ZXN0LCBJV2ViVVJMUmVzcG9uc2UqIHJlc3BvbnNlLCBib29sIGhhc1N1YnN0aXR1
dGVEYXRhLCBjb25zdCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKaW5kZXggZjUzYmI3MjYzNTNmLi45NDky
NTZlZTgwMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNw
cApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RS
IG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3Vz
ZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNh
dGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlv
bigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9
MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8q
PTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50
ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MS4uNmNkODg0MmU3YTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1
NywxMyBAQCBXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAg
ICAgOiBkKG1ha2VVbmlxdWU8V2ViTm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0
aW9uQ2VudGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25D
ZW50ZXIiX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25D
ZW50ZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRl
ciogV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjLi5mYjE3M2Rk
NWMxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAg
LTE0NywxMyArMTQ3LDEzIEBAIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6c2hhcmVk
U3RhbmRhcmRQcmVmZXJlbmNlcygpCiBXZWJQcmVmZXJlbmNlczo6V2ViUHJlZmVyZW5jZXMoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJQcmVm
ZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiX3Mp
OwogfQogCiBXZWJQcmVmZXJlbmNlczo6fldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAog
V2ViUHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKaW5kZXggOTQzZmE3YWI0NWM4Li4zYmJhMzFl
MzlkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEz
ICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3Qg
V1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFt
ZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJf
cyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJj
ZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3
Y2I4NmIuLmRmMDc4MWY0MTIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViU2NyaXB0T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3Jp
cHRPYmplY3QuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2Ny
aXB0T2JqZWN0KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
Y3JpcHRPYmplY3QiX3MpOwogfQogCiBXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3Qo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlw
dE9iamVjdCJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAppbmRleCAyNjgxMDFhNmMwZjAuLjdlZjhhNDUz
NDYxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBpbmxpbmUgV2ViU2NyaXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKFJlZlB0
cjxET01XcmFwcGVyV29ybGQ+JiYgd29ybGQpCiAgICAgYWxsV29ybGRzKCkuYWRkKG1fd29ybGQu
Z2V0KCksIHRoaXMpOwogCiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJT
Y3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQpA
QCAtNTYsNyArNTYsNyBAQCBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKICAgICBh
bGxXb3JsZHMoKS5yZW1vdmUobV93b3JsZC5nZXQoKSk7CiAKICAgICAtLWdDbGFzc0NvdW50Owot
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0V29ybGQiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2ViU2NyaXB0
V29ybGQqIFdlYlNjcmlwdFdvcmxkOjpzdGFuZGFyZFdvcmxkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA5NDViODY5MjNmNmIuLmVlZjE2
NDNiNjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9y
aWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldl
YlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxp
emVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNW
YWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5Li43ZjExZGY1ZmZlMTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICsz
MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpX
ZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRK
U1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQog
CiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFsdWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0
UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNw
cAppbmRleCA2MjA3YjU2YTdmNjcuLjA0NTM1ZjNmNzIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgV2ViVGV4dFJl
bmRlcmVyKiBXZWJUZXh0UmVuZGVyZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYlRleHRSZW5kZXJl
cjo6V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0
UmVuZGVyZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlRleHRSZW5kZXJlciJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViVGV4dFJlbmRlcmVyOjpRdWVy
eUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmNwcAppbmRleCA1OTc4OGM0ZjVlMjQuLjQwYjdiNjZmYTdhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNh
dGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJf
cyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwog
fQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRl
eCAzNWE4NDVlZDY5M2MuLjUwOTliYTBhZjE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
LmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAg
QVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9z
KTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2Vu
ZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFu
Y2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4
NDI1Li5hNTMxZDEwNjk5NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTENy
ZWRlbnRpYWwuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJM
Q3JlZGVudGlhbChjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKQogICAgIDogbV9jcmVkZW50
aWFsKGNyZWRlbnRpYWwpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsOjp+V2ViVVJMQ3Jl
ZGVudGlhbCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYlVSTENyZWRlbnRpYWwiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTENyZWRlbnRpYWwiX3MpOwogfQogCiBXZWJVUkxDcmVkZW50aWFsKiBXZWJVUkxDcmVk
ZW50aWFsOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAppbmRleCAxOWVkOTZmODIxMGQuLjMxYjA5YWM0Y2I0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNw
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQ
cm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6
IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQog
CiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90
ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3Rl
Y3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVj
dGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJV
UkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5Li42MTIyOTZjYjU1MDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIw
IEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnREZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUo
aW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UoKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25z
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQog
CiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJlc3BvbnNlIl9zKTsKIH0KIAogV2ViVVJM
UmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZSgpCiB7CiAgICAgV2ViVVJM
UmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJlc3BvbnNlKCk7CiAgICAgLy8gZmFrZSBh
biBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJV2ViSFRUUFVSTFJlc3BvbnNlIGludGVy
ZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZShXVEY6OlVS
TCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBTdHJpbmcoKSk7CisgICAgaW5zdGFuY2Ut
Pm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKCJodHRwOi8vIl9zKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5jZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJu
IGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJD
b250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4NDcxM2M4Li5lZGYzMzU4NmIxYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVy
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcApAQCAtMzUsMTMgKzM1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogaW5s
aW5lIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkK
IHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVc2Vy
Q29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5X
ZWJVc2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9
CiAKIENPTVB0cjxXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4+IFdlYlVzZXJDb250ZW50VVJMUGF0
dGVybjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCBkYjYyZGM2NTU5MzQuLmU1NWEyNDJkY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZp
ZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0K
IAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJW
aWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFu
Y2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQ
QVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChM
T1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJl
dHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAg
ICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVj
dXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1l
LmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRv
OgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVj
dXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJf
cykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIx
NDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJk
RXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRv
d25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3Io
KS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVu
dCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdL
ZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0
aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRl
eHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyAr
NDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5k
ZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29t
bWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZv
Y3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsK
ICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJW
aWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2Up
CiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBA
IC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtu
b3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9z
KS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdl
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVy
czo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6
QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApA
QCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElV
bmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9G
QUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUo
KS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxl
dGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYu
LjJlOTMxZTA4ZTc3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29y
a2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQ
cml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldvcmtlcnNQcml2YXRlKiBXZWJXb3Jr
ZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtl
cnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJz
UHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdiNzg5YjM1ZWEuLmUxOTY2OGNjZDc0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCkBAIC0xMTA0LDcgKzEx
MDQsNyBAQCBzdGF0aWMgdm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KCkKIAogc3RhdGlj
IFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIHsKLSAgICBT
dHJpbmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChwYXRoT3JV
cmwpOworICAgIFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQ
YXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aE9yVXJsKSk7CiAKICAgICB3Y2hhcl90IGZ1bGxQYXRo
W19NQVhfUEFUSF07CiAgICAgaWYgKCFfd2Z1bGxwYXRoKGZ1bGxQYXRoLCBwYXRoVG9Gb250RmFs
bGJhY2sud2lkZUNoYXJhY3RlcnMoKS5kYXRhKCksIF9NQVhfUEFUSCkpCkBAIC0xMTE1LDcgKzEx
MTUsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9y
VXJsKQogCiAgICAgU3RyaW5nIHBhdGhUb0NoZWNrID0gZnVsbFBhdGg7CiAKLSAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIjsKKyAgICBzdGF0aWMgY29u
c3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxheW91dFRlc3RzIl9zOwogCiAgICAgLy8gRmluZCB0
aGUgbGF5b3V0IHRlc3Qgcm9vdCBvbiB0aGUgY3VycmVudCBwYXRoOgogICAgIHNpemVfdCBsb2Nh
dGlvbiA9IHBhdGhUb0NoZWNrLmZpbmQobGF5b3V0VGVzdHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKaW5kZXggNTJjMGJjZDQxOTY5
Li5mYTYxOGJiMWI3OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0Nyb3NzVGhyZWFkVGFzay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Q3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NU
aHJlYWRUYXNrLCBCYXNpYykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9y
U2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEo
MXUsIG5hbWVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFt
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEo
M3UsIGNvcHlDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29w
eUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VS
VF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAg
QVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTItMCJfcykpOwogCiAjaWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Ny
b3NzVGhyZWFkVGFzaywgQmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkg
ZGlmZmVyZW5jZXMgaW4gTVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1
bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25z
dHJ1Y3RvclNldC5zaXplKCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1
LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEi
X3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2Vy
LTEtMiJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1
Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElM
RVIoTVNWQykKICAgICBBU1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRl
eCBmZmJhMDBiODAyMWEuLmU4MDcwNzRmNGNjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVT
VChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lm
IFVTRShHTElCKQogVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2Vi
S2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpLzEwLjAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJL
aXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
KSAoPC0gRW1wdHkgY29tbWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5e
X2B8fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9r
ZW4gY2hhcmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVY
UEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJL
aXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkvMTAuMCBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMg
KE1vemlsbGE7IGxpa2UgR2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAo
PC0gRW1wdHkgY29tbWVudCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0u
Xl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMg
dG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVz
cGFjZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFp
bGluZyBuZXdsaW5lKVxuIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJt
aW5hdGVkIGNvbW1lbnQiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFy
YWN0ZXIpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0
b2tlbikiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
LzEyMyAobWlzc2luZyBwcm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOwor
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJh
aWxpbmcgd2hpdGVzcGFjZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5l
d2xpbmUpXG4iX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5h
dGVkIGNvbW1lbnQiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hh
cmFjdGVyKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWly
IGluIHRva2VuKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IGIwMTEyOGIyNmIxYy4uMDdhNDVlMGVmNDE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNwcApAQCAtMzY0LDcgKzM2NCw3
IEBAIFRFU1RfRihGcmFnbWVudGVkU2hhcmVkQnVmZmVyVGVzdCwgY29weUlzQ29udGlndW91cykK
IHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzaXplX3QgTiA+CiBjb25zdGV4cHIgc2l6ZV90IGFycmF5
c2l6ZSggY29uc3QgVCAoJilbTl0gKSB7IHJldHVybiBOOyB9CiAKLXN0YXRpYyB2b2lkIHJlYWRB
bGxDaHVua3Moc3RkOjp2ZWN0b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iLCBib29sIGluY2x1
ZGVTZXBhcmF0b3IgPSBmYWxzZSkKK3N0YXRpYyB2b2lkIHJlYWRBbGxDaHVua3Moc3RkOjp2ZWN0
b3I8U3RyaW5nPiogY2h1bmtzLCBGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0
IFN0cmluZyYgc2VwYXJhdG9yID0gIlxyXG4iX3MsIGJvb2wgaW5jbHVkZVNlcGFyYXRvciA9IGZh
bHNlKQogewogICAgIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyIGNodW5rUmVhZGVyKCZidWZmZXIs
IHNlcGFyYXRvci51dGY4KCkuZGF0YSgpKTsKICAgICBTdHJpbmcgY2h1bmsgPSBjaHVua1JlYWRl
ci5uZXh0Q2h1bmtBc1VURjhTdHJpbmdXaXRoTGF0aW4xRmFsbGJhY2soaW5jbHVkZVNlcGFyYXRv
cik7CkBAIC00NzcsMzIgKzQ3NywzMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJU
ZXN0LCByZWFkQWxsQ2h1bmtzSW5NdWx0aVNlZ21lbnQpCiAgICAgYXV0byBjaGVjayA9IFtdKEZy
YWdtZW50ZWRTaGFyZWRCdWZmZXImIHNoYXJlZEJ1ZmZlcikgewogICAgICAgICBzdGQ6OnZlY3Rv
cjxTdHJpbmc+IGNodW5rczsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3MxV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGgiLCAicyAiLCAicyB0aGUgbW9zdCByIiwgImQi
LCAiY3Vsb3VzIGgiLCAic3RvcnkgdGhlcmUgIiwgInMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIl9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tD
aHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xl
YXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFy
YXRvcltdID0geyAiVGhpIiwgInMgaSIsICJzIHRoZSBtb3N0IHJpIiwgImRpIiwgImN1bG91cyBo
aSIsICJzdG9yeSB0aGVyZSBpIiwgInMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImkiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIsICJpIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hl
Y2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIo
KTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFy
YXRvcltdID0geyAiVGgiLCAiICIsICIgdGhlIG1vc3QgcmlkaWN1bG91cyBoIiwgInRvcnkgdGhl
cmUgIiwgIi4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVy
LCAiaXMiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
cyJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRD
aHVua3MyV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRT
ZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNo
YXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaXMiLCAiIGlz
IiwgIiB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpcyIsICJ0b3J5IHRoZXJlIGlzIiwgIi4iIH07Ci0g
ICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiLCB0cnVlKTsK
KyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyJfcywgdHJ1
ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVu
a3MyV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3Ip
KSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoaXMgaXMgdGhlIG1vc3Qg
cmlkaWN1bG91cyBoIiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNo
dW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tD
aHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUo
ZXhwZWN0ZWRDaHVua3MzV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xl
YXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFy
YXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRpY3Vsb3VzIGhpc3QiLCAib3J5IHRoZXJl
IGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
c3QiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpc3QiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3Ms
IGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczNX
aXRoU2VwYXJhdG9yKSkpOwogICAgIH07CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwpAQCAtNTU3LDEy
ICs1NTcsMTIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJ
dGVyYXRvcikKICAgICAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzaW1wbGVUZXh0LCBzdHJsZW4oc2ltcGxlVGV4dCkpOwogICAgICAgICBjb25zdCBjaGFyKiBj
b25zdCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIiIgfTsKICAgICAgICAg
c3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5r
cywgc2hhcmVkQnVmZmVyLCAiZG9nIik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywg
c2hhcmVkQnVmZmVyLCAiZG9nIl9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3Mo
Y2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3Rl
ZENodW5rc1dpdGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAg
ICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcltdID0g
eyAiZG9nIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImRvZyIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZl
ciwgImRvZyJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5r
cywgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NX
aXRoU2VwYXJhdG9yKSkpOwogICAgIH0KIApAQCAtNTcyLDEyICs1NzIsMTIgQEAgVEVTVF9GKFNo
YXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgY2hhbmdpbmdJdGVyYXRvcikKICAgICAgICAgYXV0
byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzaW1wbGVUZXh0LCBzdHJsZW4o
c2ltcGxlVGV4dCkpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dp
dGhvdXRTZXBhcmF0b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzICIsICIiLCAiIiwgIiIsICIi
IH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtzOwotICAgICAgICByZWFkQWxs
Q2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIpOworICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVF
KGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yLCBhcnJh
eXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5r
cy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3JbXSA9IHsgIkJlYXVjb3VwIGRlIGNoYXRzIGNhdCIsICJjYXQiLCAiY2F0IiwgImNh
dCIsICJjYXQiIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVy
LCAiY2F0IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiY2F0Il9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1
bmtzLCBleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5r
c1dpdGhTZXBhcmF0b3IpKSk7CiAgICAgfQogICAgIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAKaW5kZXggNWY5MjUzMjc5
MWE0Li4yZGQ3ZTRhZTdhMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFz
Q2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJp
bmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcg
dWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoIFN0cmluZyB7IHVybCB9KSk7
CiAKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOwogICAgIEVY
UEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC00NSw3ICs0NSw3IEBA
IHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhj
b25zdCBjaGFyKiB1cmwpCiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Zp
cmVmb3hCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmlu
ZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1
YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwog
CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC01Niw3ICs1Niw3IEBA
IHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmso
Y29uc3QgY2hhciogdXJsKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNN
YWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcg
PSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFT
dHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAog
ICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CiAgICAgRVhQ
RUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIk1hYyBPUyBYIikpOwpAQCAtNzIsMTQgKzcyLDE0
IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmso
Y29uc3QgY2hhciogdXJsKQogLy8gdGhhdCB0aGUgc3RhbmRhcmQgdXNlciBhZ2VudCBzaG91bGQg
YmUgdXNlZC4pCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNFbXB0eVF1aXJr
KGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJB
Z2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKICAgICBFWFBFQ1RfRkFMU0Uo
dWFTdHJpbmcuaXNOdWxsKCkpOwogfQogCiBURVNUKFVzZXJBZ2VudFRlc3QsIFF1aXJrcykKIHsK
ICAgICAvLyBBIHNpdGUgd2l0aCBubyBxdWlya3Mgc2hvdWxkIHJldHVybiBhIG51bGwgU3RyaW5n
LgotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0s
ICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5k
YXJkVXNlckFnZW50Rm9yVVJMKFVSTCgiaHR0cDovL3d3dy53ZWJraXQub3JnLyJfcykpOwogICAg
IEVYUEVDVF9UUlVFKHVhU3RyaW5nLmlzTnVsbCgpKTsKIAogICAgIGFzc2VydFVzZXJBZ2VudEZv
clVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygiaHR0cDovL3R5cGVraXQuY29tLyIpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRl
eCAwZDBiMDA3ZjY0ZWQuLjY0MzhmMWNhNmFiMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTY0LDMwICs2NCwzMCBAQCBw
cm90ZWN0ZWQ6CiAKIFRFU1RfRihDdXJsQ29va2llcywgUmVqZWN0VGFpbG1hdGNoRmFpbHVyZURv
bWFpbikKIHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwg
dXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZG9tYWlu
IG1hdGNoCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwg
ImZvbz1iYXI7IERvbWFpbj1leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspKTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAi
Zm9vPWJhcjsgRG9tYWluPWV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3
b3JrKSk7CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwotICAgIEVYUEVDVF9U
UlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4
YW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9U
UlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4
YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CiAgICAgLy8gZmFp
bHVyZTogc3BlY2lmaWMgc3ViIGRvbWFpbgotICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+
c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSIsIENv
b2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVK
YXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj13d3cuZXhhbXBsZS5jb20i
X3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBmYWlsdXJlOiBkaWZm
ZXJlbnQgZG9tYWluCi0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJs
LCB1cmwsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmws
IHVybCwgImZvbz1iYXI7IERvbWFpbj1zYW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNl
OjpOZXR3b3JrKSk7CiB9CiAKIFRFU1RfRihDdXJsQ29va2llcywgVGVzdEh0dHBPbmx5Q2FzZSkK
IHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwgdXJsIHsg
Imh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZnJvbSBuZXR3b3Jr
Ci0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1i
YXI7IEh0dHBPbmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVD
VF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25s
eSJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogICAgIC8vIHN1Y2Nlc3M6IHdp
bGRjYXJkIG9mIGRvbWFpbnMKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2ll
KHVybCwgdXJsLCAiYmluZ289Ym9uZ287IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7
CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImJpbmdv
PWJvbmdvOyJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAgICAgLy8gZmFpbHVy
ZTogZm9vIGlzIGFscmVhZHkgc3RvcmVkIGFzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1f
Y29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyIsIENvb2tpZUphckRCOjpT
b3VyY2U6OlNjcmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2ll
KHVybCwgdXJsLCAiZm9vPWJhcjsiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwog
ICAgIC8vIGZhaWx1cmU6IGluY29uc2lzdGVudC4gU291cmNlIGlzIFNjcmlwdCwgYnV0IGF0dHJp
YnV0ZSBzYXlzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29r
aWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSIsIENvb2tpZUphckRCOjpTb3VyY2U6OlNj
cmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJs
LCAiZm9vPWJhcjsgSHR0cE9ubHkiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzLi5kZGMxODVkOTZiYzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJp
dmFjeVJlcG9ydC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBURVNUKEFwcFByaXZhY3lS
ZXBvcnQsIE5vbkFwcEluaXRpYXRlZFJlcXVlc3RXaXRoU3ViRnJhbWUpCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNX
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogdHJ5IHsKICAgICBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKQEAgLTI2NCw3ICsy
NjQsNyBAQCB0cnkgewogICAgIGFsZXJ0KCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0
PgotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIGVudW0gY2xhc3MgUmVzcG9uc2VU
eXBlIHsgU3ludGhldGljLCBGZXRjaGVkIH07CiBlbnVtIGNsYXNzIElzQXBwSW5pdGlhdGVkIDog
Ym9vbCB7IE5vLCBZZXMgfTsKQEAgLTI3NiwyNCArMjc2LDI0IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoUmVzcG9uc2VUeXBlIHJlc3BvbnNlVHlwZSwgSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0
ZWQpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0g
ICAgY29uc3QgY2hhcioganMgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBqczsKICAgICBj
b25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0ID0gbnVsbHB0cjsKIAogICAgIHN3aXRjaCAocmVzcG9u
c2VUeXBlKSB7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OlN5bnRoZXRpYzoKLSAgICAgICAganMg
PSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNw
b25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGlj
IHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAg
ICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBl
dmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwi
c3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7
IH0pIl9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0ID0gInN5bnRoZXRpYyByZXNwb25zZSI7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVzcG9uc2VUeXBlOjpGZXRjaGVkOgotICAgICAgICBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pOyI7CisgICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7Il9zOwogICAgICAgICBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFw
cGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRjaGVkLmh0
bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iIH0g
fSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9
fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0PmFsZXJ0
KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC0zNjksMTMgKzM2OSwxMyBAQCBURVNUKEFw
cFByaXZhY3lSZXBvcnQsIE11bHRpcGxlV2ViVmlld3NXaXRoU2hhcmVkU2VydmljZVdvcmtlcikK
ICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBj
b25zdCBjaGFyKiBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9
PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIjsKKyAgICBj
b25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50
KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0pIl9zOwog
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSAiZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7
IG1haW5TV0J5dGVzIH0gfSwKLSAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0sCi0gICAgICAgIHsgIi9mZXRj
aGVkLmh0bWwiLCB7ICI8c2NyaXB0PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3Njcmlw
dD4iIH0gfSwKKyAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAorICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIl9zLCB7ICI8c2NyaXB0
PmFsZXJ0KCdmZXRjaGVkIGZyb20gc2VydmVyJyk8L3NjcmlwdD4iX3MgfSB9LAogICAgIH0sIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHdl
YlZpZXcxID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpAQCAtNDUyLDEyICs0NTIsMTIgQEAg
c3RhdGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQp
CiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CiAKICAgICB1aW50MTZfdCBzZXJ2ZXJQb3J0OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBqcyA9
ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3Bv
bmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMg
cmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAg
IHN0YXRpYyBjb25zdGV4cHIgYXV0byBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNo
JywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihb
JzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6
ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7CiAKICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9
IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFp
blNXQnl0ZXMgfSB9LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0sCiAgICAgICAgIH0s
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVz
dElkZW50aXR5KCkpOwogICAgICAgICBzZXJ2ZXJQb3J0ID0gc2VydmVyMS5wb3J0KCk7CiAKQEAg
LTQ3Niw4ICs0NzYsOCBAQCBzdGF0aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRl
ZCBpc0FwcEluaXRpYXRlZCkKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVz
IH0gfSwKKyAgICAgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9fSwganMgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgbnVsbHB0ciwgdGVzdElkZW50aXR5
MigpLCBzZXJ2ZXJQb3J0KTsKIAogICAgICAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0
MiA9IFtOU011dGFibGVVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyMi5wb3J0KCldXV07CkBAIC01NTgsNyArNTU4LDcgQEAgVEVTVChBcHBQcml2YWN5UmVw
b3J0LCBXZWJQcm9jZXNzUGx1Z2luVGVzdE5vbkFwcEluaXRpYXRlZCkKIAogI2lmIFdLX0hBVkVf
Q19TUEkKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTU4OSw5
ICs1ODksOSBAQCB0cnkgewogICAgIGxvZygnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3Njcmlw
dD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciog
c2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHBy
IGF1dG8gc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VSQ0UoCiBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyAoZXZlbnQpID0+IHsKICAgICBpZiAoIXNlbGYu
aW50ZXJuYWxzKSB7CiAgICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnTm8gaW50ZXJu
YWxzJyk7CkBAIC02MjAsNyArNjIwLDcgQEAgYXN5bmMgZnVuY3Rpb24gcXVlcnlBcHBQcml2YWN5
UmVwb3J0VmFsdWUoZXZlbnQsIGhhdmVTZW50SW5pdGlhbE1lc3NhZ2UpCiAgICAgZXZlbnQuc291
cmNlLnBvc3RNZXNzYWdlKCdub24gYXBwIGluaXRpYXRlZCcpOwogfQogCi0pU1dSRVNPVVJDRSI7
CispU1dSRVNPVVJDRSJfczsKIAogCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKQEAg
LTY2Niw4ICs2NjYsOCBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudFVwZGF0ZXNBcHBJbml0aWF0ZWRWYWx1ZSkKICAgICB3ZWJWaWV3Mi5nZXQoKS5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblNXQnl0
ZXNEZWZhdWx0VmFsdWUgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFs
dWUgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZh
bHVlIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0g
fSwKICAgICB9KTsKIAogICAgIC8vIExvYWQgV2ViVmlldyB3aXRoIGFuIGFwcCBpbml0aWF0ZWQg
cmVxdWVzdC4gV2UgZXhwZWN0IHRoZSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgdG8gYmUgYXBw
IGluaXRpYXRlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCmluZGV4IGNkYjkxMDRhZWI1Zi4uMzI0YmQw
MjQ2OGViIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERl
dmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Np
b25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50Iiwg
cmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWlu
Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMg
PSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIs
MTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3Jp
ZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9
CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0
ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJh
bWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcu
MC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6
OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7
Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9D
Il9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0
bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAog
VEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1h
aW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIs
IG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIy
KHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJh
bWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODEuLmY2ZGIxNjdh
NWJkMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9J
bkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVu
ZAogc3RhdGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQog
ewogICAgIFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092
ZXJyaWRlKCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJj
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRp
bmdzKCkKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6
Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZh
Y3lUZXN0SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVT
VChJbkFwcEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRB
dFN0YXJ0KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBA
ZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAog
ZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3Jp
cHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIq
IG1haW5VbnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1
dG8gbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0
aW9uIGxvZyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+
Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNj
cmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAo
ZXZlbnQpID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIg
cmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNP
VVJDRSJfczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93
c1NlcnZpY2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2Vy
UHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFp
bi5odG1sIiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9
LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcg
KzkxMyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NT
ZXJ2aWNlV29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3Qg
dGhlIHNlcnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4
cGVjdGVkTWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2Vp
dmVkOiBIZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBm
cm9tIGFuIGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5
NTYsOCBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0g
ICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAg
ICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1h
aW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250
ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMg
fSB9LAogICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0
YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiVW5yZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5t
bQppbmRleCBiZjQ4MmUzYWI4Y2IuLjViY2VhODEwOTNjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCkBAIC04MzE3LDggKzgzMTcsOCBAQCBURVNUKFByb2Nlc3NTd2FwLCBDb250
ZW50TW9kZUluQ2FzZU9mQ29vcFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvc291cmNl
Lmh0bWwiLCB7ICJmb28iIH0gfSwKLSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsg
eyAiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiLCAic2FtZS1vcmlnaW4iIH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvc291cmNl
Lmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9z
LCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdp
bi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAg
ICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CkBAIC04Mzg5
LDExICs4Mzg5LDExIEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5DYXNlT2ZQU09O
VGhlbkNvb3BQcm9jZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsK
IAogICAgIEhUVFBTZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsg
ImZvbyIgfSB9LAorICAgICAgICB7ICIvc291cmNlLmh0bWwiX3MsIHsgImZvbyJfcyB9IH0sCiAg
ICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyMih7Ci0gICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJ0ZXh0L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUt
b3JpZ2luIiB9IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3Ms
IHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2lu
LU9wZW5lci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAg
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCmluZGV4IDMzYzhkYmM1YjcxZS4uZmRkNjcwODY4M2Vi
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dl
YkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYs
NyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNo
KQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAi
LyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAg
fSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
X3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1Bs
dWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNl
c3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1MWZlLi4yZjE5NTJjMjk4OWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9U
ZXN0QXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAg
ICAgICBtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdl
ID0gQ1N0cmluZygpOwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdCht
X3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdDYWxs
YmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3Np
bmdDb250ZXh0Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2lu
Z0NvbnRleHQiX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7
CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElE
KTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOwpAQCAt
MjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3SW5XaW5kb3dX
YXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0geyB9OwogICAgICAgICBhdXRv
IHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6
OndpbmRvdyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0luV2luZG93Q2FsbGJhY2spLCB0aGlz
KTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIs
ICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0iKTsKKyAgICAgICAgc2VuZENvbW1h
bmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgIntcInByZXNlbnRhdGlvbkhp
bnRcIjpcIldpbmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29w
LmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwg
c2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRlV2ViVmlld0luV2luZG93
V2FzQ2FsbGVkKTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRl
V2ViVmlld0luVGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgICAgIG1fbWVzc2FnZSA9IHsgfTsK
ICAgICAgICAgYXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9zZXNzaW9uLCAiY3Jl
YXRlLXdlYi12aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdJblRhYkNhbGxiYWNr
KSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0Nv
bnRleHQiLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFiXCJ9Iik7CisgICAgICAgIHNlbmRD
b21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MsICJ7XCJwcmVzZW50YXRp
b25IaW50XCI6XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9v
cC5nZXQoKSk7CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24s
IHNpZ25hbElEKTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdJblRhYldh
c0NhbGxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdM
aWIvVGVzdFNTTC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFNTTC5jcHAKaW5kZXggNTFjODE1MWM5MGFhLi4wNTQwNTUzN2E3NTcgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKQEAgLTIzMiw3ICsy
MzIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRlZFdoZW5UZXN0Rmlu
aXNoZXMoR19PQkpFQ1QoY2VydGlmaWNhdGUpKTsKICAgICAgICAgbV9jZXJ0aWZpY2F0ZSA9IGNl
cnRpZmljYXRlOwogICAgICAgICBtX3Rsc0Vycm9ycyA9IHRsc0Vycm9yczsKLSAgICAgICAgbV9m
YWlsaW5nVVJMID0gVVJMKHsgfSwgZmFpbGluZ1VSSSk7CisgICAgICAgIG1fZmFpbGluZ1VSTCA9
IFVSTChTdHJpbmcgeyBmYWlsaW5nVVJJIH0pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
VUlDbGllbnQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RV
SUNsaWVudC5jcHAKaW5kZXggMjg0ZjgwNGI2NDEwLi5iN2MxY2MxYzVjNTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3Bw
CkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgd2luZG93UHJv
cGVydGllc05vdGlmeUNhbGxiYWNrKEdPYmplY3QqLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMsIFVJ
Q2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIHRlc3QtPm1fd2luZG93UHJvcGVydGll
c0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJhbVNwZWMpKTsKKyAgICAgICAg
dGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5hZGQoU3RyaW5nIHsgZ19wYXJhbV9zcGVj
X2dldF9uYW1lKHBhcmFtU3BlYykgfSk7CiAgICAgfQogCiAgICAgc3RhdGljIFdlYktpdFdlYlZp
ZXcqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZp
Z2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uLCBVSUNsaWVudFRlc3QqIHRlc3QpCkBAIC03NjAsMTEg
Kzc2MCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMoVUlDbGll
bnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRlc3QtPmxvYWRIdG1sKGh0bWxTdHJp
bmcuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMo
KTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcm9wZXJ0aWVzQ2hhbmdlZFtdID0geworICAg
IHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb3BlcnRpZXNDaGFuZ2VkW10gPSB7CiAj
aWYgUExBVEZPUk0oR1RLKQotICAgICAgICAiZ2VvbWV0cnkiLAorICAgICAgICAiZ2VvbWV0cnki
X3MsCiAjZW5kaWYKLSAgICAgICAgImxvY2F0aW9uYmFyLXZpc2libGUiLCAibWVudWJhci12aXNp
YmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXItdmlzaWJsZSIsICJzY3JvbGxiYXJz
LXZpc2libGUiCisgICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIl9zLCAibWVudWJhci12aXNp
YmxlIl9zLCAic3RhdHVzYmFyLXZpc2libGUiX3MsICJ0b29sYmFyLXZpc2libGUiX3MsICJzY3Jv
bGxiYXJzLXZpc2libGUiX3MKICAgICB9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgR19O
X0VMRU1FTlRTKHByb3BlcnRpZXNDaGFuZ2VkKTsgKytpKQogICAgICAgICBnX2Fzc2VydF90cnVl
KHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29udGFpbnMocHJvcGVydGllc0NoYW5n
ZWRbaV0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDQwZWFlYjdiZjI3YS4uYzU2OTAyYTIy
OTcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dFdlYkV4dGVuc2lvbnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9p
ZCB0ZXN0V2ViRXh0ZW5zaW9uUGFnZUlEKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIC8vIFJlZ2lzdGVyIGEgY3VzdG9tIFVSSSBzY2hlbWUgdG8gdGVzdCBoaXN0b3J5IG5h
dmlnYXRpb24uCiAgICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUodGVz
dC0+bV93ZWJDb250ZXh0LmdldCgpLCAiZm9vIiwKICAgICAgICAgW10oV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdCogcmVxdWVzdCwgZ3BvaW50ZXIpIHsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBVUkwo
eyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOworICAgICAg
ICAgICAgVVJMIHVybCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dl
dF91cmkocmVxdWVzdCkgfSk7CiAgICAgICAgICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5w
dXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpKTsKICAgICAg
ICAgICAgIGNoYXIqIGh0bWwgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxoZWFkPjx0aXRsZT4l
czwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgdXJsLmhvc3QoKSA9PSAiaG9z
dDUiID8gIlRpdGxlNSIgOiAiVGl0bGU2Iik7CiAgICAgICAgICAgICBnX21lbW9yeV9pbnB1dF9z
dHJlYW1fYWRkX2RhdGEoR19NRU1PUllfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtLmdldCgpKSwg
aHRtbCwgc3RybGVuKGh0bWwpLCBnX2ZyZWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAppbmRleCBmMGJkODY2
NWY3MGEuLjI4MDM0MTE0MGYwMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGli
L1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9nbGliL1dlYktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAg
dm9pZCBXZWJLaXRUZXN0U2VydmVyOjpydW4oU291cFNlcnZlckNhbGxiYWNrIHNlcnZlckNhbGxi
YWNrKQogCiB2b2lkIFdlYktpdFRlc3RTZXJ2ZXI6OmFkZFdlYlNvY2tldEhhbmRsZXIoU291cFNl
cnZlcldlYnNvY2tldENhbGxiYWNrIGNhbGxiYWNrLCBncG9pbnRlciB1c2VyRGF0YSkKIHsKLSAg
ICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJMLCAiL3dlYnNvY2tldC8iKTsKKyAg
ICBtX2Jhc2VXZWJTb2NrZXRVUkwgPSBVUkwobV9iYXNlVVJMLCAiL3dlYnNvY2tldC8iX3MpOwog
ICAgIG1fYmFzZVdlYlNvY2tldFVSTC5zZXRQcm90b2NvbChtX2Jhc2VXZWJTb2NrZXRVUkwucHJv
dG9jb2xJcygiaHR0cCIpID8gIndzIiA6ICJ3c3MiKTsKIAogICAgIGlmIChtX3F1ZXVlKSB7CkBA
IC0xMDEsMTIgKzEwMSwxMiBAQCBDU3RyaW5nIFdlYktpdFRlc3RTZXJ2ZXI6OmdldFdlYlNvY2tl
dFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKIHsKICAgICBnX2Fzc2VydF9mYWxz
ZShtX2Jhc2VXZWJTb2NrZXRVUkwuaXNOdWxsKCkpOwogICAgIGdfYXNzZXJ0X3RydWUocGF0aCAm
JiAqcGF0aCA9PSAnLycpOwotICAgIHJldHVybiBVUkwobV9iYXNlV2ViU29ja2V0VVJMLCBwYXRo
ICsgMSkuc3RyaW5nKCkudXRmOCgpOyAvLyBJZ25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCisgICAg
cmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIFN0cmluZyB7IHBhdGggKyAxIH0pLnN0cmlu
ZygpLnV0ZjgoKTsgLy8gSWdub3JlIHRoZSBsZWFkaW5nIHNsYXNoLgogfQogCiBDU3RyaW5nIFdl
YktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGgoY29uc3QgY2hhciogcGF0aCkgY29uc3QKIHsK
LSAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgcGF0aCkuc3RyaW5nKCkudXRmOCgpOworICAgIHJl
dHVybiBVUkwobV9iYXNlVVJMLCBTdHJpbmcgeyBwYXRoIH0pLnN0cmluZygpLnV0ZjgoKTsKIH0K
IAogdW5zaWduZWQgV2ViS2l0VGVzdFNlcnZlcjo6cG9ydCgpIGNvbnN0CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IGYyMmMzNzIyNzk2
OS4uOTg1ZDQ5MTVjNmFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVm
ZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJy
ZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxW
aWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0
Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1h
a2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRp
b25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJ
Il9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBS
ZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNz
Pgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVO
YXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7
ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
K3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2
aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0
aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAi
VGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkK
IHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRl
bnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2
aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50
TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAg
SVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVyZmFjZTsKIAotICAgIGF1dG8g
W3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2Rl
VGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7
CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVk
Q29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0s
IENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBh
bmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9s
aWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2Vu
dF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0
V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29u
dGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAg
IHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2Vy
IGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRv
IFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0
OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0Zv
clByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNr
dG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAg
ICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcAppbmRl
eCA4Y2QyMmU0ZDM3MmEuLjg5NWYyZTY5OTAzNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGku
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcApAQCAtMzk4LDE4ICszOTgsMTggQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0
ZVZhbHVlKEpTU3RyaW5nUmUKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwog
ICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWFBsYWNlaG9sZGVyVmFsdWUiKQotICAgICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicGxhY2Vob2xkZXItdGV4dCIp
KS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0
dHJpYnV0ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0Il9zKSkubGVha1JlZigpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEludmFsaWQiKSB7CiAgICAgICAgIGF1dG8gdGV4dEF0dHJpYnV0
ZXMgPSBtX2VsZW1lbnQtPnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0
ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52YWxpZCIpOworICAgICAgICBhdXRvIHZh
bHVlID0gdGV4dEF0dHJpYnV0ZXMuYXR0cmlidXRlcy5nZXQoImludmFsaWQiX3MpOwogICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgdmFsdWUgPSBjaGVja0VsZW1lbnRT
dGF0ZShtX2VsZW1lbnQuZ2V0KCksIFdlYkNvcmU6OkF0c3BpOjpTdGF0ZTo6SW52YWxpZEVudHJ5
KSA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgICAgICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVudFN0
YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50cnkp
ID8gInRydWUiX3MgOiAiZmFsc2UiX3M7CiAgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6
dHJ5Q3JlYXRlKHZhbHVlKS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEFSSUFMaXZlIikKLSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUoYXR0cmlidXRlcy5nZXQoImxpdmUiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSJfcykpLmxlYWtSZWYo
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVsZXZhbnQi
KSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShh
dHRyaWJ1dGVzLmdldCgicmVsZXZhbnQiX3MpKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIH0KQEAgLTQyMCwyMSArNDIw
LDIxIEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1
ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVzLmdldCgic2V0c2l6ZSIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzLmdldCgic2V0c2l6ZSJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInBv
c2luc2V0IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJwb3Np
bnNldCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29s
dW1uQ291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGNvdW50IikudG9E
b3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xjb3VudCJfcykudG9E
b3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93Q291bnQiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50IikudG9Eb3VibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3djb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBp
ZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uSW5kZXgiKQotICAgICAgICByZXR1cm4g
YXR0cmlidXRlcy5nZXQoImNvbGluZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuZ2V0KCJjb2xpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBUm93SW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQo
InJvd2luZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJy
b3dpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
Q29sdW1uU3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiIpLnRv
RG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiJfcykudG9E
b3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93U3BhbiIpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93c3BhbiJfcykudG9Eb3VibGUoKTsKIAogICAgIHJl
dHVybiAwOwogfQpAQCAtNDQyLDggKzQ0Miw4IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFs
dWUoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAg
YXV0byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCIpOwotICAg
IHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVl
IDogImZhbHNlIikubGVha1JlZigpOworICAgIGF1dG8gdmFsdWUgPSBtX2VsZW1lbnQtPmF0dHJp
YnV0ZXMoKS5nZXQoImN1cnJlbnQiX3MpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZhbHNlIl9zKS5sZWFrUmVmKCk7CiB9
CiAKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CkBAIC01MTQsNyArNTE0LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJp
bmdSZWYgYXR0cmlidXRlKQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEludGVyZmFjZVRh
YmxlQ2VsbCIpCiAgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmludGVyZmFjZXMoKS5jb250YWlu
cyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVyZmFjZTo6VGFibGVDZWxs
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0
dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiYXRvbWljIikgPT0gInRydWUiOworICAg
ICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiX3MpID09ICJ0
cnVlIjsKIAogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpOwotICAgIFN0cmluZyBpc1JlYWRPbmx5ID0gYXR0cmlidXRl
cy5nZXQoInJlYWRvbmx5Iik7CisgICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1dGVzLmdl
dCgicmVhZG9ubHkiX3MpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBpc1JlYWRPbmx5ID09ICJ0cnVlIiA/IGZhbHNlIDogdHJ1ZTsKIApAQCAtNTczLDE3
ICs1NzMsMTcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBv
cnRlZChKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsK
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRzaXplIik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzLmNvbnRhaW5zKCJzZXRzaXplIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhB
UklBUG9zSW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicG9zaW5z
ZXQiKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInBvc2luc2V0Il9zKTsK
ICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBTGl2ZSIpIHsKLSAgICAgICAgYXV0byB2
YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIik7CisgICAgICAgIGF1dG8gdmFsdWUgPSBhdHRy
aWJ1dGVzLmdldCgibGl2ZSJfcyk7CiAgICAgICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYm
IHZhbHVlICE9ICJvZmYiOwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
UmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVsZXZhbnQi
KTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInJlbGV2YW50Il9zKTsKICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuY29udGFpbnMoImF0b21pYyIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5j
b250YWlucygiYXRvbWljIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhFbGVtZW50
QnVzeSIpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01OTgsMjcgKzU5OCwyNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZU5hbWVzKCkKIHN0YXRpYyBTdHJpbmcgeG1sUm9sZVZhbHVlU3RyaW5nKGNvbnN0
IFN0cmluZyYgeG1sUm9sZXMpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiByZWdpb25Sb2xlcyA9IEhhc2hTZXQ8
U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+KHsKLSAgICAgICAgImRvYy1hY2tub3ds
ZWRnbWVudHMiLAotICAgICAgICAiZG9jLWFmdGVyd29yZCIsCi0gICAgICAgICJkb2MtYXBwZW5k
aXgiLAotICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSIsCi0gICAgICAgICJkb2MtY2hhcHRlciIs
Ci0gICAgICAgICJkb2MtY29uY2x1c2lvbiIsCi0gICAgICAgICJkb2MtY3JlZGl0cyIsCi0gICAg
ICAgICJkb2MtZW5kbm90ZXMiLAotICAgICAgICAiZG9jLWVwaWxvZ3VlIiwKLSAgICAgICAgImRv
Yy1lcnJhdGEiLAotICAgICAgICAiZG9jLWZvcmV3b3JkIiwKLSAgICAgICAgImRvYy1nbG9zc2Fy
eSIsCi0gICAgICAgICJkb2MtZ2xvc3NyZWYiLAotICAgICAgICAiZG9jLWluZGV4IiwKLSAgICAg
ICAgImRvYy1pbnRyb2R1Y3Rpb24iLAotICAgICAgICAiZG9jLXBhZ2VsaXN0IiwKLSAgICAgICAg
ImRvYy1wYXJ0IiwKLSAgICAgICAgImRvYy1wcmVmYWNlIiwKLSAgICAgICAgImRvYy1wcm9sb2d1
ZSIsCi0gICAgICAgICJkb2MtdG9jIiwKLSAgICAgICAgInJlZ2lvbiIKKyAgICAgICAgImRvYy1h
Y2tub3dsZWRnbWVudHMiX3MsCisgICAgICAgICJkb2MtYWZ0ZXJ3b3JkIl9zLAorICAgICAgICAi
ZG9jLWFwcGVuZGl4Il9zLAorICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSJfcywKKyAgICAgICAg
ImRvYy1jaGFwdGVyIl9zLAorICAgICAgICAiZG9jLWNvbmNsdXNpb24iX3MsCisgICAgICAgICJk
b2MtY3JlZGl0cyJfcywKKyAgICAgICAgImRvYy1lbmRub3RlcyJfcywKKyAgICAgICAgImRvYy1l
cGlsb2d1ZSJfcywKKyAgICAgICAgImRvYy1lcnJhdGEiX3MsCisgICAgICAgICJkb2MtZm9yZXdv
cmQiX3MsCisgICAgICAgICJkb2MtZ2xvc3NhcnkiX3MsCisgICAgICAgICJkb2MtZ2xvc3NyZWYi
X3MsCisgICAgICAgICJkb2MtaW5kZXgiX3MsCisgICAgICAgICJkb2MtaW50cm9kdWN0aW9uIl9z
LAorICAgICAgICAiZG9jLXBhZ2VsaXN0Il9zLAorICAgICAgICAiZG9jLXBhcnQiX3MsCisgICAg
ICAgICJkb2MtcHJlZmFjZSJfcywKKyAgICAgICAgImRvYy1wcm9sb2d1ZSJfcywKKyAgICAgICAg
ImRvYy10b2MiX3MsCisgICAgICAgICJyZWdpb24iX3MKICAgICB9KTsKIAogICAgIGlmIChyZWdp
b25Sb2xlcy0+Y29udGFpbnMoeG1sUm9sZXMpKQpAQCAtNzYyLDcgKzc2Miw3IEBAIHN0YXRpYyBT
dHJpbmcgcm9sZVZhbHVlVG9TdHJpbmcodW5zaWduZWQgcm9sZVZhbHVlKQogICAgIGNhc2UgV2Vi
Q29yZTo6QXRzcGk6OlJvbGU6OlNjcm9sbEJhcjoKICAgICAgICAgcmV0dXJuICJBWFNjcm9sbEJh
ciJfczsKICAgICBjYXNlIFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpTY3JvbGxQYW5lOgotICAgICAg
ICByZXR1cm4gIkFYU2Nyb2xsQXJlYSI7CisgICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIl9z
OwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlY3Rpb246CiAgICAgICAgIHJldHVy
biAiQVhTZWN0aW9uIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlcGFyYXRv
cjoKQEAgLTgxNyw3ICs4MTcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm9sZSgpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKICAgICBhdXRvIHJvbGVWYWx1ZSA9IG1fZWxlbWVudC0+cm9sZSgpOwotICAgIGF1dG8g
cm9sZVZhbHVlU3RyaW5nID0gcm9sZVZhbHVlID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpMYW5k
bWFyayA/IHhtbFJvbGVWYWx1ZVN0cmluZyhtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInht
bC1yb2xlcyIpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CisgICAgYXV0byByb2xl
VmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkxhbmRtYXJr
ID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgieG1sLXJv
bGVzIl9zKSkgOiByb2xlVmFsdWVUb1N0cmluZyhyb2xlVmFsdWUpOwogICAgIGlmIChyb2xlVmFs
dWVTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtODMyLDE0ICs4MzIsMTQgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigp
CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIHJvbGVE
ZXNjcmlwdGlvbiA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9u
Iik7CisgICAgYXV0byByb2xlRGVzY3JpcHRpb24gPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5n
ZXQoInJvbGVkZXNjcmlwdGlvbiJfcyk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobWFrZVN0cmluZygiQVhSb2xlRGVzY3JpcHRpb246ICIsIHJvbGVEZXNjcmlwdGlvbikp
LmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGNvbXB1dGVkUm9sZSA9IG1fZWxlbWVudC0+YXR0cmli
dXRlcygpLmdldCgiY29tcHV0ZWQtcm9sZSIpOworICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIl9zKTsKICAgICBpZiAoY29t
cHV0ZWRSb2xlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBkb3VibGUgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aW50VmFsdWUoKSBjb25zdAogCiAgICAgLy8gQ29uc2lkZXIgaGVh
ZGluZ3MgYXMgYW4gc3BlY2lhbCBjYXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBpbnQgdmFsdWUuCiAg
ICAgaWYgKG1fZWxlbWVudC0+cm9sZSgpID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpIZWFkaW5n
KQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCIpLnRv
RG91YmxlKCk7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxl
dmVsIl9zKS50b0RvdWJsZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05OTksNyArOTk5LDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVl
RGVzY3JpcHRpb24oKQogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAg
ICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgYXV0byB2
YWx1ZSA9IG1ha2VTdHJpbmcoIkFYVmFsdWVEZXNjcmlwdGlvbjogIiwgYXR0cmlidXRlcy5nZXQo
InZhbHVldGV4dCIpKTsKKyAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2Ny
aXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0Il9zKSk7CiAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKIH0KIApAQCAtMTA3Niw3
ICsxMDc2LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUo
KSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkg
Y29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8g
bGV2ZWwgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIik7CisgICAgYXV0byBs
ZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3MpOwogICAgIGlmIChs
ZXZlbC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDkxLDEzICsxMDkxLDEz
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVh
a0FzKCkKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0
CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJncmFiYmVkIikgPT0gInRydWUiOworICAgIHJldHVy
biBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiX3MpID09ICJ0cnVlIjsKIH0K
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFE
cm9wRWZmZWN0cygpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUo
KTsKLSAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJk
cm9wZWZmZWN0Iik7CisgICAgYXV0byBkcm9wRWZmZWN0cyA9IG1fZWxlbWVudC0+YXR0cmlidXRl
cygpLmdldCgiZHJvcGVmZmVjdCJfcyk7CiAgICAgaWYgKGRyb3BFZmZlY3RzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7
CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZHJvcEVmZmVjdHMpLmxlYWtS
ZWYoKTsKQEAgLTE0MjksNyArMTQyOSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKICAgICAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIikpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50
QXR0cmlidXRlKCJFbmNvZGluZyJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKQEAgLTE0Mzgs
NyArMTQzOCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpkb2N1bWVudFVSSSgpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKG51bGxwdHIsIDApOwogCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUo
KTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3Vt
ZW50QXR0cmlidXRlKCJVUkkiKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmlu
Zzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSJfcykpLmxlYWtS
ZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnVybCgpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlw
dENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRD
b250cm9sbGVyR3RrLmNwcAppbmRleCAwMzY2NTJlYzM4OTkuLjJhODg1MjcxNGFlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsu
Y3BwCkBAIC0xODUsMTEgKzE4NSwxMSBAQCBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gdG9KU09O
T2JqZWN0KEdWYXJpYW50KiB2YXJpYW50KQogICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9sb29w
KCZpdGVyLCAieyZzdn0iLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGNvbnN0IEdWYXJpYW50
VHlwZSogdHlwZSA9IGdfdmFyaWFudF9nZXRfdHlwZSh2YWx1ZSk7CiAgICAgICAgIGlmICh0eXBl
ICYmIGdfdmFyaWFudF90eXBlX2VxdWFsKHR5cGUsIEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpKQot
ICAgICAgICAgICAganNvbk9iamVjdC0+c2V0T2JqZWN0KGtleSwgdG9KU09OT2JqZWN0KHZhbHVl
KSk7CisgICAgICAgICAgICBqc29uT2JqZWN0LT5zZXRPYmplY3QoU3RyaW5nIHsga2V5IH0sIHRv
SlNPTk9iamVjdCh2YWx1ZSkpOwogICAgICAgICBlbHNlIGlmICh0eXBlICYmIGdfdmFyaWFudF90
eXBlX2VxdWFsKHR5cGUsIEdfVkFSSUFOVF9UWVBFX1NUUklORykpCi0gICAgICAgICAgICBqc29u
T2JqZWN0LT5zZXRTdHJpbmcoa2V5LCBnX3ZhcmlhbnRfZ2V0X3N0cmluZyh2YWx1ZSwgbnVsbHB0
cikpOworICAgICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKFN0cmluZyB7IGtleSB9LCBT
dHJpbmcgeyBnX3ZhcmlhbnRfZ2V0X3N0cmluZyh2YWx1ZSwgbnVsbHB0cikgfSk7CiAgICAgICAg
IGVsc2UgaWYgKHR5cGUgJiYgZ192YXJpYW50X3R5cGVfZXF1YWwodHlwZSwgR19WQVJJQU5UX1RZ
UEVfRE9VQkxFKSkKLSAgICAgICAgICAgIGpzb25PYmplY3QtPnNldERvdWJsZShrZXksIGdfdmFy
aWFudF9nZXRfZG91YmxlKHZhbHVlKSk7CisgICAgICAgICAgICBqc29uT2JqZWN0LT5zZXREb3Vi
bGUoU3RyaW5nIHsga2V5IH0sIGdfdmFyaWFudF9nZXRfZG91YmxlKHZhbHVlKSk7CiAgICAgfQog
ICAgIHJldHVybiBqc29uT2JqZWN0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CmluZGV4IDEyMDRjYjUyOGJjNi4uY2YxMzFhZWJhMGFlIDEwMDY0NAotLS0gYS9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJv
dmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1w
bGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJpdFN0cmluZywgMjU1IH07
CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBleGFtcGxlQ29tcGFjdFBv
aW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVlIH07CiAgICAgCi0gICAg
VVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsKKyAgICBVUkwgYVVSTCgi
aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFy
eVByb3ZpZGVycygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456528</attachid>
            <date>2022-04-03 21:25:43 -0700</date>
            <delta_ts>2022-04-04 11:08:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238693-20220403212542.patch</filename>
            <type>text/plain</type>
            <size>415245</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWIxYWJhYjQ3OTk1NWExYzIzM2FiMTJlMjMxNjRjODMwNTg3NmM1Li5iNTI4NWU5Y2U0OWFlYjE1
MjQ5YjRkMGU2Njk5YTUxZDkwZGI1MGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNC0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Njkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkv
Z2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAgKGpzY19jb250ZXh0X2NoZWNrX3N5bnRheCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdGFydEF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyk6CisKIDIwMjItMDQt
MDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGVmYXVs
dCBjb25zdHJ1Y3RvciB0byBBU0NJSUxpdGVyYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZTc4NWU4ZmNhNWRjNDAxYzY4YjBm
NjNjNWVmYzQzZDE4YjVjMWM3YS4uZmU5N2I1OGNkYjE4YTk0MWVjYTRmYWRmYjU1MDRjMzRmNjc4
NDczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wNC0wMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1
Y3RvciBhcyBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1J
bXBsOjpmaWxlc0hhdmVTYW1lVm9sdW1lKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6Rmls
ZVN5c3RlbUltcGw6OmdldEZpbGVEZXZpY2VJZCk6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlRGV2
aWNlSWQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAqIHd0Zi91
bml4L0xvZ2dpbmdVbml4LmNwcDoKKyAgICAgICAgKFdURjo6bG9nTGV2ZWxTdHJpbmcpOgorICAg
ICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaWxlRGV2aWNlSWQpOgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwogMjAyMi0wNC0wMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBkZWZhdWx0IGNvbnN0
cnVjdG9yIHRvIEFTQ0lJTGl0ZXJhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGU3OGNkY2NhNmY1YjVlNWZiYTlk
NWVlY2FmZmIyZmIxNWU2NDJjNjguLjE1MGVlNjU1YWI2YzU0ZjhhMjljNGIwMWNmYjQzNDdhODJj
Zjg5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTIgQEAKKzIwMjItMDQtMDMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFy
KikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVh
bWVyTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZXRjaERlc2NyaXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3Rl
TUxpbmVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmFk
ZEljZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYUVuZHBvaW50
OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2Nl
aXZlcnMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnc3RyZWFtZXJS
dHBDYXBhdGlibGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lclBlZXJDb25uZWN0
aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1pZCk6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJUQ1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbGxSVENSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsT3V0Ym91bmRS
VFBTdHJlYW1TdGF0cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
R1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9SVENFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjp0b1JUQ0VuY29kaW5nUGFyYW1ldGVycyk6CisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6cm9sZU5hbWUgY29u
c3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRl
eHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlSb290QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJvb3RBdHNwaTo6ZW1iZWRkZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2Jq
ZWN0Q2FjaGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25QbGF0Zm9ybU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNjcm9sbDpdKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBlZGl0aW5nL2d0ay9X
ZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRSZWFk
ZXI6OnJlYWRGaWxlUGF0aCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VX
cml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVtb3ZlVW5jaGFu
Z2VhYmxlU3R5bGVzKToKKyAgICAgICAgKiBlZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXVEY6OkxvZ0Fy
Z3VtZW50PFVSTD46OnRvU3RyaW5nKToKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5o
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAgICAqIGxvYWRlci9z
b3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlcjo6bG9hZEdSZXNvdXJjZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0
dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6bW91c2VF
dmVudCk6CisgICAgICAgICogcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRGb250RmFtaWxpZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSk6CisgICAgICAgICogcGxhdGZv
cm0vVXNlckFnZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlv
RGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6CisgICAgICAgICogcGxh
dGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3Jt
VmVyc2lvbkZvclVBU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdM
RS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0
ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhp
Y3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAocHJpbnRDb2xvcik6CisgICAgICAgIChw
cmludExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckNhaXJvQmFj
a2VuZDo6dG9EYXRhVVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9mcmVl
dHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRGYW1pbHlO
YW1lU3RyaW5nRnJvbUZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkVsZW1lbnRGYWN0
b3JpZXM6Omhhc0VsZW1lbnRGb3JNZWRpYVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGVBdWRpb1NpbmspOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9h
ZEJ1ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNlSW5pdERhdGFGcm9t
UHJvdGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5n
dWFnZUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6
Z2V0VGFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFt
ZU1ldGFkYXRhR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdzdFRyYWNlUHJvY2Vzc2lu
Z1RpbWVGb3JFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9U
cmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2Fwcyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRlcik6CisgICAgICAgICh3
ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdCk6CisgICAgICAgIChjb252ZXJ0UGxheWJpblVSSSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VEZW11eGVyU3JjUGFk
Q2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVu
c2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21t
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRU
cmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRl
bnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3Rl
bmNpbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXJBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3Vu
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0
dXJlTWFwcGVyRlBTQ291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZHVtcEFkZGl0
aW9uYWxQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JDb3B5QW5k
UGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yR2xvYmFsU2Vs
ZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6a2V5SWRlbnRp
ZmllckZvckdka0tleUNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQp
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpvc05hbWVGb3JVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9WaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojp+VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQpOgorICAgICAgICAqIHBs
YXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
c3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAq
IHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVyRm9yV1BFS2V5
Q29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvZmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVIZWFkZXI6OnBhcnNlSGVh
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW06CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlvbkVycm9yRGVzY3Jp
cHRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJE
Qi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q29va2llVXRpbDo6ZGVmYXVsdFBhdGhGb3JVUkwpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENh
Y2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZU1hbmFnZXI6OnNhdmVJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6OmFwcGVuZFJlcXVl
c3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6cmVtb3ZlUmVxdWVzdEhl
YWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkN1cmxSZXF1ZXN0OjpzZXR1cFBVVCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6c2V0dXBTZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXNv
dXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyUGF0aCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwOgorICAgICAgICAoT3BlblNTTDo6dGxzVmVy
c2lvbik6CisgICAgICAgIChPcGVuU1NMOjp0bHNDaXBoZXJOYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpMZWdh
Y3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2llcyBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjp0bHNFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yOjp0aW1lb3V0RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBo
ZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2FuRGlyZWN0b3J5Rm9y
RGljdGlvbmFyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlV2luOjppbml0aWFsaXplTG9jYWxlRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBsb2FkRmlsZVRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6YWxsRmlsZXNUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWltZVR5cGVzRm9yRm9y
bWF0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2FmZUZvckJpbmRpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVV
UkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OndyaXRlTWFya3VwKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvc1ZlcnNpb25Gb3JVQVN0cmluZyk6CisgICAgICAgIChX
ZWJDb3JlOjphcmNoaXRlY3R1cmVUb2tlbkZvclVBU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9y
bS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6
YnV0dG9uVHlwZVRvU3RyaW5nKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OmF4aXNUeXBldG9TdHJp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oOgorICAgICAg
ICAoUGxhdGZvcm1YUjo6aGFuZGVuZXNzVG9TdHJpbmcpOgorICAgICAgICAqIHRlc3RpbmcvSW50
ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVzZXRUb0NvbnNpc3Rl
bnRTdGF0ZSk6CisKIDIwMjItMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBBU0NJSUxpdGVyYWwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCmluZGV4IGY5NmNjNmJlYzM1YTIxNGZlNTUzNmFmNjhjMzkzM2I2NTBiNjcwODku
LjMxNjM4ZmViM2YwOWIyYTE1OTE4YTViNGI3NDdiZmM5ODMzNzJiMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9y
IGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHBhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHA6Cisg
ICAgICAgIChQQUw6OldlYkdQVTo6YWRhcHRlck5hbWUpOgorICAgICAgICAqIHBhbC9ncmFwaGlj
cy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BV
OjpEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKToKKwogMjAyMi0wMy0zMSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBZGQgc3VwcG9ydCBm
b3IgdGVtcG9yYXJpbHkgaW5zdGFsbGluZyBWS0NJbWFnZUFuYWx5c2lzSW50ZXJhY3Rpb24gb24g
V0tDb250ZW50VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA1NmY5Zjg1ZjViNjY1OWRmNDZhYzU2MWI1
MGE4YjAyMGMzNDhmZjkxLi4yYmMzM2MxYmIzMGIxYjBkMDcwODgyYjZlZmYzZjdjNjIzZDU2MGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
RHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTAzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciop
IGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViRHJpdmVy
OjpDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KToKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMpOgorICAgICAg
ICAoV2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRDdXJyZW50VVJMKToKKyAgICAgICAgKFdlYkRyaXZl
cjo6U2Vzc2lvbjo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246
OmVsZW1lbnRJc0ZpbGVVcGxvYWQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVt
ZW50SXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRTZW5k
S2V5cyk6CisgICAgICAgIChXZWJEcml2ZXI6OmJ1aWx0QXV0b21hdGlvbkNvb2tpZSk6CisgICAg
ICAgIChXZWJEcml2ZXI6OmF1dG9tYXRpb25Tb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkRyaXZl
cjo6YXV0b21hdGlvbk9yaWdpblR5cGUpOgorICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3Bw
OgorICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpydW4pOgorICAgICAgICAo
V2ViRHJpdmVyOjpkZXNlcmlhbGl6ZVByb3h5KToKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJp
dmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogc29ja2V0L0NhcGFiaWxpdGll
c1NvY2tldC5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OkNhcGFiaWxpdGllc1NvY2tldDo6cGFy
c2VDYXBhYmlsaXRpZXMpOgorICAgICAgICAqIHNvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcDoK
KyAgICAgICAgKFdlYkRyaXZlcjo6SFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKToKKwog
MjAyMi0wMy0zMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtQbGF5U3RhdGlvbl0gRW5hYmxlIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCA3NWI1MzRiNTQ0
NGU0NTE4NTBiMGZkZWY3YzRiMzMxNjY0MzU1NDk2Li41ZmY2ZGEzZjQyNDczOTc3ZDcyM2I0Mjlh
MDk3YTJmMzNlNTk4MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTAzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29u
c3QgY2hhciopIGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAg
ICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisKIDIw
MjItMDQtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
U3RvcCBjb3B5aW5nIFN0YWdlZEZyYW1ld29ya3MgdG8gdGhlIHNlY29uZGFyeSBwYXRoIGJ5IGRl
ZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggZmRlNmQxNjNhMmZkMWMzZGE1Yzc5OGY1YTUwMzZmYjQ0MjliMGI2
ZC4uMDFhOGY0OGY2OWQyMTlkODg0ZTgyYTJiMGFmZjFhOWJjYzZiMTgzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMjAgQEAKKzIwMjItMDQtMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhw
bGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHN0
cmluZ0ZvclNTTFByb3RvY29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJs
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Rh
dGFUYXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtE
YXRhVGFza1NvdXA6OndyaXRlRG93bmxvYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtEYXRhVGFza1NvdXA6OmRpZEZpbmlzaERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0RhdGFUYXNrU291cDo6ZW51bWVyYXRlRmlsZUNoaWxkcmVuQ2FsbGJhY2spOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0KToKKyAgICAgICAgKiBTaGFyZWQv
QVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0Nv
Y29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChXZWJLaXQ6Om1ldGhvZFNpZ25h
dHVyZXNBcmVDb21wYXRpYmxlKToKKyAgICAgICAgKGRlY29kZUludm9jYXRpb24pOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAg
IChyZXBseUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0
cnkgX2ludm9rZU1ldGhvZDpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJ
UmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSk6CisgICAg
ICAgICogU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0Ojpwcmlu
dGVyTm90Rm91bmRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmludmFsaWRQYWdlUmFuZ2VUb1By
aW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwOgorICAgICAgICAod2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwOgorICAg
ICAgICAod2Via2l0X2NyZWRlbnRpYWxfbmV3X2Zvcl9jZXJ0aWZpY2F0ZV9waW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAg
KF9XZWJLaXRTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRTZXR0aW5nc1ByaXZhdGUpOgorICAgICAg
ICAod2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRVUklT
Y2hlbWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2NoZW1lX3Jl
cXVlc3RfZmluaXNoX2Vycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291
cmNlR3RrNC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdTb3VyY2U6OmJlZ2luKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkRyb3BUYXJnZXQ6OkRyb3BUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6RHJvcFRh
cmdldCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyOjp+UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJnZXRM
aXN0Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDoKKyAgICAgICAgKHdlYmtp
dF9jb2xvcl9wYXJzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dh
cm5pbmdDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6bWFsd2FyZURldGFpbHNCYXNlKToKKyAg
ICAgICAgKFdlYktpdDo6cmVwb3J0QW5FcnJvckJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250
ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OnJlbW90ZUZpbGVSZXBsYWNlQ29u
dGVudHNDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5z
cGVjdG9yVUlQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJUHJv
eHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6ZmlsZVJl
cGxhY2VDb250ZW50c0NhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3Nv
Y2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5
V2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6YmluZFN5bWxpbmtzUmVhbFBhdGgpOgorICAgICAgICAoV2ViS2l0Ojpi
dWJibGV3cmFwU3Bhd24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAq
IFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNsaXBi
b2FyZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpiYWNrZW5kQ29tbWFuZHNQ
YXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0V2ViUGFnZURp
ZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21f
ZG9jdW1lbnRfZ2V0X3Zpc2liaWxpdHlfc3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmhhbmRsZUtleVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlS2V5RG93bik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xp
Yi9XZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3Jt
RWRpdG9yU3RhdGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UHJpbnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtVXNl
ckFnZW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VX
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAg
ICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRp
Zmllcik6CisKIDIwMjItMDQtMDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgZGVmYXVsdCBjb25zdHJ1Y3RvciB0byBBU0NJSUxpdGVyYWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwppbmRleCAzMmEwNzlkZTYzOTZlYjVmZTdmZGYzMWYxZTgzMGZmN2Yy
ODgxOTQwLi4xMWYyMmJmN2FjYzE5OTJmMjI1Njk3ZWFmYTQwMzIxOGY2NGY0NDIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDQtMDMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBj
aGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NSFRNTExp
bmtFbGVtZW50IF9tZWRpYVF1ZXJ5TWF0Y2hlc10pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXRPdmVycmlkZVRleHRF
bmNvZGluZ05hbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5j
ZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDIyLTA0LTAxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZA
YXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgY29weWluZyBTdGFnZWRGcmFtZXdvcmtzIHRvIHRo
ZSBzZWNvbmRhcnkgcGF0aCBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKaW5k
ZXggNDUwZGU2YmJhOGZmMmExZGNmN2RhNmU3ZWY3NzQ3ZWVjNjY3ZGIzYi4uNTM0MmVlNTk0NTNk
MDc1ZDJhNTBjZTA1ODVmNThhM2M5YzNiMTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3NSBAQAorMjAyMi0wNC0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBh
cyBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBBY2Nlc3NpYmxlQmFzZS5jcHA6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6QWNjZXNz
aWJsZUJhc2UpOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6On5BY2Nlc3NpYmxlQmFzZSk6Cisg
ICAgICAgICogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwOgorICAgICAgICAoQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKToKKyAgICAgICAgKENGRGlj
dGlvbmFyeVByb3BlcnR5QmFnOjp+Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcpOgorICAgICAgICAq
IERlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKERlZmF1bHREb3dubG9hZERl
bGVnYXRlOjpEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSk6CisgICAgICAgIChEZWZhdWx0RG93bmxv
YWREZWxlZ2F0ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKToKKyAgICAgICAgKiBEZWZhdWx0
UG9saWN5RGVsZWdhdGUuY3BwOgorICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjpEZWZh
dWx0UG9saWN5RGVsZWdhdGUpOgorICAgICAgICAoRGVmYXVsdFBvbGljeURlbGVnYXRlOjp+RGVm
YXVsdFBvbGljeURlbGVnYXRlKToKKyAgICAgICAgKiBNZW1vcnlTdHJlYW0uY3BwOgorICAgICAg
ICAoTWVtb3J5U3RyZWFtOjpNZW1vcnlTdHJlYW0pOgorICAgICAgICAoTWVtb3J5U3RyZWFtOjp+
TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHA6CisgICAg
ICAgIChXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJvcGVydHlCYWcpOgorICAgICAg
ICAoV2ViQWN0aW9uUHJvcGVydHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZyk6CisgICAgICAg
ICogV2ViQXBwbGljYXRpb25DYWNoZS5jcHA6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hl
OjpXZWJBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkFwcGxpY2F0aW9uQ2FjaGU6On5X
ZWJBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3Jh
Z2UpOgorICAgICAgICAqIFdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQXJjaGl2ZTo6V2Vi
QXJjaGl2ZSk6CisgICAgICAgIChXZWJBcmNoaXZlOjp+V2ViQXJjaGl2ZSk6CisgICAgICAgICog
V2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6V2Vi
QmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tG
b3J3YXJkTGlzdCk6CisgICAgICAgICogV2ViQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ2FjaGU6
OldlYkNhY2hlKToKKyAgICAgICAgKFdlYkNhY2hlOjp+V2ViQ2FjaGUpOgorICAgICAgICAqIFdl
YkNvcmVTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpXZWJDb3Jl
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0
aWNzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpqYXZhU2NyaXB0UHJvdGVjdGVkT2Jq
ZWN0VHlwZUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdE9i
amVjdFR5cGVDb3VudHMpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6Om1lbW9yeVN0YXRp
c3RpY3MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudCk6Cisg
ICAgICAgICogV2ViRGF0YVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJEYXRhU291cmNlOjp+V2Vi
RGF0YVNvdXJjZSk6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAg
KFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAgKFdlYkRh
dGFiYXNlTWFuYWdlcjo6fldlYkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgICogV2ViRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9h
ZGVyKToKKyAgICAgICAgKFdlYkRvY3VtZW50TG9hZGVyOjp+V2ViRG9jdW1lbnRMb2FkZXIpOgor
ICAgICAgICAqIFdlYkRvd25sb2FkLmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpXZWJEb3du
bG9hZCk6CisgICAgICAgIChXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKToKKyAgICAgICAgKiBX
ZWJEb3dubG9hZENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2ViRHJvcFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKToKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6
On5XZWJEcm9wU291cmNlKToKKyAgICAgICAgKiBXZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwOgor
ICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjpXZWJFbGVtZW50UHJvcGVydHlCYWcpOgor
ICAgICAgICAoV2ViRWxlbWVudFByb3BlcnR5QmFnOjp+V2ViRWxlbWVudFByb3BlcnR5QmFnKToK
KyAgICAgICAgKiBXZWJFcnJvci5jcHA6CisgICAgICAgIChXZWJFcnJvcjo6V2ViRXJyb3IpOgor
ICAgICAgICAoV2ViRXJyb3I6On5XZWJFcnJvcik6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgor
ICAgICAgICAoV2ViRnJhbWU6OldlYkZyYW1lKToKKyAgICAgICAgKFdlYkZyYW1lOjp+V2ViRnJh
bWUpOgorICAgICAgICAoV2ViRnJhbWU6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYkZyYW1lOjpz
ZWxlY3RBbGwpOgorICAgICAgICAqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjp+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcik6Cisg
ICAgICAgICogV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKToK
KyAgICAgICAgKFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyKToKKyAgICAgICAgKiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OldlYkdlb2xvY2F0aW9uUG9zaXRpb24pOgor
ICAgICAgICAoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24p
OgorICAgICAgICAqIFdlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJIVE1M
UmVwcmVzZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJIVE1M
UmVwcmVzZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkhp
c3RvcnkuY3BwOgorICAgICAgICAoV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSk6CisgICAgICAgIChX
ZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSk6CisgICAgICAgICogV2ViSGlzdG9yeUl0ZW0uY3BwOgor
ICAgICAgICAoV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKToKKyAgICAgICAgKFdlYkhp
c3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0pOgorICAgICAgICAqIFdlYkluc3BlY3Rvci5jcHA6
CisgICAgICAgIChXZWJJbnNwZWN0b3I6OldlYkluc3BlY3Rvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3I6On5XZWJJbnNwZWN0b3IpOgorICAgICAgICAqIFdlYkphdmFTY3JpcHRDb2xsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6V2ViSmF2YVNjcmlwdENvbGxl
Y3Rvcik6CisgICAgICAgIChXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjp+V2ViSmF2YVNjcmlwdENv
bGxlY3Rvcik6CisgICAgICAgICogV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YktpdENsYXNzRmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KToKKyAgICAgICAgKFdlYktpdENs
YXNzRmFjdG9yeTo6fldlYktpdENsYXNzRmFjdG9yeSk6CisgICAgICAgICogV2ViS2l0TWVzc2Fn
ZUxvb3AuY3BwOgorICAgICAgICAoV2ViS2l0TWVzc2FnZUxvb3A6OldlYktpdE1lc3NhZ2VMb29w
KToKKyAgICAgICAgKFdlYktpdE1lc3NhZ2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3ApOgorICAg
ICAgICAqIFdlYktpdFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViS2l0U3RhdGlzdGljczo6
V2ViS2l0U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJLaXRTdGF0aXN0aWNzOjp+V2ViS2l0U3Rh
dGlzdGljcyk6CisgICAgICAgICogV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwOgorICAgICAgICAo
V2ViTXV0YWJsZVVSTFJlcXVlc3Q6OldlYk11dGFibGVVUkxSZXF1ZXN0KToKKyAgICAgICAgKFdl
Yk11dGFibGVVUkxSZXF1ZXN0Ojp+V2ViTXV0YWJsZVVSTFJlcXVlc3QpOgorICAgICAgICAqIFdl
Yk5hdmlnYXRpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYk5hdmlnYXRpb25EYXRhOjpXZWJOYXZp
Z2F0aW9uRGF0YSk6CisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0YTo6fldlYk5hdmlnYXRpb25E
YXRhKToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb24uY3BwOgorICAgICAgICAoV2ViTm90aWZp
Y2F0aW9uOjpXZWJOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uOjp+V2Vi
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwOgorICAg
ICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjpXZWJOb3RpZmljYXRpb25DZW50ZXIpOgorICAg
ICAgICAoV2ViTm90aWZpY2F0aW9uQ2VudGVyOjp+V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAg
ICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6V2Vi
UHJlZmVyZW5jZXMpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcyk6
CisgICAgICAgICogV2ViUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2U6OldlYlJl
c291cmNlKToKKyAgICAgICAgKFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2UpOgorICAgICAgICAq
IFdlYlNjcmlwdE9iamVjdC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRPYmplY3Q6OldlYlNjcmlw
dE9iamVjdCk6CisgICAgICAgIChXZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QpOgor
ICAgICAgICAqIFdlYlNjcmlwdFdvcmxkLmNwcDoKKyAgICAgICAgKFdlYlNjcmlwdFdvcmxkOjpX
ZWJTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxk
KToKKyAgICAgICAgKiBXZWJTZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJTZWN1cml0
eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW46
On5XZWJTZWN1cml0eU9yaWdpbik6CisgICAgICAgICogV2ViU2VyaWFsaXplZEpTVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKToK
KyAgICAgICAgKFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFsdWUpOgor
ICAgICAgICAqIFdlYlRleHRSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJUZXh0UmVuZGVyZXI6
OldlYlRleHRSZW5kZXJlcik6CisgICAgICAgIChXZWJUZXh0UmVuZGVyZXI6On5XZWJUZXh0UmVu
ZGVyZXIpOgorICAgICAgICAqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcDoKKyAg
ICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6fldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHA6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIpOgorICAg
ICAgICAoV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVNlbmRlcik6CisgICAgICAgICogV2ViVVJMQ3JlZGVudGlhbC5jcHA6
CisgICAgICAgIChXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKToKKyAgICAgICAg
KFdlYlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKToKKyAgICAgICAgKiBXZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwOgorICAgICAgICAoV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJV
UkxQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAoV2ViVVJMUHJvdGVjdGlvblNwYWNlOjp+V2Vi
VVJMUHJvdGVjdGlvblNwYWNlKToKKyAgICAgICAgKiBXZWJVUkxSZXNwb25zZS5jcHA6CisgICAg
ICAgIChXZWJVUkxSZXNwb25zZTo6V2ViVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViVVJMUmVz
cG9uc2U6On5XZWJVUkxSZXNwb25zZSk6CisgICAgICAgIChXZWJVUkxSZXNwb25zZTo6Y3JlYXRl
SW5zdGFuY2UpOgorICAgICAgICAqIFdlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OldlYlVzZXJDb250ZW50VVJMUGF0dGVybik6
CisgICAgICAgIChXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46On5XZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4pOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6V2ViVmll
dyk6CisgICAgICAgIChXZWJWaWV3Ojp+V2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3OjpleGVj
Q29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6
CisgICAgICAgIChXZWJWaWV3Ojpjb3B5KToKKyAgICAgICAgKFdlYlZpZXc6OmN1dCk6CisgICAg
ICAgIChXZWJWaWV3OjpwYXN0ZSk6CisgICAgICAgIChXZWJWaWV3Ojpjb3B5VVJMKToKKyAgICAg
ICAgKFdlYlZpZXc6OmRlbGV0ZV8pOgorICAgICAgICAqIFdlYldvcmtlcnNQcml2YXRlLmNwcDoK
KyAgICAgICAgKFdlYldvcmtlcnNQcml2YXRlOjpXZWJXb3JrZXJzUHJpdmF0ZSk6CisgICAgICAg
IChXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKToKKwogMjAyMi0wMy0yNCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmluZydzIGZpbmQo
KSAvIHJldmVyc2VGaW5kKCkgLyByZXBsYWNlKCkgc2hvdWxkIHRha2UgaW4gYSBTdHJpbmdWaWV3
IGluc3RlYWQgb2YgYSBTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvZ2xpYi9KU0NDb250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9K
U0NDb250ZXh0LmNwcAppbmRleCA2NThlMDRiZjVhZDdlYjYxMzYzMGI3YjcxMTFhOWJmMmFkMjNj
ZDMxLi4wZDM1ODM4NTMyZjg5NDZjOTc0OWE3MWIyMWM0NzUwNDMxZTMzNjczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC05NzEsNyArOTcx
LDcgQEAgSlNDQ2hlY2tTeW50YXhSZXN1bHQganNjX2NvbnRleHRfY2hlY2tfc3ludGF4KEpTQ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIGMKICAgICBKU0M6OlZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgVVJM
IHNvdXJjZVVSTCA9IHVyaSA/IFVSTCh7IH0sIHVyaSkgOiBVUkwoKTsKKyAgICBVUkwgc291cmNl
VVJMID0gdXJpID8gVVJMKFN0cmluZyB7IHVyaSB9KSA6IFVSTCgpOwogICAgIEpTQzo6U291cmNl
Q29kZSBzb3VyY2UgPSBKU0M6Om1ha2VTb3VyY2UoU3RyaW5nOjpmcm9tVVRGOChjb2RlLCBsZW5n
dGggPCAwID8gc3RybGVuKGNvZGUpIDogbGVuZ3RoKSwgSlNDOjpTb3VyY2VPcmlnaW4geyBzb3Vy
Y2VVUkwgfSwKICAgICAgICAgc291cmNlVVJMLnN0cmluZygpICwgVGV4dFBvc2l0aW9uKE9yZGlu
YWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSk7
CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JTb2NrZXQuY3BwCmluZGV4IDVlMjM2YTJjNGUwMjY3OGExNWI4M2U4N2ZmNzdmZmQwZTFh
M2RhM2IuLmU3YzAxOWRmYWY3YmE1YmY2Mjg2MjE4ZTYzNTA0ZTIyMzU5NjFlOGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJ
bnNwZWN0b3JTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwCkBAIC0zNjcsOCArMzY3LDgg
QEAgdm9pZCBSZW1vdGVJbnNwZWN0b3I6OnN0YXJ0QXV0b21hdGlvblNlc3Npb24oY29uc3QgRXZl
bnQmIGV2ZW50KQogICAgIGF1dG8gY2FwYWJpbGl0eSA9IGNsaWVudENhcGFiaWxpdGllcygpOwog
CiAgICAgYXV0byBtZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtZXNzYWdl
LT5zZXRTdHJpbmcoImJyb3dzZXJOYW1lIl9zLCBjYXBhYmlsaXR5ID8gY2FwYWJpbGl0eS0+YnJv
d3Nlck5hbWUgOiAiIik7Ci0gICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJf
cywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogIiIpOworICAgIG1l
c3NhZ2UtPnNldFN0cmluZygiYnJvd3Nlck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5
LT5icm93c2VyTmFtZSA6IGVtcHR5U3RyaW5nKCkpOworICAgIG1lc3NhZ2UtPnNldFN0cmluZygi
YnJvd3NlclZlcnNpb24iX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyVmVyc2lv
biA6IGVtcHR5U3RyaW5nKCkpOwogICAgIHNlbmRFdmVudC0+c2V0U3RyaW5nKCJtZXNzYWdlIl9z
LCBtZXNzYWdlLT50b0pTT05TdHJpbmcoKSk7CiAgICAgc2VuZFdlYkluc3BlY3RvckV2ZW50KHNl
bmRFdmVudC0+dG9KU09OU3RyaW5nKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMv
SlNEb2xsYXJWTS5jcHAKaW5kZXggNTBiMmRmZmJjMWY3MWI1OGZiNzc2ZmE0ODcxNmM3ZWY1ZjI2
YWZhNS4uYTc0NjZjOTcyNGY0ZDkwOTkzMjUzMTMwYWJmMTFmOGMxMTgwYWI4MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjg3NCw3ICsyODc0LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyhmdW5jdGlvbkNhbGxX
aXRoU3RhY2tTaXplLCBTVVBQUkVTU19BU0EKIAogI2Vsc2UgLy8gbm90IEVOQUJMRShBU1NFTUJM
RVIpCiAgICAgVU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7Ci0gICAgcmV0dXJuIHRocm93Vk1FcnJv
cihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRm
b3JtIik7CisgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUs
ICJOb3Qgc3VwcG9ydGVkIGZvciB0aGlzIHBsYXRmb3JtIl9zKTsKICNlbmRpZiAvLyBFTkFCTEUo
QVNTRU1CTEVSKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCmluZGV4IDcxZTRkY2ZhNWNkNjk0MTdk
YmVjY2NjOWNhY2FlOGYxNTQ4NWFkNWQuLjM5ZjJlMmNhMmExZDhjMmU2YjQ4YjJjN2UzMzI1YjMz
Yzc0MTFmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwCkBAIC0yODYsMTYgKzI4NiwxMyBAQCBib29s
IGFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRsZShjb25zdCBTdHJpbmcmIHBhdGgsIFBsYXRm
b3JtRmlsZUhhbmRsZSYgdGFyZwogCiBib29sIGZpbGVzSGF2ZVNhbWVWb2x1bWUoY29uc3QgU3Ry
aW5nJiBmaWxlQSwgY29uc3QgU3RyaW5nJiBmaWxlQikKIHsKLSAgICBhdXRvIGZzUmVwRmlsZUEg
PSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZUEpOwotICAgIGF1dG8gZnNSZXBGaWxlQiA9
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQik7Ci0KLSAgICBpZiAoZnNSZXBGaWxlQS5p
c051bGwoKSB8fCBmc1JlcEZpbGVCLmlzTnVsbCgpKQorICAgIGlmIChmaWxlQS5pc051bGwoKSB8
fCBmaWxlQi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCByZXN1
bHQgPSBmYWxzZTsKIAotICAgIGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZnNSZXBG
aWxlQSk7Ci0gICAgYXV0byBmaWxlQkRldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVCKTsK
KyAgICBhdXRvIGZpbGVBRGV2ID0gZ2V0RmlsZURldmljZUlkKGZpbGVBKTsKKyAgICBhdXRvIGZp
bGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZpbGVCKTsKIAogICAgIGlmIChmaWxlQURldiAmJiBm
aWxlQkRldikKICAgICAgICAgcmVzdWx0ID0gKGZpbGVBRGV2ID09IGZpbGVCRGV2KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaCBiL1NvdXJjZS9XVEYvd3RmL0ZpbGVT
eXN0ZW0uaAppbmRleCAyMTE4M2FhN2ViMmY2N2U5NDdjNDhjNWQ5MTczMjA1YTg2MWNmYWI5Li5i
Y2FlMTA2YjNlMzQ1ZTFkYmY4ZGViNWJkNGY3OTczOGYwNjg1YTlkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5o
CkBAIC0xMjUsNyArMTI1LDcgQEAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBwYXRoRmlsZU5h
bWUoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhcmVudFBhdGgo
Y29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gdm9sdW1lRnJlZVNwYWNlKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRFIHN0
ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHZvbHVtZUZpbGVCbG9ja1NpemUoY29uc3QgU3RyaW5nJik7
Ci1XVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNl
SWQoY29uc3QgQ1N0cmluZyYpOworV1RGX0VYUE9SVF9QUklWQVRFIHN0ZDo6b3B0aW9uYWw8aW50
MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYpOwogV1RGX0VYUE9SVF9QUklWQVRF
IGJvb2wgY3JlYXRlU3ltYm9saWNMaW5rKGNvbnN0IFN0cmluZyYgdGFyZ2V0UGF0aCwgY29uc3Qg
U3RyaW5nJiBzeW1ib2xpY0xpbmtQYXRoKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgY3Jl
YXRlVGVtcG9yYXJ5WmlwQXJjaGl2ZShjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dsaWIvRmlsZVN5c3RlbUdsaWIuY3BwIGIvU291cmNlL1dU
Ri93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKaW5kZXggNmUwZTQ3NjcyMjY2NDRhOTYyM2Iy
YmM2MzFhYTUwOTEwMWU1OGY3MS4uODUxMDA0MDYzZWNlMzMwYWQ4YWM3M2U0NmRkZTBkYTVkMDk4
NDE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAKQEAgLTI0Nyw4ICsy
NDcsMTIgQEAgaW50IHJlYWRGcm9tRmlsZShQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlLCB2b2lk
KiBkYXRhLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiAtMTsKIH0KIAotc3RkOjpvcHRpb25hbDxp
bnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRp
b25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAg
IGF1dG8gZnNGaWxlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChm
c0ZpbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBHUmVm
UHRyPEdGaWxlPiBmaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoZnNGaWxlLmRh
dGEoKSkpOwogICAgIEdSZWZQdHI8R0ZpbGVJbmZvPiBmaWxlSW5mbyA9IGFkb3B0R1JlZihnX2Zp
bGVfcXVlcnlfZmlsZXN5c3RlbV9pbmZvKGZpbGUuZ2V0KCksIEdfRklMRV9BVFRSSUJVVEVfVU5J
WF9ERVZJQ0UsIG51bGxwdHIsIG51bGxwdHIpKTsKICAgICBpZiAoIWZpbGVJbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKaW5kZXggN2Y5ZThmYzNkMGZjM2UzYzY4
NzRjZTY3MjhlMzZlZDI0YzgwZjM4Yy4uOTMzMjQ1MGZmYmU2OTg4NTIzZWQ2MTlhZjgzYWRlZjFi
YjNiOGU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lY
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCkBAIC0y
NDEsOCArMjQxLDEyIEBAIGVuZDoKIH0KICNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCiAKLXN0
ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmls
ZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKKyAgICBhdXRvIGZzRmlsZSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihwYXRo
KTsKKyAgICBpZiAoZnNGaWxlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworCiAgICAgc3RydWN0IHN0YXQgZmlsZVN0YXQ7CiAgICAgaWYgKHN0YXQoZnNGaWxlLmRhdGEo
KSwgJmZpbGVTdGF0KSA9PSAtMSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCmluZGV4IDJlMTMxMjE3MGI4ZmIyMzdjYjM4OTY5MmYwMjhkMmM1YjQ2
MTFiZjguLjkyZGRlYTEwMDQ5YzJiZWQzZWM4ZTExMjE5YzlhZjczMjg2MTU4NTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaApAQCAtODAsOSArODAsMTQgQEAgcHVibGljOgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0
aCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgpOwogCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHdpdGggbGF0
aW4xIGRhdGEsIGZyb20gYSBudWxsLXRlcm1pbmF0ZWQgc291cmNlLgorICAgIC8vIENvbnN0cnVj
dCBhIHN0cmluZyB3aXRoIExhdGluLTEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3Vy
Y2UuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVy
cyk7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJz
KTsKKworICAgIC8vIFRoaXMgY29uc3RydWN0b3IgaXMgZXhwbGljaXQgdG8gZW5jb3VyYWdlIGRl
dmVsb3BlcnMgdG8gdXNlIEFTQ0lJTGl0ZXJhbCBhbmQgdGhlICIiX3Mgc3VmZml4IHdoZW4gcG9z
c2libGUsCisgICAgLy8gYXMgdGhlIFN0cmluZyhBU0NJSUxpdGVyYWwpIGlzIG1vcmUgZWZmaWNp
ZW50LiBBbHNvIG5vdGUgdGhhdCB0aGlzIGNvbnN0cnVjdG9yIHRyZWF0cyBpbnB1dCBhcyBMYXRp
bi0xLgorICAgIC8vIERldmVsb3BlcnMgb2Z0ZW4gd2FudCB0byBjYWxsIFN0cmluZzo6ZnJvbVVU
RjgoKSBpbnN0ZWFkLgorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgcmVuYW1lIHRo
aXMgdG8gZnJvbUxhdGluMSgpLgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBleHBsaWNpdCBTdHJp
bmcoY29uc3QgY2hhciogY2hhcmFjdGVycyk7CiAKICAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcg
cmVmZXJlbmNpbmcgYW4gZXhpc3RpbmcgU3RyaW5nSW1wbC4KICAgICBTdHJpbmcoU3RyaW5nSW1w
bCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcAppbmRleCBiMDEyYzhjMWNmMzlhZDg5
OTFmNGZjNGUwNjE4ZTI3OTg1YzhiYjkxLi45OGJmNTY2Y2UyNWNhNWU2Y2YxZjQxOWQ0MzA3NTIy
YTkzNTFjNTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xvZ2dpbmdVbml4LmNwcApAQCAtMzksNyArMzks
NyBAQCBTdHJpbmcgbG9nTGV2ZWxTdHJpbmcoKQogICAgIFdURkxvZ0Fsd2F5cygiV0VCS0lUX0RF
QlVHIGlzIG5vdCBlbXB0eSwgYnV0IHRoaXMgaXMgYSByZWxlYXNlIGJ1aWxkLiBOb3RpY2UgdGhh
dCBtYW55IGxvZyBtZXNzYWdlcyB3aWxsIG9ubHkgYXBwZWFyIGluIGEgZGVidWcgYnVpbGQuIik7
CiAjZW5kaWYKIAotICAgIHJldHVybiBsb2dFbnY7CisgICAgcmV0dXJuIFN0cmluZyB7IGxvZ0Vu
diB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3dpbi9GaWxlU3lzdGVtV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcAppbmRleCAyOGQxY2U1ZjZlZTE4YmQwNjlkN2Y2NzZkYjUxMjU0ZjRhMzVlZmE4Li45Nzkx
NWEyMzgxZmMyMzM2NzhkNTJkYzNmMGQwZGE1NzNjY2U5ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKKysrIGIvU291cmNlL1dURi93dGYvd2luL0Zp
bGVTeXN0ZW1XaW4uY3BwCkBAIC0zNDUsOSArMzQ1LDkgQEAgU3RyaW5nIHJvYW1pbmdVc2VyU3Bl
Y2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gY2FjaGVkU3RvcmFnZURpcmVjdG9y
eShDU0lETF9BUFBEQVRBKTsKIH0KIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2
aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRG
aWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBmc0ZpbGUpCiB7Ci0gICAgYXV0byBoYW5kbGUgPSBv
cGVuRmlsZShmc0ZpbGUuZGF0YSgpLCBGaWxlT3Blbk1vZGU6OlJlYWQpOworICAgIGF1dG8gaGFu
ZGxlID0gb3BlbkZpbGUoZnNGaWxlLCBGaWxlT3Blbk1vZGU6OlJlYWQpOwogICAgIGlmICghaXNI
YW5kbGVWYWxpZChoYW5kbGUpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwIGIvU291cmNlL1dURi93
dGYvd2luL0xhbmd1YWdlV2luLmNwcAppbmRleCBiZjk2YjBhNTVjODg5OTMxYzRjMmQ1MzMxN2U4
YzVlMDE3ZTJhYTEyLi5jOTJhNzdhOGMxNjQyOWUwZmQ2MjQ0MjQxMjAxYjNlOTY1MzMwZGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgc3RhdGljIFN0
cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKICAgICBpZiAoIWNvbXB1dGVkRGVmYXVsdExhbmd1YWdl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGNvbXB1dGVkRGVmYXVsdExhbmd1YWdlLmlzb2xh
dGVkQ29weSgpOwogCi0gICAgU3RyaW5nIGxhbmd1YWdlTmFtZSA9IGxvY2FsZUluZm8oTE9DQUxF
X1NJU082MzlMQU5HTkFNRSwgImVuIik7CisgICAgU3RyaW5nIGxhbmd1YWdlTmFtZSA9IGxvY2Fs
ZUluZm8oTE9DQUxFX1NJU082MzlMQU5HTkFNRSwgImVuIl9zKTsKICAgICBTdHJpbmcgY291bnRy
eU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPMzE2NkNUUllOQU1FLCBTdHJpbmcoKSk7CiAK
ICAgICBpZiAoY291bnRyeU5hbWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJNZWRpYUVuZHBvaW50LmNwcAppbmRleCAxYWU2MjI5ODU4ZmU0ZTljZTY4M2MzMmMyZTZhYjdi
OTAxOGI4MDZmLi4yOWUyNTU3NjRlYTM1ZjEyNGUxYzliZGExM2Y5ODM1OTBhMDgxMmI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJNZWRpYUVuZHBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcApAQCAtMjY5LDcgKzI2
OSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxSVENTZHBUeXBlLCBTdHJpbmc+
PiBmZXRjaERlc2NyaXB0aW9uKEdzdEVsZW1lbnQqCiAKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNk
cFN0cmluZyhnc3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAg
R1NUX1RSQUNFX09CSkVDVCh3ZWJydGNCaW4sICIlcy1kZXNjcmlwdGlvbiBTRFA6ICVzIiwgbmFt
ZSwgc2RwU3RyaW5nLmdldCgpKTsKLSAgICByZXR1cm4geyB7IGZyb21TZXNzaW9uRGVzY3JpcHRp
b25UeXBlKCpkZXNjcmlwdGlvbi5nZXQoKSksIHNkcFN0cmluZy5nZXQoKSB9IH07CisgICAgcmV0
dXJuIHsgeyBmcm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBT
dHJpbmcgeyBzZHBTdHJpbmcuZ2V0KCkgfSB9IH07CiB9CiAKIHN0YXRpYyBHc3RXZWJSVENTaWdu
YWxpbmdTdGF0ZSBmZXRjaFNpZ25hbGluZ1N0YXRlKEdzdEVsZW1lbnQqIHdlYnJ0Y0JpbikKQEAg
LTQ1Niw3ICs0NTYsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OnN0b3JlUmVtb3Rl
TUxpbmVJbmZvKEdzdFNEUE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgfQogCi0gICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KHsgbWlkIH0sIGdfc3RyX2Vx
dWFsKG1lZGlhVHlwZSwgImF1ZGlvIikgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRp
byA6IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKKyAgICAgICAgbV9tZWRpYUZv
ck1pZC5zZXQoU3RyaW5nIHsgbWlkIH0sIGdfc3RyX2VxdWFsKG1lZGlhVHlwZSwgImF1ZGlvIl9z
KSA/IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvIDogUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6VmlkZW8pOwogCiAgICAgICAgIC8vIGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9w
Lm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtYmFkLy0vbWVyZ2VfcmVxdWVzdHMvMTkwNwogICAg
ICAgICBpZiAoc2RwTWVkaWFIYXNBdHRyaWJ1dGVLZXkobWVkaWEsICJpY2UtbGl0ZSIpKSB7CkBA
IC05MjQsNyArOTI0LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRJY2VDYW5k
aWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUsIFAKIAogICAgIGlmICghY2Fu
ZGlkYXRlLmNhbmRpZGF0ZS5zdGFydHNXaXRoKCJjYW5kaWRhdGU6IikpIHsKICAgICAgICAgY2Fs
bE9uTWFpblRocmVhZChbdGFzayA9IGNyZWF0ZVNoYXJlZFRhc2s8UGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpBZGRJY2VDYW5kaWRhdGVDYWxsYmFja0Z1bmN0aW9uPihXVEZNb3ZlKGNhbGxiYWNrKSld
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9u
RXJyb3IsICJFeHBlY3QgbGluZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiIgfSk7CisgICAg
ICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFeHBlY3QgbGlu
ZTogY2FuZGlkYXRlOjxjYW5kaWRhdGUtc3RyPiJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVu
ZHBvaW50OjphZGRJY2VDYW5kaWRhdGUoR1N0cmVhbWVySWNlQ2FuZGlkYXRlJiBjYW5kaWRhdGUs
IFAKICAgICBhdXRvIHBhcnNlZENhbmRpZGF0ZSA9IHBhcnNlSWNlQ2FuZGlkYXRlU0RQKGNhbmRp
ZGF0ZS5jYW5kaWRhdGUpOwogICAgIGlmICghcGFyc2VkQ2FuZGlkYXRlKSB7CiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFj
a2VuZDo6QWRkSWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykp
XSgpIG11dGFibGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yLCAiRXJyb3IgcHJvY2Vzc2luZyBJQ0UgY2FuZGlkYXRlIiB9KTsKKyAgICAgICAgICAg
IHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3Npbmcg
SUNFIGNhbmRpZGF0ZSJfcyB9KTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xMDg1LDkgKzEwODUsOSBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZChHVW5pcXVlUHRyPEdzdFdlYgogCiAgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcj4gc2RwKGdzdF9zZHBfbWVzc2FnZV9hc190ZXh0KGRlc2NyaXB0aW9u
LT5zZHApKTsKICAgICAgICAgaWYgKG1faXNJbml0aWF0b3IpCi0gICAgICAgICAgICBtX3BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlclN1Y2NlZWRlZChzZHAuZ2V0KCkpOworICAgICAg
ICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5n
IHsgc2RwLmdldCgpIH0pOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BlZXJDb25uZWN0
aW9uQmFja2VuZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAg
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZUFuc3dlclN1Y2NlZWRlZChTdHJpbmcgeyBz
ZHAuZ2V0KCkgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgR1N0
cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uRmFpbGVkKEdVbmlx
dWVQdHI8R0Vycm9yPiYmCiAgICAgICAgIGlmIChpc1N0b3BwZWQoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBl
cnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiIH07CisgICAgICAgIGF1dG8g
ZXhjID0gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsIGVycm9yID8gU3RyaW5nOjpmcm9tVVRG
OChlcnJvci0+bWVzc2FnZSkgOiAiVW5rbm93biBFcnJvciJfcyB9OwogICAgICAgICBpZiAobV9p
c0luaXRpYXRvcikKICAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9m
ZmVyRmFpbGVkKFdURk1vdmUoZXhjKSk7CiAgICAgICAgIGVsc2UKQEAgLTExMjUsNyArMTEyNSw3
IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycygpCiAg
ICAgICAgIGlmICghcmVjZWl2ZXIgfHwgIW1pZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g
ICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6
bWFrZVVuaXF1ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVu
dCkpLCBtX21lZGlhRm9yTWlkLmdldChtaWQuZ2V0KCkpKTsKKyAgICAgICAgbV9wZWVyQ29ubmVj
dGlvbkJhY2tlbmQubmV3UmVtb3RlVHJhbnNjZWl2ZXIoV1RGOjptYWtlVW5pcXVlPEdTdHJlYW1l
clJ0cFRyYW5zY2VpdmVyQmFja2VuZD4oV1RGTW92ZShjdXJyZW50KSksIG1fbWVkaWFGb3JNaWQu
Z2V0KFN0cmluZyB7IG1pZC5nZXQoKSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAyNTY0ZTlh
NDY0ODA4YmIwOGNiNDA2M2NhYWM2MTI0MDJiZGZkNWMyLi4zMGZlZjBlMDIyNzg1YjE1YTExNjhi
M2Q0ZmJjNjY2OTFiZTE1MzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTU5LDQwICs1OSw0MCBAQCBDcmVhdGVQZWVy
Q29ubmVjdGlvbkJhY2tlbmQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGUgPSBjcmVhdGVH
U3RyZWFtZXJQZWVyQwogc3RhdGljIFJUQ1J0cENhcGFiaWxpdGllcyBnc3RyZWFtZXJSdHBDYXBh
dGlibGl0aWVzKGNvbnN0IFN0cmluZyYga2luZCkKIHsKICAgICBSVENSdHBDYXBhYmlsaXRpZXMg
Y2FwYWJpbGl0aWVzOwotICAgIGNhcGFiaWxpdGllcy5oZWFkZXJFeHRlbnNpb25zLmFwcGVuZCh7
ICJodHRwOi8vd3d3LmlldGYub3JnL2lkL2RyYWZ0LWhvbG1lci1ybWNhdC10cmFuc3BvcnQtd2lk
ZS1jYy1leHRlbnNpb25zLTAxIiB9KTsKKyAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9u
cy5hcHBlbmQoeyAiaHR0cDovL3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJh
bnNwb3J0LXdpZGUtY2MtZXh0ZW5zaW9ucy0wMSJfcyB9KTsKICAgICBpZiAoa2luZCA9PSAiYXVk
aW8iX3MpIHsKICAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy5yZXNlcnZlQ2FwYWNpdHkoNCk7
Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBl
ID0gImF1ZGlvL09QVVMiLAorICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9PUFVTIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0
ZSA9IDQ4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMiwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGlu
ZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVj
a2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL0c3MjIiX3MsCiAgICAgICAgICAgICAuY2xv
Y2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAu
c2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNr
ZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSIsCisgICAgICAgICAgICAuc2RwRm10
cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVu
Y2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01BIl9zLAogICAgICAgICAgICAg
LmNsb2NrUmF0ZSA9IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAg
ICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5j
aGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiLAorICAgICAgICAgICAgLnNk
cEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNVSJfcywKICAgICAgICAg
ICAgIC5jbG9ja1JhdGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAg
ICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0pOworICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0g
ZW1wdHlTdHJpbmcoKSB9KTsKICAgICB9IGVsc2UgewotICAgICAgICBjYXBhYmlsaXRpZXMuaGVh
ZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6dmlkZW8tb3JpZW50YXRpb24iIH0pOwor
ICAgICAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAidXJuOjNncHA6
dmlkZW8tb3JpZW50YXRpb24iX3MgfSk7CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVz
ZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFw
cGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiLAorICAgICAgICBjYXBhYmlsaXRpZXMuY29k
ZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDgiX3MsCiAgICAgICAg
ICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9
KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5
cGUgPSAidmlkZW8vVlA5IiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5n
KCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1p
bWVUeXBlID0gInZpZGVvL1ZQOSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwK
LSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiIH0pOwotICAgICAgICBj
YXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9W
UDkiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MCJfcyB9KTsKKyAg
ICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAi
dmlkZW8vVlA5Il9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAg
ICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MSIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGll
cy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiLAorICAg
ICAgICAgICAgLnNkcEZtdHBMaW5lID0gInByb2ZpbGUtaWQ9MSJfcyB9KTsKKyAgICAgICAgY2Fw
YWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vSDI2
NCJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBG
bXRwTGluZSA9ICJwYWNrZXRpemF0aW9uLW1vZGU9MTtwcm9maWxlLWxldmVsLWlkPTQyZTAxZiIg
fSk7CisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJv
ZmlsZS1sZXZlbC1pZD00MmUwMWYiX3MgfSk7CiAgICAgfQogICAgIHJldHVybiBjYXBhYmlsaXRp
ZXM7CiB9CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBHU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmRvQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYgb3B0aW9ucykKIHZvaWQgR1N0
cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZUFuc3dlcihSVENBbnN3ZXJPcHRp
b25zJiYpCiB7CiAgICAgaWYgKCFtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQpIHsKLSAgICAgICAg
Y3JlYXRlQW5zd2VyRmFpbGVkKEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiTm8gcmVt
b3RlIGRlc2NyaXB0aW9uIHNldCIgfSk7CisgICAgICAgIGNyZWF0ZUFuc3dlckZhaWxlZChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNjcmlwdGlvbiBzZXQiX3Mg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9lbmRwb2ludC0+ZG9DcmVhdGVBbnN3
ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0
cmVhbWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwCmluZGV4IDI0NDlhZTg1ZjE2ZGQ0MWIxYTM5YTIwODBiNDYzYTU4NjcwMDg0OWMu
LmU3NzhmNmQ0ZjBjMGI0Njc4MjMwYzYyY2Q2NjAyYThlOWM2MTNmYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclJ0cFRy
YW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApAQCAtNzks
NyArNzksNyBAQCBTdHJpbmcgR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjptaWQoKQog
ewogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gbWlkOwogICAgIGdfb2JqZWN0X2dldChtX3J0Y1Ry
YW5zY2VpdmVyLmdldCgpLCAibWlkIiwgJm1pZC5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgcmV0
dXJuIG1pZC5nZXQoKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgbWlkLmdldCgpIH07CiB9CiAKIHZv
aWQgR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9wKCkKQEAgLTk3LDcgKzk3LDcg
QEAgYm9vbCBHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6OnN0b3BwZWQoKSBjb25zdAog
c3RhdGljIGlubGluZSBXQVJOX1VOVVNFRF9SRVRVUk4gRXhjZXB0aW9uT3I8R3N0Q2Fwcyo+IHRv
UnRwQ29kZWNDYXBhYmlsaXR5KGNvbnN0IFJUQ1J0cENvZGVjQ2FwYWJpbGl0eSYgY29kZWMpCiB7
CiAgICAgaWYgKCFjb2RlYy5taW1lVHlwZS5zdGFydHNXaXRoKCJ2aWRlby8iKSAmJiAhY29kZWMu
bWltZVR5cGUuc3RhcnRzV2l0aCgiYXVkaW8vIikpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgYmFkIG1p
bWVUeXBlIiB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlv
bkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IGJhZCBtaW1lVHlwZSJfcyB9OwogCiAgICAg
YXV0byBjb21wb25lbnRzID0gY29kZWMubWltZVR5cGUuc3BsaXQoJy8nKTsKICAgICBhdXRvKiBj
YXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSgiYXBwbGljYXRpb24veC1ydHAiLCAibWVkaWEiLCBH
X1RZUEVfU1RSSU5HLCBjb21wb25lbnRzWzBdLmFzY2lpKCkuZGF0YSgpLCAiZW5jb2RpbmctbmFt
ZSIsIEdfVFlQRV9TVFJJTkcsIGNvbXBvbmVudHNbMV0uYXNjaWkoKS5kYXRhKCksIG51bGxwdHIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3IuY3BwCmluZGV4IGFh
YTQxMzdkMmM2MGY4MmFlOWU3ZjIwMDI1YWI0YWExNjg4ZjJiOTMuLmQ3YjYzOGE0MzI2ZjI3Mjhh
M2QwMGU4NGM5ODUwYTBiNTRiNWI1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJT
dGF0c0NvbGxlY3Rvci5jcHAKQEAgLTQzLDE1ICs0MywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
ZmlsbFJUQ1N0YXRzKFJUQ1N0YXRzUmVwb3J0OjpTdGF0cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVj
dHVyZQogICAgIGRvdWJsZSB0aW1lc3RhbXA7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2Rv
dWJsZShzdHJ1Y3R1cmUsICJ0aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgc3RhdHMu
dGltZXN0YW1wID0gdGltZXN0YW1wOwotICAgIHN0YXRzLmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRf
c3RyaW5nKHN0cnVjdHVyZSwgImlkIik7CisgICAgc3RhdHMuaWQgPSBTdHJpbmcgeyBnc3Rfc3Ry
dWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiaWQiKSB9OwogfQogCiBzdGF0aWMgaW5saW5l
IHZvaWQgZmlsbFJUQ1JUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpSdHBTdHJlYW1TdGF0
cyYgc3RhdHMsIGNvbnN0IEdzdFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIGZpbGxSVENT
dGF0cyhzdGF0cywgc3RydWN0dXJlKTsKIAotICAgIHN0YXRzLnRyYW5zcG9ydElkID0gZ3N0X3N0
cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInRyYW5zcG9ydC1pZCIpOwotICAgIHN0YXRz
LmNvZGVjSWQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQi
KTsKKyAgICBzdGF0cy50cmFuc3BvcnRJZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0
cmluZyhzdHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKSB9OworICAgIHN0YXRzLmNvZGVjSWQgPSBT
dHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAiY29kZWMtaWQiKSB9
OwogCiAgICAgdW5zaWduZWQgdmFsdWU7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQo
c3RydWN0dXJlLCAic3NyYyIsICZ2YWx1ZSkpCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGZpbGxPdXRib3VuZFJUUFN0cmVhbVN0YXRzKFJUQ1N0YXRzUmVwb3J0OjpPdXRi
b3VuZFJ0cFN0cmVhbVMKICAgICAgICAgc3RhdHMubmFja0NvdW50ID0gbmFja0NvdW50OwogCiAg
ICAgaWYgKGNvbnN0IGNoYXIqIHJlbW90ZUlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0
cnVjdHVyZSwgInJlbW90ZS1pZCIpKQotICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IHJlbW90ZUlk
OworICAgICAgICBzdGF0cy5yZW1vdGVJZCA9IFN0cmluZyB7IHJlbW90ZUlkIH07CiAKICAgICAv
LyBGSVhNRQogICAgIC8vIHN0YXRzLnRhcmdldEJpdHJhdGUgPQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRp
bHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyV2ViUlRDVXRpbHMuY3BwCmluZGV4IDU0Yjk3NGQzYTcyZDZiN2E0OWQzMjhjMTJiM2Ex
NDJiMWExZWEzZDEuLjZhMTYzNmM2ZGRiNmU2ZmI1OTVhOGM1ZDJmZTIwYmQ3Mzc0NjFhNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lcldlYlJUQ1V0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAKQEAgLTg1LDcgKzg1LDcg
QEAgUmVmUHRyPFJUQ0Vycm9yPiB0b1JUQ0Vycm9yKEdFcnJvciogcnRjRXJyb3IpCiAgICAgYXV0
byBkZXRhaWwgPSB0b1JUQ0Vycm9yRGV0YWlsVHlwZShzdGF0aWNfY2FzdDxHc3RXZWJSVENFcnJv
cj4ocnRjRXJyb3ItPmNvZGUpKTsKICAgICBpZiAoIWRldGFpbCkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgcmV0dXJuIFJUQ0Vycm9yOjpjcmVhdGUoKmRldGFpbCwgcnRjRXJyb3ItPm1l
c3NhZ2UpOworICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIFN0cmluZzo6ZnJv
bVVURjgocnRjRXJyb3ItPm1lc3NhZ2UpKTsKIH0KIAogc3RhdGljIGlubGluZSBkb3VibGUgdG9X
ZWJSVENCaXRSYXRlUHJpb3JpdHkoUlRDUHJpb3JpdHlUeXBlIHByaW9yaXR5KQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHN0YXRpYyBpbmxpbmUgUlRDUnRwRW5jb2RpbmdQYXJhbWV0ZXJzIHRvUlRDRW5j
b2RpbmdQYXJhbWV0ZXJzKGNvbnN0IEdzdFN0cnVjdHVyCiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVf
Z2V0X3VpbnQ2NChydGNQYXJhbWV0ZXJzLCAibWF4LWZyYW1lcmF0ZSIsICZtYXhGcmFtZXJhdGUp
KQogICAgICAgICBwYXJhbWV0ZXJzLm1heEZyYW1lcmF0ZSA9IG1heEZyYW1lcmF0ZTsKIAotICAg
IHBhcmFtZXRlcnMucmlkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHJ0Y1BhcmFtZXRlcnMs
ICJyaWQiKTsKKyAgICBwYXJhbWV0ZXJzLnJpZCA9IFN0cmluZyB7IGdzdF9zdHJ1Y3R1cmVfZ2V0
X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlkIikgfTsKIAogICAgIGRvdWJsZSBzY2FsZVJlc29s
dXRpb25Eb3duQnk7CiAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZShydGNQYXJhbWV0
ZXJzLCAic2NhbGUtcmVzb2x1dGlvbi1kb3duLWJ5IiwgJnNjYWxlUmVzb2x1dGlvbkRvd25CeSkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJh
bWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZy
YW1lYnVmZmVyLmNwcAppbmRleCA5MmUxYTE4ZWE3ODk3ZjZhNDIyZDJmNDk3Y2I2OTQxMmYwMTU5
MTViLi42NzYxMDE5NzE4MTYzMTc0YTAyY2ZmZjA3NTVmNzMyMDRmM2EyMzBkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZl
ci5jcHAKQEAgLTI3NSwxMiArMjc1LDEyIEBAIGJvb2wgV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlcjo6
c2V0dXBGcmFtZWJ1ZmZlcigpCiAgICAgYXV0byBzdGVuY2lsRm9ybWF0ID0gR0w6OlNURU5DSUxf
SU5ERVg4OwogI2VsaWYgVVNFKE9QRU5HTF9FUykKICAgICBhdXRvJiBleHRlbnNpb25zID0gcmVp
bnRlcnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHRHTE9wZW5HTCY+KGdsKS5nZXRFeHRlbnNpb25z
KCk7Ci0gICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0gaGFzRGVw
dGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9kZXB0aF9z
dGVuY2lsIik7CisgICAgYm9vbCBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID0g
aGFzRGVwdGhPclN0ZW5jaWwgJiYgZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfT0VTX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIl9zKTsKICAgICBhdXRvIGRlcHRoRm9ybWF0ID0gcGxhdGZvcm1TdXBwb3J0
c1BhY2tlZERlcHRoU3RlbmNpbCA/IEdMOjpERVBUSDI0X1NURU5DSUw4IDogR0w6OkRFUFRIX0NP
TVBPTkVOVDE2OwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsK
ICNlbHNlCiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wmPihnbCkuZ2V0RXh0ZW5zaW9ucygpOwotICAgIGJvb2wgcGxhdGZvcm1T
dXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2lsICYmIGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgcGxh
dGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2lsICYmIGV4
dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAgICAg
YXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBH
TDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9DT01QT05FTlQ7CiAgICAgYXV0byBzdGVu
Y2lsRm9ybWF0ID0gR0w6OlNURU5DSUxfQ09NUE9ORU5UOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2Vi
R1BVQWRhcHRlckltcGwuY3BwCmluZGV4IDAzOTkzNGYyOTRlYWJhNjM5OGU2ZmRjNTIwMzIyMDk3
N2VkYmRlYjAuLmJlN2ZjNGI4NmVmOWQyOThmZGI3Y2Q5MTgwZWIzYTllY2I5ZWU5N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BV
QWRhcHRlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2Vi
R1BVL0ltcGwvV2ViR1BVQWRhcHRlckltcGwuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHN0YXRpYyBT
dHJpbmcgYWRhcHRlck5hbWUoV0dQVUFkYXB0ZXIgYWRhcHRlcikKIHsKICAgICBXR1BVQWRhcHRl
clByb3BlcnRpZXMgcHJvcGVydGllczsKICAgICB3Z3B1QWRhcHRlckdldFByb3BlcnRpZXMoYWRh
cHRlciwgJnByb3BlcnRpZXMpOwotICAgIHJldHVybiBwcm9wZXJ0aWVzLm5hbWU7CisgICAgcmV0
dXJuIFN0cmluZyB7IHByb3BlcnRpZXMubmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFN1cHBvcnRl
ZEZlYXR1cmVzPiBzdXBwb3J0ZWRGZWF0dXJlcyhXR1BVQWRhcHRlciBhZGFwdGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVE
ZXZpY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0lt
cGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKaW5kZXggOTY5YTdhMmNhN2I5YmE2MmNhMjVjZWFjMjhm
M2EzOWRiMzRiMDk5My4uOGM5NDc1YWY1MDFlNjNkNmYyZDlhNjI0MDVjYjc1MTI4MDVhMTA4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVEZXZpY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNz
L1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCkBAIC01OTIsNyArNTkyLDcgQEAgdm9p
ZCBEZXZpY2VJbXBsOjpwb3BFcnJvclNjb3BlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxFcnJvcj4mJik+JiYKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX0ZvcmNlMzI6
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX1ZhbGlkYXRp
b246Ci0gICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0ZShtZXNz
YWdlKSB9IH07CisgICAgICAgICAgICBlcnJvciA9IHsgeyBWYWxpZGF0aW9uRXJyb3I6OmNyZWF0
ZShTdHJpbmcgeyBtZXNzYWdlIH0pIH0gfTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFdHUFVFcnJvclR5cGVfT3V0T2ZNZW1vcnk6CiAgICAgICAgICAgICBlcnJvciA9IHsgeyBP
dXRPZk1lbW9yeUVycm9yOjpjcmVhdGUoKSB9IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDhlYjRlOTI2YjlkYWYzNTQyNWI4N2IwMGQ2NWJj
NDQ2NzMwMWFkZDYuLjBkNGQ0NmEwZWQ4YzhlMTEwM2I2OTc2MWU1ZDVlM2M3YzlmMDBiMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC0zNjgs
NyArMzY4LDcgQEAgcHVibGljOgogCiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFu
Z2VNYXRjaGVzVGV4dE5lYXJSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGNvbnN0IFN0cmluZyYp
OwogCi0gICAgc3RhdGljIFN0cmluZyBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmlj
YXRpb24pOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1l
KEFYTm90aWZpY2F0aW9uKTsKIAogICAgIEFYVHJlZURhdGEgdHJlZURhdGEoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGkuY3BwCmluZGV4IGE2YjUxMTliZTgyYWNiMDgxZTk2M2ZhZmJiMzY1
YjBmMTFlYzBmOWYuLmRhOTJmZDQxM2YxMDc3YzcxMjkwZTEzYTNlNTQ4NjIwYmU3Yzg5NjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdEF0c3BpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKQEAgLTg2OSw3MiArODY5LDcyIEBAIEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcygp
IGNvbnN0CiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWFwOwogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldlYktpdEdUSyIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXZWJLaXRHVEsiX3MpOwogI2VsaWYgUExBVEZPUk0oV1BFKQotICAgIG1h
cC5hZGQoInRvb2xraXQiLCAiV1BFV2ViS2l0Iik7CisgICAgbWFwLmFkZCgidG9vbGtpdCJfcywg
IldQRVdlYktpdCJfcyk7CiAjZW5kaWYKICAgICBpZiAoIW1fY29yZU9iamVjdCkKICAgICAgICAg
cmV0dXJuIG1hcDsKIAogICAgIFN0cmluZyB0YWdOYW1lID0gbV9jb3JlT2JqZWN0LT50YWdOYW1l
KCk7CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgidGFnIiwg
dGFnTmFtZSk7CisgICAgICAgIG1hcC5hZGQoInRhZyJfcywgdGFnTmFtZSk7CiAKICAgICBpZiAo
YXV0byogZWxlbWVudCA9IG1fY29yZU9iamVjdC0+ZWxlbWVudCgpKSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IGVsZW1lbnQtPmdldElkQXR0cmlidXRlKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmICgh
aWQuaXNFbXB0eSgpKQotICAgICAgICAgICAgbWFwLmFkZCgiaWQiLCBpZCk7CisgICAgICAgICAg
ICBtYXAuYWRkKCJpZCJfcywgaWQpOwogICAgIH0KIAogICAgIGludCBsZXZlbCA9IG1fY29yZU9i
amVjdC0+aXNIZWFkaW5nKCkgPyBtX2NvcmVPYmplY3QtPmhlYWRpbmdMZXZlbCgpIDogbV9jb3Jl
T2JqZWN0LT5oaWVyYXJjaGljYWxMZXZlbCgpOwogICAgIGlmIChsZXZlbCkKLSAgICAgICAgbWFw
LmFkZCgibGV2ZWwiLCBTdHJpbmc6Om51bWJlcihsZXZlbCkpOworICAgICAgICBtYXAuYWRkKCJs
ZXZlbCJfcywgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKIAogICAgIGludCByb3dDb3VudCA9IG1f
Y29yZU9iamVjdC0+YXhSb3dDb3VudCgpOwogICAgIGlmIChyb3dDb3VudCkKLSAgICAgICAgbWFw
LmFkZCgicm93Y291bnQiLCBTdHJpbmc6Om51bWJlcihyb3dDb3VudCkpOworICAgICAgICBtYXAu
YWRkKCJyb3djb3VudCJfcywgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKIAogICAgIGludCBj
b2x1bW5Db3VudCA9IG1fY29yZU9iamVjdC0+YXhDb2x1bW5Db3VudCgpOwogICAgIGlmIChjb2x1
bW5Db3VudCkKLSAgICAgICAgbWFwLmFkZCgiY29sY291bnQiLCBTdHJpbmc6Om51bWJlcihjb2x1
bW5Db3VudCkpOworICAgICAgICBtYXAuYWRkKCJjb2xjb3VudCJfcywgU3RyaW5nOjpudW1iZXIo
Y29sdW1uQ291bnQpKTsKIAogICAgIGludCByb3dJbmRleCA9IG1fY29yZU9iamVjdC0+YXhSb3dJ
bmRleCgpOwogICAgIGlmIChyb3dJbmRleCAhPSAtMSkKLSAgICAgICAgbWFwLmFkZCgicm93aW5k
ZXgiLCBTdHJpbmc6Om51bWJlcihyb3dJbmRleCkpOworICAgICAgICBtYXAuYWRkKCJyb3dpbmRl
eCJfcywgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKIAogICAgIGludCBjb2x1bW5JbmRleCA9
IG1fY29yZU9iamVjdC0+YXhDb2x1bW5JbmRleCgpOwogICAgIGlmIChjb2x1bW5JbmRleCAhPSAt
MSkKLSAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiLCBTdHJpbmc6Om51bWJlcihjb2x1bW5JbmRl
eCkpOworICAgICAgICBtYXAuYWRkKCJjb2xpbmRleCJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1u
SW5kZXgpKTsKIAogICAgIGlmIChpczxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsPihtX2NvcmVPYmpl
Y3QpKSB7CiAgICAgICAgIGF1dG8mIGNlbGwgPSBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVD
ZWxsPigqbV9jb3JlT2JqZWN0KTsKICAgICAgICAgaW50IHJvd1NwYW4gPSBjZWxsLmF4Um93U3Bh
bigpOwogICAgICAgICBpZiAocm93U3BhbiAhPSAtMSkKLSAgICAgICAgICAgIG1hcC5hZGQoInJv
d3NwYW4iLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJy
b3dzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihyb3dTcGFuKSk7CiAKICAgICAgICAgaW50IGNvbHVt
blNwYW4gPSBjZWxsLmF4Q29sdW1uU3BhbigpOwogICAgICAgICBpZiAoY29sdW1uU3BhbiAhPSAt
MSkKLSAgICAgICAgICAgIG1hcC5hZGQoImNvbHNwYW4iLCBTdHJpbmc6Om51bWJlcihjb2x1bW5T
cGFuKSk7CisgICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIl9zLCBTdHJpbmc6Om51bWJlcihj
b2x1bW5TcGFuKSk7CiAgICAgfQogCiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyID0gbV9jb3JlT2Jq
ZWN0LT5wbGFjZWhvbGRlclZhbHVlKCk7CiAgICAgaWYgKCFwbGFjZWhvbGRlci5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiLCBwbGFjZWhvbGRlcik7CisgICAg
ICAgIG1hcC5hZGQoInBsYWNlaG9sZGVyLXRleHQiX3MsIHBsYWNlaG9sZGVyKTsKIAogICAgIGlm
IChtX2NvcmVPYmplY3QtPnN1cHBvcnRzQXV0b0NvbXBsZXRlKCkpCi0gICAgICAgIG1hcC5hZGQo
ImF1dG9jb21wbGV0ZSIsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CisgICAg
ICAgIG1hcC5hZGQoImF1dG9jb21wbGV0ZSJfcywgbV9jb3JlT2JqZWN0LT5hdXRvQ29tcGxldGVW
YWx1ZSgpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzSGFzUG9wdXAoKSkKLSAg
ICAgICAgbWFwLmFkZCgiaGFzcG9wdXAiLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7Cisg
ICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIl9zLCBtX2NvcmVPYmplY3QtPnBvcHVwVmFsdWUoKSk7
CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0N1cnJlbnQoKSkKLSAgICAgICAgbWFw
LmFkZCgiY3VycmVudCIsIG1fY29yZU9iamVjdC0+Y3VycmVudFZhbHVlKCkpOworICAgICAgICBt
YXAuYWRkKCJjdXJyZW50Il9zLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKIAogICAg
IGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzUG9zSW5TZXQoKSkKLSAgICAgICAgbWFwLmFkZCgi
cG9zaW5zZXQiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKKyAg
ICAgICAgbWFwLmFkZCgicG9zaW5zZXQiX3MsIFN0cmluZzo6bnVtYmVyKG1fY29yZU9iamVjdC0+
cG9zSW5TZXQoKSkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNTZXRTaXplKCkp
Ci0gICAgICAgIG1hcC5hZGQoInNldHNpemUiLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3Qt
PnNldFNpemUoKSkpOworICAgICAgICBtYXAuYWRkKCJzZXRzaXplIl9zLCBTdHJpbmc6Om51bWJl
cihtX2NvcmVPYmplY3QtPnNldFNpemUoKSkpOwogCiAgICAgLy8gVGhlIENvcmUgQUFNIHN0YXRl
cyB0aGF0IGFuIGV4cGxpY2l0bHktc2V0IHZhbHVlIHNob3VsZCBiZSBleHBvc2VkLCBpbmNsdWRp
bmcgIm5vbmUiLgogICAgIGlmIChzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9j
b3JlT2JqZWN0KS0+aGFzQXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9zb3J0QXR0cikpIHsKQEAg
LTk0MiwyNyArOTQyLDI3IEBAIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6YXR0cmlidXRlcygpIGNvbnN0CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0
eVNvcnREaXJlY3Rpb246OkludmFsaWQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6QXNjZW5kaW5nOgotICAgICAgICAgICAgbWFw
LmFkZCgic29ydCIsICJhc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3Ms
ICJhc2NlbmRpbmciX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNz
aWJpbGl0eVNvcnREaXJlY3Rpb246OkRlc2NlbmRpbmc6Ci0gICAgICAgICAgICBtYXAuYWRkKCJz
b3J0IiwgImRlc2NlbmRpbmciKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJkZXNj
ZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTb3J0RGlyZWN0aW9uOjpPdGhlcjoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAib3Ro
ZXIiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJvdGhlciJfcyk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6Tm9u
ZToKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAibm9uZSIpOworICAgICAgICAgICAgbWFw
LmFkZCgic29ydCJfcywgIm5vbmUiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBTdHJpbmcgaXNSZWFkT25seSA9IG1fY29yZU9iamVjdC0+cmVhZE9ubHlW
YWx1ZSgpOwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQo
InJlYWRvbmx5IiwgaXNSZWFkT25seSk7CisgICAgICAgIG1hcC5hZGQoInJlYWRvbmx5Il9zLCBp
c1JlYWRPbmx5KTsKIAogICAgIFN0cmluZyB2YWx1ZURlc2NyaXB0aW9uID0gbV9jb3JlT2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7CiAgICAgaWYgKCF2YWx1ZURlc2NyaXB0aW9uLmlzRW1wdHko
KSkKLSAgICAgICAgbWFwLmFkZCgidmFsdWV0ZXh0IiwgdmFsdWVEZXNjcmlwdGlvbik7CisgICAg
ICAgIG1hcC5hZGQoInZhbHVldGV4dCJfcywgdmFsdWVEZXNjcmlwdGlvbik7CiAKICAgICAvLyBB
Y2NvcmRpbmcgdG8gdGhlIFczQyBDb3JlIEFjY2Vzc2liaWxpdHkgQVBJIE1hcHBpbmdzIDEuMSwg
c2VjdGlvbiA1LjQuMSBHZW5lcmFsIFJ1bGVzOgogICAgIC8vICJVc2VyIGFnZW50cyBtdXN0IGV4
cG9zZSB0aGUgV0FJLUFSSUEgcm9sZSBzdHJpbmcgaWYgdGhlIEFQSSBzdXBwb3J0cyBhIG1lY2hh
bmlzbSB0byBkbyBzby4iCkBAIC05NzEsNTkgKzk3MSw1OSBAQCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgIC8v
IHdpdGggQVJJQSByb2xlcywgYW5kIGl0IG1pZ2h0IG5vdCBjb250YWluIHRoZSBhY3R1YWwgQVJJ
QSByb2xlIHZhbHVlIChlLmcuIERQdWIgQVJJQSkuCiAgICAgU3RyaW5nIHJvbGVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6cm9sZUF0dHIpOwogICAgIGlmICghcm9sZVN0cmluZy5pc0VtcHR5KCkp
Ci0gICAgICAgIG1hcC5hZGQoInhtbC1yb2xlcyIsIHJvbGVTdHJpbmcpOworICAgICAgICBtYXAu
YWRkKCJ4bWwtcm9sZXMiX3MsIHJvbGVTdHJpbmcpOwogCiAgICAgU3RyaW5nIGNvbXB1dGVkUm9s
ZVN0cmluZyA9IG1fY29yZU9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCk7CiAgICAgaWYgKCFj
b21wdXRlZFJvbGVTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1hcC5hZGQoImNvbXB1dGVk
LXJvbGUiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1y
b2xlIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogCiAgICAgICAgIC8vIFRoZSBIVE1MIEFBTSBt
YXBzIHNldmVyYWwgZWxlbWVudHMgdG8gQVJJQSBsYW5kbWFyayByb2xlcy4gSW4gb3JkZXIgZm9y
IHRoZSB0eXBlIG9mIGxhbmRtYXJrCiAgICAgICAgIC8vIHRvIGJlIG9idGFpbmFibGUgaW4gdGhl
IHNhbWUgZmFzaGlvbiBhcyBhbiBBUklBIGxhbmRtYXJrLCBmYWxsIGJhY2sgb24gdGhlIGNvbXB1
dGVkUm9sZVN0cmluZy4KICAgICAgICAgLy8gV2UgYWxzbyB3YW50IHRvIGRvIHRoaXMgZm9yIHRo
ZSBzdHlsZS1mb3JtYXQtZ3JvdXAgZWxlbWVudCB0eXBlcyBzbyB0aGF0IHRoZSB0eXBlIG9mIGZv
cm1hdAogICAgICAgICAvLyBncm91cCBpdCBpcyBkb2Vzbid0IGdldCBsb3N0IHRvIGEgZ2VuZXJp
YyBwbGF0Zm9ybSByb2xlLgogICAgICAgICBpZiAobV9jb3JlT2JqZWN0LT5hcmlhUm9sZUF0dHJp
YnV0ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpVbmtub3duICYmIChtX2NvcmVPYmplY3QtPmlz
TGFuZG1hcmsoKSB8fCBtX2NvcmVPYmplY3QtPmlzU3R5bGVGb3JtYXRHcm91cCgpKSkKLSAgICAg
ICAgICAgIG1hcC5zZXQoInhtbC1yb2xlcyIsIGNvbXB1dGVkUm9sZVN0cmluZyk7CisgICAgICAg
ICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiX3MsIGNvbXB1dGVkUm9sZVN0cmluZyk7CiAgICAgfQog
CiAgICAgU3RyaW5nIHJvbGVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+cm9sZURlc2NyaXB0
aW9uKCk7CiAgICAgaWYgKCFyb2xlRGVzY3JpcHRpb24uaXNFbXB0eSgpKQotICAgICAgICBtYXAu
YWRkKCJyb2xlZGVzY3JpcHRpb24iLCByb2xlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJyb2xlZGVzY3JpcHRpb24iX3MsIHJvbGVEZXNjcmlwdGlvbik7CiAKICAgICBTdHJpbmcgZHJv
cEVmZmVjdCA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3QqPihtX2NvcmVPYmplY3Qp
LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjphcmlhX2Ryb3BlZmZlY3RBdHRyKTsKICAgICBpZiAo
IWRyb3BFZmZlY3QuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0IiwgZHJv
cEVmZmVjdCk7CisgICAgICAgIG1hcC5hZGQoImRyb3BlZmZlY3QiX3MsIGRyb3BFZmZlY3QpOwog
CiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNEcmFnZ2luZygpKQotICAgICAgICBtYXAu
YWRkKCJncmFiYmVkIiwgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOworICAgICAgICBtYXAuYWRkKCJncmFiYmVkIl9zLCBtX2NvcmVPYmplY3QtPmlzR3JhYmJl
ZCgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwogCiAgICAgU3RyaW5nIGtleVNob3J0Y3V0cyA9
IG1fY29yZU9iamVjdC0+a2V5U2hvcnRjdXRzVmFsdWUoKTsKICAgICBpZiAoIWtleVNob3J0Y3V0
cy5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyIsIGtleVNob3J0Y3V0
cyk7CisgICAgICAgIG1hcC5hZGQoImtleXNob3J0Y3V0cyJfcywga2V5U2hvcnRjdXRzKTsKIAog
ICAgIGlmIChtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxp
dHlNYXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQcmVTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2Jq
ZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0
T2JqZWN0VHlwZTo6UHJlU3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQt
dHlwZSIsICJwcmUiKTsKKyAgICAgICAgbWFwLmFkZCgibXVsdGlzY3JpcHQtdHlwZSJfcywgInBy
ZSJfcyk7CiAgICAgZWxzZSBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1cGVyc2NyaXB0
KSB8fCBtX2NvcmVPYmplY3QtPmlzTWF0aE11bHRpc2NyaXB0T2JqZWN0KEFjY2Vzc2liaWxpdHlN
YXRoTXVsdGlzY3JpcHRPYmplY3RUeXBlOjpQb3N0U3Vic2NyaXB0KSkKLSAgICAgICAgbWFwLmFk
ZCgibXVsdGlzY3JpcHQtdHlwZSIsICJwb3N0Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiX3MsICJwb3N0Il9zKTsKIAogICAgIGlmIChhdXRvKiBsaXZlQ29udGFpbmVyID0g
bV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQW5jZXN0b3IoZmFsc2UpKSB7CiAgICAgICAgIGF1dG8g
bGl2ZVN0YXR1cyA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25TdGF0dXMoKTsKLSAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWxpdmUiLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgbWFwLmFkZCgi
Y29udGFpbmVyLWxpdmUiX3MsIGxpdmVTdGF0dXMpOwogICAgICAgICBhdXRvIHJlbGV2YW50ID0g
bGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1yZWxldmFudCIsIHJlbGV2YW50KTsKKyAgICAgICAgbWFwLmFkZCgiY29udGFpbmVy
LXJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgIGJvb2wgaXNBdG9taWMgPSBsaXZlQ29u
dGFpbmVyLT5saXZlUmVnaW9uQXRvbWljKCk7CiAgICAgICAgIGlmIChpc0F0b21pYykKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAg
bWFwLmFkZCgiY29udGFpbmVyLWF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAgICBjb25zdCBT
dHJpbmcmIGxpdmVSb2xlID0gcm9sZVN0cmluZy5pc0VtcHR5KCkgPyBjb21wdXRlZFJvbGVTdHJp
bmcgOiByb2xlU3RyaW5nOwogICAgICAgICBpZiAoIWxpdmVSb2xlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlLXJvbGUiLCBsaXZlUm9sZSk7CisgICAgICAg
ICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIl9zLCBsaXZlUm9sZSk7CiAKICAgICAg
ICAgaWYgKGxpdmVDb250YWluZXIgPT0gbV9jb3JlT2JqZWN0KSB7Ci0gICAgICAgICAgICBtYXAu
YWRkKCJsaXZlIiwgbGl2ZVN0YXR1cyk7Ci0gICAgICAgICAgICBtYXAuYWRkKCJyZWxldmFudCIs
IHJlbGV2YW50KTsKKyAgICAgICAgICAgIG1hcC5hZGQoImxpdmUiX3MsIGxpdmVTdGF0dXMpOwor
ICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiX3MsIHJlbGV2YW50KTsKICAgICAgICAgICAg
IGlmIChpc0F0b21pYykKLSAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIp
OworICAgICAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyJfcywgInRydWUiX3MpOwogICAgICAg
ICB9IGVsc2UgaWYgKCFpc0F0b21pYyAmJiBtX2NvcmVPYmplY3QtPmxpdmVSZWdpb25BdG9taWMo
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImF0b21pYyIsICJ0cnVlIik7CisgICAgICAgICAgICBt
YXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICB9CiAKICAgICByZXR1cm4gbWFwOwpA
QCAtMTI5MSwzNCArMTI5MSwzNCBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpl
ZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiAKICAgICBzd2l0Y2ggKCplZmZlY3RpdmUpIHsKICAg
ICBjYXNlIEF0c3BpOjpSb2xlOjpJbWFnZToKLSAgICAgICAgcmV0dXJuICJpbWFnZSI7CisgICAg
ICAgIHJldHVybiAiaW1hZ2UiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGV4dDoKICAgICBj
YXNlIEF0c3BpOjpSb2xlOjpTdGF0aWM6Ci0gICAgICAgIHJldHVybiAidGV4dCI7CisgICAgICAg
IHJldHVybiAidGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpJbnZhbGlkUm9sZToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAgICAgcmV0dXJuICJpbnZhbGlkIl9zOwogICAg
IGNhc2UgQXRzcGk6OlJvbGU6OlBhbmVsOgotICAgICAgICByZXR1cm4gInBhbmVsIjsKKyAgICAg
ICAgcmV0dXJuICJwYW5lbCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYXNzd29yZFRleHQ6
Ci0gICAgICAgIHJldHVybiAicGFzc3dvcmQgdGV4dCI7CisgICAgICAgIHJldHVybiAicGFzc3dv
cmQgdGV4dCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpUYWJsZToKLSAgICAgICAgcmV0dXJu
ICJ0YWJsZSI7CisgICAgICAgIHJldHVybiAidGFibGUiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9s
ZTo6VGFibGVSb3c6Ci0gICAgICAgIHJldHVybiAidGFibGUgcm93IjsKKyAgICAgICAgcmV0dXJu
ICJ0YWJsZSByb3ciX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGVDZWxsOgotICAgICAg
ICByZXR1cm4gInRhYmxlIGNlbGwiOworICAgICAgICByZXR1cm4gInRhYmxlIGNlbGwiX3M7CiAg
ICAgY2FzZSBBdHNwaTo6Um9sZTo6U2VjdGlvbjoKLSAgICAgICAgcmV0dXJuICJzZWN0aW9uIjsK
KyAgICAgICAgcmV0dXJuICJzZWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhG
cmFjdGlvbjoKLSAgICAgICAgcmV0dXJuICJtYXRoIGZyYWN0aW9uIjsKKyAgICAgICAgcmV0dXJu
ICJtYXRoIGZyYWN0aW9uIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6Ok1hdGhSb290OgotICAg
ICAgICByZXR1cm4gIm1hdGggcm9vdCI7CisgICAgICAgIHJldHVybiAibWF0aCByb290Il9zOwog
ICAgIGNhc2UgQXRzcGk6OlJvbGU6OlN1YnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdWJzY3Jp
cHQiOworICAgICAgICByZXR1cm4gInN1YnNjcmlwdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xl
OjpTdXBlcnNjcmlwdDoKLSAgICAgICAgcmV0dXJuICJzdXBlcnNjcmlwdCI7CisgICAgICAgIHJl
dHVybiAic3VwZXJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6TGFuZG1hcms6Ci0g
ICAgICAgIHJldHVybiAibGFuZG1hcmsiOworICAgICAgICByZXR1cm4gImxhbmRtYXJrIl9zOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzMjksNyArMTMyOSw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVOYW1lKCkgY29u
c3QKIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OnJvbGVOYW1lKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY29yZU9iamVjdCkKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIjsKKyAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIl9zOwogCiAgICAgYXV0byBlZmZlY3RpdmUgPSBlZmZlY3RpdmVS
b2xlTmFtZSgpOwogICAgIGlmICghZWZmZWN0aXZlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRB
dHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IGU0Y2Y2YzBkYTBlNWQ3ZDMwY2Q3ZTI3OWNhN2Uw
MjZkZDNkYTk3NzQuLjE4YjlkNmRjOTQ1YmYwMmZmODhmNTA0NmFiNjY0NGQyZjQ3ZTZmOTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0
eU9iamVjdFRleHRBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcApAQCAtNzgzLDEyICs3ODMsMTIg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpUZXh0QXR0cmlidXRlcyBBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnRleHRBdHRyaWJ1dGUKICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQo
ImZhbWlseS1uYW1lIl9zLCBzdHlsZS5mb250Q2FzY2FkZSgpLmZpcnN0RmFtaWx5KCkpOwogICAg
ICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgic2l6ZSJfcywgbWFrZVN0cmluZyhzdGQ6OnJvdW5k
KHN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpICogNzIgLyBXZWJDb3JlOjpzY3JlZW5EUEko
KSksICJwdCIpKTsKICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoIndlaWdodCJfcywgbWFr
ZVN0cmluZyhzdGF0aWNfY2FzdDxmbG9hdD4oc3R5bGUuZm9udENhc2NhZGUoKS53ZWlnaHQoKSkp
KTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0eWxlIl9zLCBzdHlsZS5mb250Q2Fz
Y2FkZSgpLml0YWxpYygpID8gIml0YWxpYyIgOiAibm9ybWFsIik7Ci0gICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJzdHJpa2V0aHJvdWdoIl9zLCBzdHlsZS50ZXh0RGVjb3JhdGlvbkxpbmUo
KSAmIFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2ggPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
LSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERl
Y29yYXRpb25MaW5lKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUi
IDogIm5vbmUiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImludmlzaWJsZSJfcywg
c3R5bGUudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbiA/ICJ0cnVlIiA6ICJmYWxz
ZSIpOwotICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZWRpdGFibGUiX3MsIG1fY29yZU9i
amVjdC0+Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotICAgICAg
ICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIiA6ICJydGwiKTsKKyAgICAgICAgYWRkQXR0cmli
dXRlSWZOZWVkZWQoInN0eWxlIl9zLCBzdHlsZS5mb250Q2FzY2FkZSgpLml0YWxpYygpID8gIml0
YWxpYyJfcyA6ICJub3JtYWwiX3MpOworICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgic3Ry
aWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5lKCkgJiBUZXh0RGVjb3JhdGlv
bkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAgICBhZGRB
dHRyaWJ1dGVJZk5lZWRlZCgidW5kZXJsaW5lIl9zLCBzdHlsZS50ZXh0RGVjb3JhdGlvbkxpbmUo
KSAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lID8gInNpbmdsZSJfcyA6ICJub25lIl9z
KTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImludmlzaWJsZSJfcywgc3R5bGUudmlz
aWJpbGl0eSgpID09IFZpc2liaWxpdHk6OkhpZGRlbiA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsK
KyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVPYmplY3Qt
PmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CisgICAgICAg
IGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJkaXJlY3Rpb24iX3MsIHN0eWxlLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRsIl9zKTsKIAogICAgICAgICBpZiAo
IXN0eWxlLnRleHRJbmRlbnQoKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAgYWRkQXR0cmli
dXRlSWZOZWVkZWQoImluZGVudCJfcywgbWFrZVN0cmluZyh2YWx1ZUZvckxlbmd0aChzdHlsZS50
ZXh0SW5kZW50KCksIG1fY29yZU9iamVjdC0+c2l6ZSgpLndpZHRoKCkpLnRvSW50KCkpKTsKQEAg
LTc5OSwxOCArNzk5LDE4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0
ZXMgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpMZWZ0OgogICAgICAgICBjYXNlIFRl
eHRBbGlnbk1vZGU6OldlYktpdExlZnQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRl
ZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiKTsKKyAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlm
TmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAibGVmdCJfcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpSaWdodDoKICAgICAgICAgY2FzZSBUZXh0QWxp
Z25Nb2RlOjpXZWJLaXRSaWdodDoKLSAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJq
dXN0aWZpY2F0aW9uIl9zLCAicmlnaHQiKTsKKyAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVl
ZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAicmlnaHQiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgogICAgICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OldlYktpdENlbnRlcjoKLSAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJq
dXN0aWZpY2F0aW9uIl9zLCAiY2VudGVyIik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5l
ZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImNlbnRlciJfcyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5OgotICAgICAgICAgICAgYWRkQXR0
cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIik7CisgICAgICAgICAgICBh
ZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImZpbGwiX3MpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKaW5kZXgg
ZWU2ZmFkMDIwYmMzZjg4YTA4NGI2ZGZhZjE2YWZjNWQ0MjFjNzY4NS4uZDIwM2Y1NzQyYTkxNWE5
NWY0MTBhM2U5Y2Q0N2M3OGY1N2Y2NTVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCkBA
IC0xNzUsOCArMTc1LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Um9vdEF0c3BpOjpzZXRQYXRoKFN0
cmluZyYmIHBhdGgpCiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1iZWRkZWQoY29u
c3QgY2hhciogcGFyZW50VW5pcXVlTmFtZSwgY29uc3QgY2hhciogcGFyZW50UGF0aCkKIHsKLSAg
ICBtX3BhcmVudFVuaXF1ZU5hbWUgPSBwYXJlbnRVbmlxdWVOYW1lOwotICAgIG1fcGFyZW50UGF0
aCA9IHBhcmVudFBhdGg7CisgICAgbV9wYXJlbnRVbmlxdWVOYW1lID0gU3RyaW5nOjpmcm9tVVRG
OChwYXJlbnRVbmlxdWVOYW1lKTsKKyAgICBtX3BhcmVudFBhdGggPSBTdHJpbmc6OmZyb21VVEY4
KHBhcmVudFBhdGgpOwogICAgIEFjY2Vzc2liaWxpdHlBdHNwaTo6c2luZ2xldG9uKCkucGFyZW50
Q2hhbmdlZCgqdGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IGE0NTY2NTE5NmM1YTk5YTFmMjhhMGZm
M2RhNjc3NTVkMWI4MmE1M2YuLjc5YjkxNWZiYWMxMWFkM2YxNzQ4ZjkzMmE2NWM5Y2VkMDRiNzA2
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0
Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmpl
Y3RDYWNoZUlPUy5tbQpAQCAtNDIsNDYgKzQyLDQ2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0
YWNoV3JhcHBlcihBWENvcmVPYmplY3QqIG9iaikKICAgICBvYmotPnNldFdyYXBwZXIod3JhcHBl
ci5nZXQoKSk7CiB9CiAKLVN0cmluZyBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9y
bU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQorQVNDSUlMaXRlcmFsIEFYT2JqZWN0
Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRp
b24pCiB7Ci0gICAgU3RyaW5nIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiAKICAgICBz
d2l0Y2ggKG5vdGlmaWNhdGlvbikgewogICAgIGNhc2UgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdl
ZDoKICAgICBjYXNlIEFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAi
QVhGb2N1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIl9zOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEFYSW1hZ2VPdmVybGF5Q2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW1hZ2VPdmVy
bGF5Q2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFBhZ2VTY3JvbGxlZDoK
LSAgICAgICAgbmFtZSA9ICJBWFBhZ2VTY3JvbGxlZCI7CisgICAgICAgIG5hbWUgPSAiQVhQYWdl
U2Nyb2xsZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTZWxlY3RlZFN0YXRlQ2hh
bmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIjsKKyAgICAgICAg
bmFtZSA9ICJBWFNlbGVjdGVkQ2VsbHNDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4
dENoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWExpdmVSZWdpb25DaGFuZ2VkOgogICAgIGNhc2UgQVhM
aXZlUmVnaW9uQ3JlYXRlZDoKLSAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWExpdmVSZWdpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIEFYSW52YWxpZFN0YXR1c0NoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbnZh
bGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CiAg
ICAgY2FzZSBBWFZhbHVlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7
CisgICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgQVhFeHBhbmRlZENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhFeHBhbmRlZENoYW5n
ZWQiOworICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIl9zOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIEFYQ3VycmVudFN0YXRlQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWEN1
cnJlbnRTdGF0ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYQ3VycmVudFN0YXRlQ2hhbmdl
ZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNvcnREaXJlY3Rpb25DaGFuZ2VkOgot
ICAgICAgICBuYW1lID0gIkFYU29ydERpcmVjdGlvbkNoYW5nZWQiOworICAgICAgICBuYW1lID0g
IkFYU29ydERpcmVjdGlvbkNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIGJyZWFrOwpAQCAtOTgsMTUgKzk4LDE2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNh
dGlvCiAgICAgLy8gaU9TIG5vdGlmaWNhdGlvbnMgbXVzdCB1bHRpbWF0ZWx5IGNhbGwgVUlLaXQg
VUlBY2Nlc3NpYmlsaXR5UG9zdE5vdGlmaWNhdGlvbi4KICAgICAvLyBCdXQgV2ViQ29yZSBpcyBu
b3QgbGlua2VkIHdpdGggVUlLaXQuIFNvIGEgd29ya2Fyb3VuZCBpcyB0byBvdmVycmlkZSB0aGUg
d3JhcHBlcidzCiAgICAgLy8gcG9zdE5vdGlmaWNhdGlvbiBtZXRob2QgaW4gdGhlIHN5c3RlbSBX
ZWJLaXRBY2Nlc3NpYmlsaXR5IGJ1bmRsZSB0aGF0IGRvZXMgbGluayBVSUtpdC4KLSAgICBTdHJp
bmcgbm90aWZpY2F0aW9uTmFtZSA9IG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShub3RpZmljYXRp
b24pOwotICAgIGlmIChub3RpZmljYXRpb25OYW1lLmlzRW1wdHkoKSkKKyAgICBhdXRvIG5vdGlm
aWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKKyAg
ICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
W29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07Cisg
ICAgYXV0byBuc05vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25OYW1lLmNyZWF0ZU5TU3Ry
aW5nKCk7CisgICAgW29iamVjdC0+d3JhcHBlcigpIHBvc3ROb3RpZmljYXRpb246bnNOb3RpZmlj
YXRpb25OYW1lLmdldCgpXTsKIAogICAgIC8vIFRvIHNpbXVsYXRlIEFYIG5vdGlmaWNhdGlvbnMg
Zm9yIExheW91dFRlc3RzIG9uIHRoZSBzaW11bGF0b3IsIGNhbGwKICAgICAvLyB0aGUgd3JhcHBl
cidzIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb24uCi0gICAgW29iamVjdC0+d3JhcHBl
cigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZV07Cisg
ICAgW29iamVjdC0+d3JhcHBlcigpIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bnNO
b3RpZmljYXRpb25OYW1lLmdldCgpXTsKIH0KIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4
dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIGNv
bnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50JiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IDc5MTkwYzE5NWI3N2Ux
NjY0ZWUwN2YzMjczNmIzZGFkMTYxMDUxM2EuLjUzOGI3ODVkNjlkOTBmZjYxZWU3NzZhYWIzMmY5
NTRjZTVlNTg2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBA
IC0xNjcxLDEyICsxNjcxLDEyIEBAIC0gKEJPT0wpYWNjZXNzaWJpbGl0eVNjcm9sbDooVUlBY2Nl
c3NpYmlsaXR5U2Nyb2xsRGlyZWN0aW9uKWRpcmVjdGlvbgogICAgIEJPT0wgcmVzdWx0ID0gc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPnNjcm9sbEJ5UGFnZShzY3JvbGxEaXJlY3Rpb24pOwogCiAgICAg
aWYgKHJlc3VsdCkgewotICAgICAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZSA9IEFYT2JqZWN0
Q2FjaGU6Om5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE9iamVjdENhY2hlOjpBWE5vdGlmaWNh
dGlvbjo6QVhQYWdlU2Nyb2xsZWQpOwotICAgICAgICBbc2VsZiBwb3N0Tm90aWZpY2F0aW9uOm5v
dGlmaWNhdGlvbk5hbWVdOworICAgICAgICBhdXRvIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVj
dENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmlj
YXRpb246OkFYUGFnZVNjcm9sbGVkKS5jcmVhdGVOU1N0cmluZygpOworICAgICAgICBbc2VsZiBw
b3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWUuZ2V0KCldOwogCiAgICAgICAgIENHUG9p
bnQgc2Nyb2xsUG9zID0gW3NlbGYgX2FjY2Vzc2liaWxpdHlTY3JvbGxQb3NpdGlvbl07CiAgICAg
ICAgIE5TU3RyaW5nICp0ZXN0U3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJB
WFNjcm9sbCBbcG9zaXRpb246ICUuMmYgJS4yZl0iLCBzY3JvbGxQb3MueCwgc2Nyb2xsUG9zLnld
OwotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNh
dGlvbk5hbWUgdXNlckluZm86QHsgQCJzdGF0dXMiIDogdGVzdFN0cmluZyB9XTsKKyAgICAgICAg
W3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdl
dCgpIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CiAgICAgfQogCiAgICAg
Ly8gVGhpcyBtZWFucyB0aGF0IHRoaXMgb2JqZWN0IGhhbmRsZWQgdGhlIHNjcm9sbCBhbmQgbm8g
b3RoZXIgYW5jZXN0b3Igc2hvdWxkIGF0dGVtcHQgc2Nyb2xsaW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA2MzY5NjcwMWY0NDI5
NzFkMWMwMjVmODc4M2ZkZjgyM2YzYjk4ZDEwLi42NGI4Y2FlNzY0M2QxMjMwNjU0OWY4Yjc4ZjY0
YmJlZjU0OTRkMjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIFZhbHVlT3JFeGNlcHRpb24gU2NyaXB0
Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCwK
ICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgaWYgKG1fZnJhbWUubG9hZGVyKCku
Y2xpZW50KCkuc2hvdWxkRW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeVByb3RlY3Rpb25zKCkpIHsK
ICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAg
ICAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24g
Zm9yIG5vbi1hcHAgYm91bmQgZG9tYWluLiIpOworICAgICAgICAgICAgZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6Oldhcm5p
bmcsICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9t
YWluLiJfcyk7CiAgICAgICAgIFNDUklQVENPTlRST0xMRVJfUkVMRUFTRV9MT0dfRVJST1IoTG9h
ZGluZywgImV4ZWN1dGVTY3JpcHRJbldvcmxkOiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rp
b24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybiBtYWtlVW5leHBl
Y3RlZChFeGNlcHRpb25EZXRhaWxzIHsgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBm
b3Igbm9uLWFwcCBib3VuZCBkb21haW4iX3MgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCBkM2U5ODE5YmQ1
MzFmODQ4NmEzMTdhYjlmOWVkODNhOTg4NWJlMmJhLi44MmZhNzVmOTY3MzFmYjQxNWRhMzVjOTRk
YzVmY2MzZDk3YTA0NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9X
ZWJDb250ZW50UmVhZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9X
ZWJDb250ZW50UmVhZGVyR3RrLmNwcApAQCAtNDYsNyArNDYsNyBAQCBib29sIFdlYkNvbnRlbnRS
ZWFkZXI6OnJlYWRGaWxlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgsIFByZXNlbnRhdGlvblNpemUs
IGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8gbWFya3VwID0gdXJsVG9N
YXJrdXAoVVJMKHsgfSwgcGF0aCksIHBhdGgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdt
ZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyIsIERpc2Fs
bG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50RnJvbU1hcmt1cCgqZnJhbWUuZG9jdW1lbnQoKSwgbWFya3VwLCAiZmlsZTovLyJfcywg
RGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA5MDBlZDVmZjg0
YjkzMWE2OWZmY2FiODBhZTVlM2RhMjFjNWY2NGRiLi42MzYyOTM2NTczYmFlYzY4YTI1NmU1Y2E2
Y2ViODE3NmY0MzM4MzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgRWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdl
ZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyCiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBjb25zdCBjaGFyICpuZXdWYWx1ZSA9
IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIG5ld1ZhbHVlOwogICAgIFRleHRBbGlnbk1vZGUg
dGV4dEFsaWduID0gKnZhbHVlOwogICAgIHN3aXRjaCAodGV4dEFsaWduKSB7CiAgICAgY2FzZSBU
ZXh0QWxpZ25Nb2RlOjpTdGFydDoKQEAgLTEwMCwyMSArMTAwLDIxIEBAIHZvaWQgRWRpdG9yOjpz
ZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24gZGlyCiAgICAgICAgICAgICAvLyBuby1vcAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6TGVmdFRvUmlnaHQ6Ci0gICAgICAgICAgICBuZXdW
YWx1ZSA9ICJsZWZ0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBXcml0aW5nRGlyZWN0aW9uOjpSaWdodFRvTGVmdDoK
LSAgICAgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAgICAgIG5ld1ZhbHVlID0g
InJpZ2h0Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OldlYktpdExlZnQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0IjsKKyAgICAgICAg
bmV3VmFsdWUgPSAicmlnaHQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWdu
TW9kZTo6UmlnaHQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRSaWdodDoKLSAgICAg
ICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgIG5ld1ZhbHVlID0gImxlZnQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6Q2VudGVyOgogICAgIGNhc2UgVGV4
dEFsaWduTW9kZTo6V2ViS2l0Q2VudGVyOgpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgRWRpdG9y
OjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdE
aXJlY3Rpb24gZGlyCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmICghbmV3VmFsdWUp
CisgICAgaWYgKG5ld1ZhbHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCA9IG1fZG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKQEAgLTE1
MCw3ICsxNTAsNyBAQCB2b2lkIEVkaXRvcjo6cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKCkKICAg
ICBhdXRvIGRlZmF1bHRTdHlsZSA9IGVkaXRpbmdTdHlsZS0+c3R5bGUoKS0+bXV0YWJsZUNvcHko
KTsKICAgICAKICAgICAvLyBUZXh0IHdpZGdldHMgaW1wbGVtZW50IGJhY2tncm91bmQgY29sb3Ig
dmlhIHRoZSBVSVZpZXcgcHJvcGVydHkuIFRoZWlyIGJvZHkgZWxlbWVudCB3aWxsIG5vdCBoYXZl
IG9uZS4KLSAgICBkZWZhdWx0U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjApIik7CisgICAgZGVmYXVsdFN0eWxlLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1
NSwgMC4wKSJfcyk7CiAgICAgCiAgICAgLy8gUmVtb3ZlIHByb3BlcnRpZXMgdGhhdCB0aGUgdXNl
ciBjYW4gbW9kaWZ5LCBsaWtlIGZvbnQtd2VpZ2h0LiAKICAgICAvLyBBbHNvIHJlbW92ZSBmb250
LWZhbWlseSwgcGVyIEhJIHNwZWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUv
RWRpdG9yTGliV1BFLmNwcAppbmRleCBiOTc4ZTJlOGY4ZTg4MmJiYzdkMGY5MWNhZDc2YzM4MjUw
OGU5YTNmLi40OTE0OTA1NzllNmI5MTE0OTg0NDljYTgyOWZjOTE1ODg1MWFiOGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKQEAgLTQ2LDcg
KzQ2LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZy
b21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvaHRtbDtjaGFyc2V0PXV0Zi04IikgJiYg
ZnJhbWUuZG9jdW1lbnQoKSkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gcGFzdGVib2FyZC5y
ZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpOworICAgICAgICBTdHJpbmcgbWFy
a3VwID0gcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCJfcyk7
CiAgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50
KCksIG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250
ZW50KTsKICAgICB9CiAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YShQYXN0ZWJvYXJkJiBwYXMK
IAogICAgIGlmICh0eXBlcy5jb250YWlucygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpIHsK
ICAgICAgICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwotICAgICAgICByZXR1cm4gY3JlYXRlRnJh
Z21lbnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgiKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZyb21UZXh0KHJh
bmdlLCBwYXN0ZWJvYXJkLnJlYWRTdHJpbmcoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcykp
OwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggYmMwZjZkNjE4OGY5ODIwMmM0MjU3MDI2NTFhZDdlYTRlZmUx
NzUzNC4uMmZjZWRhNTMzOTMyZjFkOTNkZTg1Y2I4OWZlMmE1ZGVmOTVkNzRlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgc3Ry
dWN0IExvZ0FyZ3VtZW50PFVSTD4gewogICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0
cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKICNlbHNlCiAgICAg
ICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgICAgICByZXR1cm4gIlt1cmxdIjsKKyAgICAgICAg
cmV0dXJuICJbdXJsXSJfczsKICNlbmRpZgogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZz
Y3JlZW5DYW52YXMuaAppbmRleCA0NTdiNWExMWFkOGMwYzAxMjU5YTg4YzI4NDQ5YTIxMDVmODYy
NmEzLi4zZDI3ZTg2NjQ5ODljZjQ3NWRkYWMzMjRjMDg4Mjc2ODNkNWJmNjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBPZmZz
Y3JlZW5DYW52YXMgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxPZmZzY3JlZW5DYW52YXM+LCBw
dWJsaWMgQ2FudmFzQgogcHVibGljOgogCiAgICAgc3RydWN0IEltYWdlRW5jb2RlT3B0aW9ucyB7
Ci0gICAgICAgIFN0cmluZyB0eXBlID0gImltYWdlL3BuZyI7CisgICAgICAgIFN0cmluZyB0eXBl
ID0gImltYWdlL3BuZyJfczsKICAgICAgICAgZG91YmxlIHF1YWxpdHkgPSAxLjA7CiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCA0
ZGZkZTY2M2U4YmI4MzMyOWY1NjIwNTEzMzQ5NWE3YWJiMzJiY2QwLi41MGFkNWNiYzk2NWRlMDAw
Yjg4MTY4OTdiYWU5ODE3YTNlZGM5ZmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTE3Miw3ICsxMTcyLDcgQEAgaW50IEluc3BlY3RvckNh
bnZhczo6aW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCiAKICAgICAgICAg
ICAgIGlmIChvZmZzY3JlZW5DYW52YXMtPm9yaWdpbkNsZWFuKCkgJiYgb2Zmc2NyZWVuQ2FudmFz
LT5oYXNDcmVhdGVkSW1hZ2VCdWZmZXIoKSkgewogICAgICAgICAgICAgICAgIGlmIChhdXRvICpi
dWZmZXIgPSBvZmZzY3JlZW5DYW52YXMtPmJ1ZmZlcigpKQotICAgICAgICAgICAgICAgICAgICBk
YXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyIpOworICAgICAgICAgICAgICAg
ICAgICBkYXRhVVJMID0gYnVmZmVyLT50b0RhdGFVUkwoImltYWdlL3BuZyJfcyk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGluZGV4ID0gaW5kZXhGb3JEYXRhKGRhdGFVUkwpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKaW5k
ZXggMTI2MzJkNmU2N2QzODM3YTFlZDY4NDE1ZDA0MjkxMDgxZDY1MjZkOC4uYWEyNGY1MzM1ODM4
MzYzODZkN2Q1NjUzNGNiODk5NDg1MzU1NGUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2UoKQogICAgICAgICBHVW5pcXVlT3V0UHRyPEdF
cnJvcj4gZXJyb3I7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0R1JlZihz
dGF0aWNfY2FzdDxHQnl0ZXMqPihnX3Rhc2tfcHJvcGFnYXRlX3BvaW50ZXIodGFzaywgJmVycm9y
Lm91dFB0cigpKSkpOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAgICAgICBsb2FkZXIt
PmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwg
ZXJyb3ItPmNvZGUsIHVybCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKKyAg
ICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtf
dG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJv
bVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IApAQCAtNjQsMTAgKzY0LDExIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRHUmVzb3VyY2Uo
KQogICAgICAgICBjb25zdCBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgZ3VjaGFyKj4o
Z19ieXRlc19nZXRfZGF0YShieXRlcy5nZXQoKSwgJmRhdGFTaXplKSk7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZmlsZU5hbWUoZ19wYXRoX2dldF9iYXNlbmFtZSh1cmwucGF0aCgpLnV0Zjgo
KS5kYXRhKCkpKTsKICAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb250ZW50VHlwZShnX2NvbnRl
bnRfdHlwZV9ndWVzcyhmaWxlTmFtZS5nZXQoKSwgZGF0YSwgZGF0YVNpemUsIG51bGxwdHIpKTsK
LSAgICAgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSB7IHVybCwgZXh0cmFjdE1JTUVUeXBl
RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5nZXQoKSksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4o
ZGF0YVNpemUpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkp
IH07CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZVN0cmluZyB7IGNvbnRlbnRUeXBlLmdldCgp
IH07CisgICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1F
VHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGVTdHJpbmcpLCBzdGF0aWNfY2FzdDxsb25nIGxv
bmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3Ry
aW5nKSB9OwogICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAg
ICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwotICAgICAgICByZXNwb25zZS5z
ZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlw
ZS5nZXQoKSk7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6Q29udGVudFR5cGUsIGNvbnRlbnRUeXBlU3RyaW5nKTsKICAgICAgICAgcmVzcG9uc2Uu
c2V0U291cmNlKFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6TmV0d29yayk7CiAgICAgICAgIGxv
YWRlci0+ZGVsaXZlclJlc3BvbnNlQW5kRGF0YShyZXNwb25zZSwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoYnl0ZXMuZ2V0KCkpKTsKICAgICB9LCBwcm90ZWN0ZWRUaGlzLmxlYWtSZWYoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IGU5Mjhj
ZTlhMTRmYWJmZWVlZmQ0OTA5ZWRkMWMwZGI5YTRjZmYyYzYuLmQ3MWMzZjc4NGIyZWZjYjNhMWUy
NzY0NmE0ZWRhZDI5MDdlNDc0YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIENvbnRleHRNZW51Q29u
dHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29udGV4dE1lbnVBY3Rpb24gYWN0aW9u
LCBjbwogICAgICAgICBicmVhazsKICNpZiBQTEFURk9STShHVEspCiAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdQYXN0ZUFzUGxhaW5UZXh0OgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29t
bWFuZCgiUGFzdGVBc1BsYWluVGV4dCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRv
cigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiX3MpLmV4ZWN1dGUoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdEZWxldGU6CiAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS5wZXJmb3JtRGVsZXRlKCk7CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9u
IGFjdGlvbiwgY28KICAgICAgICAgaW5zZXJ0VW5pY29kZUNoYXJhY3Rlcih6ZXJvV2lkdGhOb25K
b2luZXIsICpmcmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnU2VsZWN0QWxsOgotICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
IikuZXhlY3V0ZSgpOworICAgICAgICBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVt
VGFnSW5zZXJ0RW1vamk6CiAgICAgICAgIG1fY2xpZW50Lmluc2VydEVtb2ppKCpmcmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3BwCmluZGV4IDUxMjNiYjJkMGMw
NDFkYzQ3Njk3M2NmMDAyOGViOTMyMzlmYTQ3YzguLjI1OWM3MjI1MzY3MWI1YTBhZTA4NWJjMDcx
MmE0YjE1ZWIyNzk1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdl
T3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMu
Y3BwCkBAIC0yNTIsMTQgKzI1MiwxNCBAQCBwcml2YXRlOgogICAgIGJvb2wgbW91c2VFdmVudChQ
YWdlT3ZlcmxheSYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIGZpbmFsOwogCiAgICAgRmxv
YXRSZWN0IHJlY3RGb3JTZXR0aW5nQXRJbmRleCh1bnNpZ25lZCk7Ci0gICAgYm9vbCB2YWx1ZUZv
clNldHRpbmcoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCB2YWx1ZUZvclNldHRpbmcoQVNDSUlM
aXRlcmFsKTsKICAgICAgICAgCiAgICAgc3RkOjpvcHRpb25hbDxJbnRlcmFjdGlvblJlZ2lvbj4g
YWN0aXZlUmVnaW9uKCk7CiAKICAgICBzdHJ1Y3QgU2V0dGluZyB7Ci0gICAgICAgIFN0cmluZyBr
ZXk7Ci0gICAgICAgIFN0cmluZyBuYW1lOwotICAgICAgICBib29sIHZhbHVlOworICAgICAgICBB
U0NJSUxpdGVyYWwga2V5OworICAgICAgICBBU0NJSUxpdGVyYWwgbmFtZTsKKyAgICAgICAgYm9v
bCB2YWx1ZSB7IGZhbHNlIH07CiAgICAgfTsgICAgCiAKICAgICBGaXhlZFZlY3RvcjxTZXR0aW5n
PiBtX3NldHRpbmdzIHsKQEAgLTM3OSw3ICszNzksNyBAQCBGbG9hdFJlY3QgSW50ZXJhY3Rpb25S
ZWdpb25PdmVybGF5OjpyZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAg
fTsKIH0KIAotYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhj
b25zdCBTdHJpbmcmIG5hbWUpCitib29sIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVG
b3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCBuYW1lKQogewogICAgIGZvciAoY29uc3QgYXV0byYgc2V0
dGluZyA6IG1fc2V0dGluZ3MpIHsKICAgICAgICAgaWYgKG5hbWUgPT0gc2V0dGluZy5rZXkpCkBA
IC00MjYsNyArNDI2LDcgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0
KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogICAgIAogICAgIGNvbnRl
eHQuY2xlYXJSZWN0KGRpcnR5UmVjdCk7CiAKLSAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdp
b25zIikpIHsKKyAgICBpZiAodmFsdWVGb3JTZXR0aW5nKCJyZWdpb25zIl9zKSkgewogICAgICAg
ICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcygyKTsKICAgICAgICAgY29udGV4dC5zZXRTdHJv
a2VDb2xvcihDb2xvcjo6Z3JlZW4pOwogCkBAIC00MzgsNyArNDM4LDcgQEAgdm9pZCBJbnRlcmFj
dGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LAogCiAgICAgYXV0byByZWdpb24gPSBhY3RpdmVSZWdpb24oKTsKIAotICAgIGlm
IChyZWdpb24gfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICBpZiAocmVn
aW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiJfcykpIHsKICAgICAgICAgYXV0byBn
cmFkaWVudERhdGEgPSBbJl0gKGZsb2F0IHJhZGl1cykgewogICAgICAgICAgICAgR3JhZGllbnQ6
OlJhZGlhbERhdGEgZ3JhZGllbnREYXRhOwogICAgICAgICAgICAgZ3JhZGllbnREYXRhLnBvaW50
MCA9IG1fbW91c2VMb2NhdGlvbkluQ29udGVudENvb3JkaW5hdGVzOwpAQCAtNDUxLDEwICs0NTEs
MTAgQEAgdm9pZCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5
JiwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LAogCiAgICAgICAgIGF1dG8gbWFrZUdyYWRpZW50
ID0gWyZdIChib29sIGhhc0xpZ2h0QmFja2dyb3VuZCwgR3JhZGllbnQ6OlJhZGlhbERhdGEgZ3Jh
ZGllbnREYXRhKSB7CiAgICAgICAgICAgICBhdXRvIGdyYWRpZW50ID0gR3JhZGllbnQ6OmNyZWF0
ZShXVEZNb3ZlKGdyYWRpZW50RGF0YSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpTUkdC
IHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwotICAgICAg
ICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNl
dHRpbmcoImNsaXAiKSkgeworICAgICAgICAgICAgaWYgKHJlZ2lvbiAmJiB2YWx1ZUZvclNldHRp
bmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpIHsKICAgICAgICAgICAg
ICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNv
bG9yV2l0aEFscGhhKDAuNSkgfSk7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9y
U3RvcCh7IDEsIGhhc0xpZ2h0QmFja2dyb3VuZCA/IENvbG9yKENvbG9yOjpibGFjaykuY29sb3JX
aXRoQWxwaGEoMC4wNSkgOiBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0aEFscGhhKDAuMSkg
fSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImNsaXAiKSB8fCAh
dmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iKSkgeworICAgICAgICAgICAgfSBlbHNlIGlmICgh
dmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4i
X3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29s
b3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjIpIH0pOwogICAgICAgICAgICAgICAg
IGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBDb2xvcihDb2xvcjo6d2hpdGUpLmNvbG9yV2l0
aEFscGhhKDApIH0pOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2NiwxOCArNDY2LDE4IEBA
IHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAgICAgfTsKICAgICAgICAgCiAgICAgICAgIGNv
bnN0ZXhwciBmbG9hdCBkZWZhdWx0UmFkaXVzID0gNTA7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ2xp
cCA9IHZhbHVlRm9yU2V0dGluZygiY2xpcCIpOworICAgICAgICBib29sIHNob3VsZENsaXAgPSB2
YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpOwogICAgICAgICBWZWN0b3I8UGF0aD4gY2xpcFBhdGhz
OwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKQogICAgICAgICAgICAgY2xpcFBhdGhzID0gcGF0
aHNGb3JSZWdpb24oKnJlZ2lvbik7CiAKLSAgICAgICAgYm9vbCBzaG91bGRVc2VCYWNrZHJvcEdy
YWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0dGluZygid2Fz
aCIpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCIpKTsKKyAgICAgICAgYm9vbCBzaG91bGRVc2VC
YWNrZHJvcEdyYWRpZW50ID0gIXNob3VsZENsaXAgfHwgIXJlZ2lvbiB8fCAoIXZhbHVlRm9yU2V0
dGluZygid2FzaCJfcykgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKSk7CiAKICAgICAgICAg
aWYgKHNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQpIHsKICAgICAgICAgICAgIGlmIChzaG91bGRD
bGlwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogY2xpcFBhdGhz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygi
Y29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRp
bWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmFk
aXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJv
dW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAg
ICAgICAgICAgICAgICAgIGF1dG8gYmFja2Ryb3BHcmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUo
Z3JhZGllbnREYXRhKHJhZGl1cyAqIDEuNSksIHsgQ29sb3JJbnRlcnBvbGF0aW9uTWV0aG9kOjpT
UkdCIHsgfSwgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkIH0pOwogICAg
ICAgICAgICAgICAgICAgICBiYWNrZHJvcEdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENv
bG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAg
ICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OmJs
YWNrKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKQEAgLTQ5NiwxMiArNDk2LDEyIEBAIHZvaWQgSW50
ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaGFzTGlnaHRCYWNrZ3Jv
dW5kID0gZmFsc2U7Ci0gICAgICAgIGlmICghc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCAmJiB2
YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxDb2xvciIpKQorICAgICAgICBpZiAoIXNob3VsZFVz
ZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiX3Mp
KQogICAgICAgICAgICAgaGFzTGlnaHRCYWNrZ3JvdW5kID0gcmVnaW9uLT5oYXNMaWdodEJhY2tn
cm91bmQ7CiAKICAgICAgICAgaWYgKHNob3VsZENsaXApIHsKICAgICAgICAgICAgIGZvciAoY29u
c3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1
cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiKSA/IDEuNSAqIHBhdGguYm91bmRp
bmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVmYXVsdFJhZGl1czsKKyAgICAgICAg
ICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIl9z
KSA/IDEuNSAqIHBhdGguYm91bmRpbmdSZWN0KCkuc2l6ZSgpLm1pbkRpbWVuc2lvbigpIDogZGVm
YXVsdFJhZGl1czsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNldEZpbGxHcmFkaWVudChtYWtl
R3JhZGllbnQoaGFzTGlnaHRCYWNrZ3JvdW5kLCBncmFkaWVudERhdGEocmFkaXVzKSkpOwogICAg
ICAgICAgICAgICAgIGNvbnRleHQuZmlsbFBhdGgocGF0aCk7CiAgICAgICAgICAgICB9CkBAIC01
MjIsOSArNTIyLDkgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6Om1vdXNlRXZlbnQo
UGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8KIAogICAgIHN0ZDo6b3B0aW9u
YWw8Q3Vyc29yPiBjdXJzb3JUb1NldDsKIAotICAgIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjdXJz
b3IiKSkKKyAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIl9zKSkKICAgICAgICAgY3Vy
c29yVG9TZXQgPSBub25lQ3Vyc29yKCk7Ci0gICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygi
aG92ZXIiKSkKKyAgICBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAg
ICAgIGN1cnNvclRvU2V0ID0gcG9pbnRlckN1cnNvcigpOwogCiAgICAgYXV0byBldmVudEluQ29u
dGVudHNDb29yZGluYXRlcyA9IG1haW5GcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMoZXZlbnQu
cG9zaXRpb24oKSk7CkBAIC01NDQsNyArNTQ0LDcgQEAgYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6Om1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmIG92ZXJsYXksIGNvbnN0IFBsYXRmb3JtTW8K
ICAgICBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlcyA9IGV2ZW50SW5Db250ZW50
c0Nvb3JkaW5hdGVzOwogICAgIG92ZXJsYXkuc2V0TmVlZHNEaXNwbGF5KCk7CiAKLSAgICBpZiAo
ZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRv
bnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciIpKQorICAgIGlmIChldmVudC50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6TW91c2VNb3ZlZCAmJiAhZXZlbnQuYnV0dG9ucygpICYmICF2YWx1
ZUZvclNldHRpbmcoImhvdmVyIl9zKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdz
QmFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2Nv
YS5tbQppbmRleCA0Nzc0Y2UwOGE1YjhiNTBmNjRhMTYyMDJmNTM4YjRmNGY3ZWYyZTQ4Li5lMDE2
ZjkyMWQ1ZWI1YWMxMGYxOGQ2ZmNhNzc2MTcxNjU2N2RmZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KQEAgLTYzLDE1ICs2MywxNSBAQCBi
b29sIFNldHRpbmdzQmFzZTo6cGxhdGZvcm1EZWZhdWx0TWVkaWFTb3VyY2VFbmFibGVkKCkKIAog
dm9pZCBTZXR0aW5nc0Jhc2U6OmluaXRpYWxpemVEZWZhdWx0Rm9udEZhbWlsaWVzKCkKIHsKLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFRDIiwgVVNDUklQVF9UUkFESVRJT05B
TF9IQU4pOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiLCBVU0NSSVBU
X1NJTVBMSUZJRURfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1p
bmNobyBQcm9OIiwgVVNDUklQVF9LQVRBS0FOQV9PUl9ISVJBR0FOQSk7Ci0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJBcHBsZSBTRCBHb3RoaWMgTmVvIiwgVVNDUklQVF9IQU5HVUwpOwotCi0g
ICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBz
ZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Vy
aWZGb250RmFtaWx5KCJUaW1lcyIsIFVTQ1JJUFRfQ09NTU9OKTsKLSAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U3RhbmRhcmRG
b250RmFtaWx5KCJQaW5nRmFuZyBUQyJfcywgVVNDUklQVF9UUkFESVRJT05BTF9IQU4pOworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgU0MiX3MsIFVTQ1JJUFRfU0lNUExJRklF
RF9IQU4pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiSGlyYWdpbm8gTWluY2hvIFByb04i
X3MsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOworICAgIHNldFN0YW5kYXJkRm9udEZh
bWlseSgiQXBwbGUgU0QgR290aGljIE5lbyJfcywgVVNDUklQVF9IQU5HVUwpOworCisgICAgc2V0
U3RhbmRhcmRGb250RmFtaWx5KCJUaW1lcyJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldEZp
eGVkRm9udEZhbWlseSgiQ291cmllciJfcywgVVNDUklQVF9DT01NT04pOworICAgIHNldFNlcmlm
Rm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTYW5zU2VyaWZG
b250RmFtaWx5KCJIZWx2ZXRpY2EiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKIH0KIAogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkQ3VzdG9tRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1
c3RvbURhdGEuaAppbmRleCAyNTZmNDQ1NDI5MDMyYmI0MmYzMTNkOTIwYWZiZmZkMWIwMjNhNzdh
Li5kMjM3ZTE4OGM5MzEzMjMxNzAyODUzZWRmOTMwZTlkYTJiNWIyZDk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKQEAgLTc4LDcgKzc4LDcg
QEAgcHVibGljOgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBBU0NJSUxpdGVyYWwgY29jb2FUeXBlKCk7CiAjZWxpZiBQTEFURk9STShHVEspCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIGd0a1R5cGUoKSB7IHJldHVybiAib3JnLndlYmtpdGd0ay5XZWJLaXQu
Y3VzdG9tLXBhc3RlYm9hcmQtZGF0YSI7IH0KKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGd0a1R5
cGUoKSB7IHJldHVybiAib3JnLndlYmtpdGd0ay5XZWJLaXQuY3VzdG9tLXBhc3RlYm9hcmQtZGF0
YSJfczsgfQogI2VuZGlmCiAKICAgICB2b2lkIGZvckVhY2hUeXBlKEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVXNlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnQuaAppbmRl
eCBlYmNkYjFkZDA4MTI0ZmJlYmY1MzY4N2MyOThhODdmMWVhNjUxYTQ1Li41YTk0ODkwMDk0OWQx
OTc3Y2U3MjNhODc2MTE4YTlkZTA0NDc1NGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Vc2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdl
bnQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBlbnVtIGNsYXNzIFVz
ZXJBZ2VudFR5cGUgeyBEZWZhdWx0LCBEZXNrdG9wIH07CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcg
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGlj
YXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiA9IGVtcHR5U3RyaW5n
KCksIFVzZXJBZ2VudFR5cGUgPSBVc2VyQWdlbnRUeXBlOjpEZWZhdWx0KTsKIAotV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpOworV0VCQ09SRV9FWFBPUlQgQVNDSUlM
aXRlcmFsIG9zTmFtZUZvclVzZXJBZ2VudCgpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN5c3Rl
bU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKTsKICNlbHNlCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0
aW9uR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcAppbmRleCBlNDVmYzA2NDMzOTRmMGYyZjA0
NTY0ZmZjNWFmMDEyMDA5YTcyNDc5Li44YjdlNzQxYjdjOGM5NzI1ZWFkMjMyYzFjYzE4YjBhNTBl
NzE0NGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlv
bkdTdHJlYW1lcihBdWRpb0lPQ2FsbGJhY2smIGNhbGxiYWNrLAogICAgIG1fc3JjID0gR1NUX0VM
RU1FTlRfQ0FTVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0FVRElPX1NSQywgInJhdGUi
LCBzYW1wbGVSYXRlLAogICAgICAgICAiYnVzIiwgbV9yZW5kZXJCdXMuZ2V0KCksICJkZXN0aW5h
dGlvbiIsIHRoaXMsICJmcmFtZXMiLCBBdWRpb1V0aWxpdGllczo6cmVuZGVyUXVhbnR1bVNpemUs
IG51bGxwdHIpKTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRl
UGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBhdWRp
b1NpbmsgPSBjcmVhdGVQbGF0Zm9ybUF1ZGlvU2luaygibXVzaWMiX3MpOwogICAgIG1fYXVkaW9T
aW5rQXZhaWxhYmxlID0gYXVkaW9TaW5rOwogICAgIGlmICghYXVkaW9TaW5rKSB7CiAgICAgICAg
IEdTVF9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBHU3RyZWFtZXIgYXVkaW8gc2luayBlbGVtZW50
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdM
aWIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcApp
bmRleCBmNjAwMDEwYWFjODgzZjI0MGFlYTVlOGY4ZWE1ZDUzMjAwNGFjMGM2Li4wZDI5ZDVmM2Q1
N2JmZTM5NGY1ZTIxMTViZThiZTJiNjEyMGY0NTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIGNv
bnN0IFN0cmluZyBwbGF0Zm9ybVZlcnNpb25Gb3JVQVN0cmluZygpCiB7CiAjaWYgT1MoVU5JWCkK
ICAgICBpZiAoY2hhc3Npc1R5cGUoKSA9PSBXVEY6OkNoYXNzaXNUeXBlOjpNb2JpbGUpCi0gICAg
ICAgIHJldHVybiAibGlrZSBBbmRyb2lkIDQuNCI7CisgICAgICAgIHJldHVybiAibGlrZSBBbmRy
b2lkIDQuNCJfczsKIAogICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7CiAgICAgdW5hbWUoJm5hbWUp
OwpAQCAtMTM2LDcgKzEzNiw3IEBAIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvCiAgICAgfSBlbHNl
IHsKICAgICAgICAgU3RyaW5nIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gYXBwbGljYXRpb25W
ZXJzaW9uOwogICAgICAgICBpZiAoZmluYWxBcHBsaWNhdGlvblZlcnNpb24uaXNFbXB0eSgpKQot
ICAgICAgICAgICAgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSAiNjA1LjEuMTUiOworICAgICAg
ICAgICAgZmluYWxBcHBsaWNhdGlvblZlcnNpb24gPSAiNjA1LjEuMTUiX3M7CiAgICAgICAgIHVz
ZXJBZ2VudCA9IHN0YW5kYXJkVXNlckFnZW50U3RhdGljKCkgKyAnICcgKyBhcHBsaWNhdGlvbk5h
bWUgKyAnLycgKyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApp
bmRleCBiN2Q1OGY0NmI5ZWE0MjA3NzZmYzUwZDA2MDUzNmIwYzU5MTExMjRlLi5jNWRlMWI2OGI1
Y2NjYTRiOGM5ODUzYjMzOGI0OTgyMThlMTQzODlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCkBAIC0xODYsMTMg
KzE4NiwxMyBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKGNv
bnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogICAgIGlmICghdmFsaWRhdGVTdWNj
ZXNzKSB7CiAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhj
b21waWxlcik7CiAgICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCi0gICAgICAgICAgICBzaGFkZXJW
YWxpZGF0aW9uTG9nID0gbG9nLmNfc3RyKCk7CisgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9u
TG9nID0gU3RyaW5nIHsgbG9nLmNfc3RyKCkgfTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6OkdldE9iamVjdENv
ZGUoY29tcGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQotICAgICAgICB0cmFu
c2xhdGVkU2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOworICAgICAgICB0cmFuc2xh
dGVkU2hhZGVyU291cmNlID0gU3RyaW5nIHsgb2JqZWN0Q29kZS5jX3N0cigpIH07CiAgICAgCiAg
ICAgaWYgKCFnZXRTeW1ib2xJbmZvKGNvbXBpbGVyLCBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklC
VVRFLCBzeW1ib2xzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmNwcAppbmRleCAxYTViZTZlMWI0ODA1MDBhMzYzZjYzMGMzMmVmNjcyMjI1ODcw
NDNiLi5lNjJjZmQ3NWRmNTkyYzcxYWViOTM3NjFkMzc0OTJiODQ4ZjMzMzQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9H
cmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApAQCAtNTQsNyArNTQsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNp
b25OYW1lID0gIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCI7CitzdGF0aWMgY29uc3RleHBy
IGF1dG8gcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2Rl
cHRoX3N0ZW5jaWwiX3M7CiAKIHN0YXRpYyBTZWNvbmRzIG1heEZyYW1lRHVyYXRpb24gPSA1X3M7
CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnJlYWRu
UGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZAogCiAvLyBUaGUg
Y29udGVudHMgb2YgR3JhcGhpY3NDb250ZXh0R0xBTkdMRUNvbW1vbiBmb2xsb3csIHBvcnRlZCB0
byB1c2UgQU5HTEUuCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0
aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQordm9pZCBH
cmFwaGljc0NvbnRleHRHTEFOR0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwg
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIC8vIEZJWE1FOiBTaW5jZSB0aGUg
Y29uc3RydWN0b3JzIG9mIHZhcmlvdXMgcGxhdGZvcm1zIGFyZSBub3Qgc2hhcmVkLCB3ZSBpbml0
aWFsaXplIHRoaXMgaGVyZS4KICAgICAvLyBVcG9uIGNvbnN0cnVjdGluZyB0aGUgY29udGV4dCwg
YWx3YXlzIGluaXRpYWxpemUgdGhlIGV4dGVuc2lvbnMgdGhhdCB0aGUgV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiB3aWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKaW5kZXggZDlkMzY3NDE4
M2E5OTUyZmE0NDNhNzc0NmYyNGMzZGJhMmEzZTA3OS4uZmNkNTYzYTY3MzA4NzYxNmY2MjQzM2Uz
ZDY2OGQ3ODJkYjY0ZjgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaApAQCAtMzUz
LDcgKzM1Myw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5k
IGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5v
dCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAogICAg
IC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3Qg
Y2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRlRGVw
dGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAg
IHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChH
Q0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBH
Q0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6
ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lk
KiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FM
YXllcldpbi5jcHAKaW5kZXggN2U2MzQ2ZmZhMTgxN2JhMTQxNzU4N2E4ODhhZGViOWU0NGRlYmYz
My4uM2YzNTQ4ZGEwZmZmNGZmZGY4NTQzY2IxZWE3YWZlOWM3OGM3YjEyMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmludFRy
YW5zZm9ybShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBjb25zdCBDQVRyYW5zZm9ybTNEJiB0cmFu
c2ZvcgogICAgIGJ1aWxkZXIuYXBwZW5kKCdbJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTExKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9u
KHRyYW5zZm9ybS5tMTIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJh
bnNmb3JtLm0xMyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zv
cm0ubTE0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTIxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjIp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMyksICcg
JywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTI0KSwgIjsgIiwg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMxKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzIpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMyksICcgJywgRm9ybWF0dGVkTnVt
YmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTM0KSwgIjsgIiwgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQxKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDIpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm00MyksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbih0cmFuc2Zvcm0ubTQ0KSwgJ10nKTsKIH0KIAotc3RhdGljIHZvaWQgcHJpbnRDb2xvcihT
dHJpbmdCdWlsZGVyJiBidWlsZGVyLCBpbnQgaW5kZW50LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBD
R0NvbG9yUmVmIGNvbG9yKQorc3RhdGljIHZvaWQgcHJpbnRDb2xvcihTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBpbnQgaW5kZW50LCBBU0NJSUxpdGVyYWwgbGFiZWwsIENHQ29sb3JSZWYgY29sb3Ip
CiB7CiAgICAgQ29sb3IgbGF5ZXJDb2xvcihyb3VuZEFuZENsYW1wVG9TUkdCQUxvc3N5KGNvbG9y
KSk7CiAgICAgaWYgKCFsYXllckNvbG9yLmlzVmFsaWQoKSkKQEAgLTc2MiwxMCArNzYyLDEwIEBA
IHN0YXRpYyB2b2lkIHByaW50TGF5ZXIoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgUGxh
dGZvcm1DQUxheWVyKiBsYXllciwgaW50CiAgICAgfQogCiAgICAgLy8gUHJpbnQgYmFja2dyb3Vu
ZENvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJh
Y2tncm91bmRDb2xvciIsIENBQ0ZMYXllckdldEJhY2tncm91bmRDb2xvcihsYXllci0+cGxhdGZv
cm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYmFja2dy
b3VuZENvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3Jt
TGF5ZXIoKSkpOwogCiAgICAgLy8gUHJpbnQgYm9yZGVyQ29sb3IgaWYgbmVlZGVkCi0gICAgcHJp
bnRDb2xvcihidWlsZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiLCBDQUNGTGF5ZXJHZXRC
b3JkZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CisgICAgcHJpbnRDb2xvcihidWls
ZGVyLCBpbmRlbnQgKyAxLCAiYm9yZGVyQ29sb3IiX3MsIENBQ0ZMYXllckdldEJvcmRlckNvbG9y
KGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IG1hc2tzVG9Cb3VuZHMg
aWYgbmVlZGVkCiAgICAgaWYgKGJvb2wgbGF5ZXJNYXNrc1RvQm91bmRzID0gbGF5ZXItPm1hc2tz
VG9Cb3VuZHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCmluZGV4IGM4
ZTU2NzgyNDIzMTVhYzM5MzUxZTAyMDhmZjhhMGVkZWUxM2Q5YjUuLjNiN2E3NWRjNzhhZjc5MmEw
MDU5ZmZjNzI2MzA3MTg2MjViOWIyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2Vu
ZC5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQ6
OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBzdGQ6Om9wdGlvbmFsPAogewogICAg
IFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkSW1hZ2UgPSB0b0RhdGEobWltZVR5cGUsIHF1YWxpdHkp
OwogICAgIGlmIChlbmNvZGVkSW1hZ2UuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gImRhdGE6
LCI7CisgICAgICAgIHJldHVybiAiZGF0YTosIl9zOwogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmco
ImRhdGE6IiwgbWltZVR5cGUsICI7YmFzZTY0LCIsIGJhc2U2NEVuY29kZWQoZW5jb2RlZEltYWdl
LmRhdGEoKSwgZW5jb2RlZEltYWdlLnNpemUoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5
cGUuY3BwCmluZGV4IGI5M2JjMzRjYzRkNGEzNDRjYjQxMmVjNzFlZjNjODFkZGU3NTA5ZDIuLjFm
NTE2OTFlZjlmOTA4ZmJmY2RlNTk0MzNlYWVkNGE4Zjg2YjYyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAKQEAgLTM0MiwyMiArMzQyLDIyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0RmFt
aWx5TmFtZVN0cmluZ0Zyb21GYW1pbHkoY29uc3QgU3RyaW5nJiBmYW1pbHkpCiAgICAgICAgIHJl
dHVybiBmYW1pbHk7CiAKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFt
aWx5TmFtZXNJbmRleDo6U3RhbmRhcmRGYW1pbHkpIHx8IGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlNlcmlmRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJz
ZXJpZiI7CisgICAgICAgIHJldHVybiAic2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1p
bHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlNhbnNTZXJpZkZhbWlseSkpCi0gICAg
ICAgIHJldHVybiAic2Fucy1zZXJpZiI7CisgICAgICAgIHJldHVybiAic2Fucy1zZXJpZiJfczsK
ICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6
TW9ub3NwYWNlRmFtaWx5KSkKLSAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiOworICAgICAgICBy
ZXR1cm4gIm1vbm9zcGFjZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+
YXQoRmFtaWx5TmFtZXNJbmRleDo6Q3Vyc2l2ZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAiY3Vy
c2l2ZSI7CisgICAgICAgIHJldHVybiAiY3Vyc2l2ZSJfczsKICAgICBpZiAoZmFtaWx5ID09IGZh
bWlseU5hbWVzRGF0YS0+YXQoRmFtaWx5TmFtZXNJbmRleDo6RmFudGFzeUZhbWlseSkpCi0gICAg
ICAgIHJldHVybiAiZmFudGFzeSI7CisgICAgICAgIHJldHVybiAiZmFudGFzeSJfczsKIAogI2lm
IFBMQVRGT1JNKEdUSykKICAgICBpZiAoZmFtaWx5ID09IGZhbWlseU5hbWVzRGF0YS0+YXQoRmFt
aWx5TmFtZXNJbmRleDo6U3lzdGVtVWlGYW1pbHkpIHx8IGZhbWlseSA9PSAiLXdlYmtpdC1zeXN0
ZW0tZm9udCIpCiAgICAgICAgIHJldHVybiBkZWZhdWx0R3RrU3lzdGVtRm9udCgpOwogI2VuZGlm
CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKICNpZiBG
Q19WRVJTSU9OIDwgMjEzOTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IDFkNmFlMmUxMmU3ZGQ0ZmQ2YzAwNzUxODkwYjI1ZDk1Y2JjOTA3ZGQu
LmZkOWY3OGU3ZDIxNGU4OTkwOGEwNjU4YWJkZjZlOTU3MDY5N2ZiYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIEF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAppbmRl
eCBkNjk0MmNlMjI1NDFkOGVjNGVkYTFlZGY1MGM0NzM1ZWFhNmFmNjQ0Li4xMjA3YzM1YTExM2Mz
N2I1MDU2YmY2NDg5OGI5MjM2NDJmYTNlN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmNw
cApAQCAtNjEzLDcgKzYxMyw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwYXJzZUdzdFN0cnVjdHVyZVZh
bHVlKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiB7CiAgICAgaWYg
KGF1dG8ganNvblZhbHVlID0gZ3N0U3RydWN0dXJlVmFsdWVUb0pTT04odmFsdWUpKSB7CiAgICAg
ICAgIGF1dG8qIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8SlNPTjo6T2JqZWN0Kj4odXNlckRh
dGEpOwotICAgICAgICBvYmplY3QtPnNldFZhbHVlKGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQp
LCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOworICAgICAgICBvYmplY3QtPnNldFZhbHVl
KFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpIH0sIGpzb25WYWx1ZS0+cmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgfQogICAgIHJldHVybiBUUlVFOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAppbmRleCAyZDljMGU5ZTQ1Mzg0MDZlNmUwZmRh
NTk3Y2UzNWY5M2ZlM2M4MDJmLi5iZDZiZTZmN2E2MzBlMzZjYzdiZjE1ODUyYjYwZTIyMWIxNjcy
NDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAt
MTc2LDcgKzE3Niw3IEBAIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6UmVnaXN0cnlMb29rdXBS
ZXN1bHQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpFbGVtZW50CiAgICAgaWYgKHNob3VsZENo
ZWNrSGFyZHdhcmVDbGFzc2lmaWVyID09IENoZWNrSGFyZHdhcmVDbGFzc2lmaWVyOjpZZXMpIHsK
ICAgICAgICAgZm9yIChHTGlzdCogZmFjdG9yaWVzID0gY2FuZGlkYXRlczsgZmFjdG9yaWVzOyBm
YWN0b3JpZXMgPSBnX2xpc3RfbmV4dChmYWN0b3JpZXMpKSB7CiAgICAgICAgICAgICBhdXRvKiBm
YWN0b3J5ID0gcmVpbnRlcnByZXRfY2FzdDxHc3RFbGVtZW50RmFjdG9yeSo+KGZhY3Rvcmllcy0+
ZGF0YSk7Ci0gICAgICAgICAgICBTdHJpbmcgbWV0YWRhdGEgPSBnc3RfZWxlbWVudF9mYWN0b3J5
X2dldF9tZXRhZGF0YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUyk7CisgICAg
ICAgICAgICBTdHJpbmcgbWV0YWRhdGEgeyBnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0
YShmYWN0b3J5LCBHU1RfRUxFTUVOVF9NRVRBREFUQV9LTEFTUykgfTsKICAgICAgICAgICAgIGF1
dG8gY29tcG9uZW50cyA9IG1ldGFkYXRhLnNwbGl0KCcvJyk7CiAgICAgICAgICAgICBpZiAoY29t
cG9uZW50cy5jb250YWlucygiSGFyZHdhcmUiKSkgewogICAgICAgICAgICAgICAgIGlzVXNpbmdI
YXJkd2FyZSA9IHRydWU7CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3Ry
eVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXIKICAgICB9CiAKICAgICBhdXRvIGF2MURlY29kZXJBdmFpbGFibGUgPSBmYWN0b3JpZXMuaGFz
RWxlbWVudEZvck1lZGlhVHlwZShFbGVtZW50RmFjdG9yaWVzOjpUeXBlOjpWaWRlb0RlY29kZXIs
ICJ2aWRlby94LWF2MSIsIEVsZW1lbnRGYWN0b3JpZXM6OkNoZWNrSGFyZHdhcmVDbGFzc2lmaWVy
OjpZZXMpOwotICAgIGlmICgobWF0cm9za2FTdXBwb3J0ZWQgfHwgaXNDb250YWluZXJUeXBlU3Vw
cG9ydGVkKENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAidmlkZW8vbXA0IikpICYmIGF2MURlY29k
ZXJBdmFpbGFibGUpIHsKKyAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVy
VHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCJfcykpICYm
IGF2MURlY29kZXJBdmFpbGFibGUpIHsKICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0
b21TdHJpbmcoImF2MDEqIiksIGF2MURlY29kZXJBdmFpbGFibGUuaXNVc2luZ0hhcmR3YXJlKTsK
ICAgICAgICAgbV9kZWNvZGVyQ29kZWNNYXAuYWRkKEF0b21TdHJpbmcoImF2MSIpLCBhdjFEZWNv
ZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFw
LmFkZChBdG9tU3RyaW5nKCJ4LWF2MSIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJk
d2FyZSk7CkBAIC00MDksNyArNDA5LDcgQEAgdm9pZCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OmluaXRpYWxpemVEZWNvZGVycyhjb25zdCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIKICAgICAg
ICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wMiIpKTsKICAg
ICB9CiAKLSAgICBhdWRpb01wZWdTdXBwb3J0ZWQgfD0gaXNDb250YWluZXJUeXBlU3VwcG9ydGVk
KENvbmZpZ3VyYXRpb246OkRlY29kaW5nLCAiYXVkaW8vbXA0Iik7CisgICAgYXVkaW9NcGVnU3Vw
cG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGlu
ZywgImF1ZGlvL21wNCJfcyk7CiAgICAgaWYgKGF1ZGlvTXBlZ1N1cHBvcnRlZCkgewogICAgICAg
ICBtX2RlY29kZXJNaW1lVHlwZVNldC5hZGQoQXRvbVN0cmluZygiYXVkaW8vbXBlZyIpKTsKICAg
ICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL3gtbXBlZyIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggM2MwZDhmNzNjNDJiOGQ0MmRjYmE3YmQyM2YwNzE3ZDY4ZmZlY2E0Zi4uN2ViYmE0MzIyZTg1
MzkyNTIxYWQ1NTk4ZWNjOGVhNzE0YmQzNGYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEyNDYsNyArMTI0Niw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkaW5nRmFpbGVkKE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGUgbmV0d29yCiAKIEdzdEVsZW1lbnQqIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6Y3JlYXRlQXVkaW9TaW5rKCkKIHsKLSAgICBjb25zdCBjaGFyKiByb2xlID0gbV9wbGF5ZXIt
PmlzVmlkZW9QbGF5ZXIoKSA/ICJ2aWRlbyIgOiAibXVzaWMiOworICAgIGF1dG8gcm9sZSA9IG1f
cGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iX3MgOiAibXVzaWMiX3M7CiAgICAgR3N0
RWxlbWVudCogYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1Npbmsocm9sZSk7CiAgICAg
UkVMRUFTRV9BU1NFUlQoYXVkaW9TaW5rKTsKICAgICBpZiAoIWF1ZGlvU2luaykKQEAgLTE3MzUs
NyArMTczNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNz
YWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9y
KG1lc3NhZ2UsICZlcnIub3V0UHRyKCksICZkZWJ1Zy5vdXRQdHIoKSk7CiAgICAgICAgIEdTVF9F
UlJPUigiRXJyb3IgJWQ6ICVzICh1cmw9JXMpIiwgZXJyLT5jb2RlLCBlcnItPm1lc3NhZ2UsIG1f
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgIG1fZXJyb3JNZXNzYWdlID0g
ZXJyLT5tZXNzYWdlOworICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IFN0cmluZyB7IGVyci0+bWVz
c2FnZSB9OwogCiAgICAgICAgIGVycm9yID0gTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6RW1w
dHk7CiAgICAgICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyLmdldCgpLCBHU1RfU1RSRUFNX0VS
Uk9SLCBHU1RfU1RSRUFNX0VSUk9SX0NPREVDX05PVF9GT1VORCkKQEAgLTE4ODksNyArMTg4OSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKEdzdE1l
c3NhZ2UqIG1lc3NhZ2UpCiAgICAgICAgIGVsc2UgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUo
c3RydWN0dXJlLCAiaHR0cC1oZWFkZXJzIikpIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpF
Q1QocGlwZWxpbmUoKSwgIlByb2Nlc3NpbmcgSFRUUCBoZWFkZXJzOiAlIiBHU1RfUFRSX0ZPUk1B
VCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGlmIChjb25zdCBjaGFyKiB1cmkgPSBnc3Rfc3Ry
dWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidXJpIikpIHsKLSAgICAgICAgICAgICAgICBV
UkwgdXJsIHsgdXJpIH07CisgICAgICAgICAgICAgICAgVVJMIHVybCB7IFN0cmluZyB7IHVyaSB9
IH07CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHVybCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKHVybCAhPSBtX3VybCkgewpAQCAtMjEyNyw3
ICsyMTI3LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJs
ZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSogZW50cnkKICAgICAgICAgZ2NoYXIqIHRpdGxl
ID0gbnVsbHB0cjsKICAgICAgICAgZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcodGFncywgR1NUX1RB
R19USVRMRSwgJnRpdGxlKTsKICAgICAgICAgaWYgKHRpdGxlKSB7Ci0gICAgICAgICAgICBjdWUt
PnNldENvbnRlbnQodGl0bGUpOworICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50KFN0cmluZzo6
ZnJvbVVURjgodGl0bGUpKTsKICAgICAgICAgICAgIGdfZnJlZSh0aXRsZSk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yMTY2LDcgKzIxNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6Y29uZmlndXJlRG93bmxvYWRCdWZmZXIoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICBn
X29iamVjdF9zZXQoZWxlbWVudCwgInRlbXAtdGVtcGxhdGUiLCBuZXdEb3dubG9hZFRlbXBsYXRl
LmdldCgpLCBudWxscHRyKTsKICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJSZWNv
bmZpZ3VyZWQgZmlsZSBkb3dubG9hZCB0ZW1wbGF0ZSBmcm9tICclcycgdG8gJyVzJyIsIG9sZERv
d25sb2FkVGVtcGxhdGUuZ2V0KCksIG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCkpOwogCi0gICAg
U3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCA9IG5ld0Rvd25sb2FkVGVtcGxhdGUuZ2V0KCk7
CisgICAgU3RyaW5nIG5ld0Rvd25sb2FkUHJlZml4UGF0aCB7IG5ld0Rvd25sb2FkVGVtcGxhdGUu
Z2V0KCkgfTsKICAgICBwdXJnZU9sZERvd25sb2FkRmlsZXMobmV3RG93bmxvYWRQcmVmaXhQYXRo
LnJlcGxhY2UoIlhYWFhYWCIsICIiKSk7CiB9CiAKQEAgLTIxNzksNyArMjE3OSw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVkQ2Fs
bGJhY2soTWVkaWFQbGF5ZXJQCiAgICAgR1VuaXF1ZU91dFB0cjxjaGFyPiBkb3dubG9hZEZpbGU7
CiAgICAgZ19vYmplY3RfZ2V0KHBsYXllci0+bV9kb3dubG9hZEJ1ZmZlci5nZXQoKSwgInRlbXAt
bG9jYXRpb24iLCAmZG93bmxvYWRGaWxlLm91dFB0cigpLCBudWxscHRyKTsKIAotICAgIGlmIChV
TkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkb3dubG9hZEZpbGUuZ2V0KCkpKSkgewor
ICAgIGlmIChVTkxJS0VMWSghRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShTdHJpbmc6OmZyb21VVEY4
KGRvd25sb2FkRmlsZS5nZXQoKSkpKSkgewogICAgICAgICBHU1RfV0FSTklORygiQ291bGRuJ3Qg
dW5saW5rIG1lZGlhIHRlbXBvcmFyeSBmaWxlICVzIGFmdGVyIGNyZWF0aW9uIiwgZG93bmxvYWRG
aWxlLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI0NzAsMTEgKzI0NzAsMTEg
QEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24oKQog
ICAgICAgICAvLyB0aG91Z2guIFdlIG5lZWQgdG8gdGFrZSB0aGUgYmFzZSBvZiB0aGUgY3VycmVu
dCB1cmwgYW5kCiAgICAgICAgIC8vIGFwcGVuZCB0aGUgdmFsdWUgb2YgbmV3LWxvY2F0aW9uIHRv
IGl0LgogICAgICAgICBVUkwgYmFzZVVybCA9IGdzdF91cmlfaXNfdmFsaWQobmV3TG9jYXRpb24p
ID8gVVJMKCkgOiBtX3VybDsKLSAgICAgICAgVVJMIG5ld1VybCA9IFVSTChiYXNlVXJsLCBuZXdM
b2NhdGlvbik7CisgICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgU3RyaW5nIHsgbmV3
TG9jYXRpb24gfSk7CiAKICAgICAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gcGxheWJpblVybFN0
cjsKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGlwZWxpbmUuZ2V0KCksICJjdXJyZW50LXVyaSIs
ICZwbGF5YmluVXJsU3RyLm91dFB0cigpLCBudWxscHRyKTsKLSAgICAgICAgVVJMIHBsYXliaW5V
cmwgeyBwbGF5YmluVXJsU3RyLmdldCgpIH07CisgICAgICAgIFVSTCBwbGF5YmluVXJsIHsgU3Ry
aW5nIHsgcGxheWJpblVybFN0ci5nZXQoKSB9IH07CiAKICAgICAgICAgaWYgKHBsYXliaW5Vcmwg
PT0gbmV3VXJsKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQ
bGF5YmluIGFscmVhZHkgaGFuZGxlZCByZWRpcmVjdGlvbi4iKTsKQEAgLTI3MDEsNyArMjcwMSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKGNv
bnN0IFVSTCYgdXJsKQogCiAgICAgYXV0byBlbGVtZW50SWQgPSBtX3BsYXllci0+ZWxlbWVudElk
KCk7CiAgICAgaWYgKGVsZW1lbnRJZC5pc0VtcHR5KCkpCi0gICAgICAgIGVsZW1lbnRJZCA9ICJt
ZWRpYS1wbGF5ZXIiOworICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVyIl9zOwogCiAg
ICAgY29uc3QgY2hhciogdHlwZSA9IGlzTWVkaWFTb3VyY2UoKSA/ICJNU0UtIiA6IHVybC5wcm90
b2NvbElzKCJtZWRpYXN0cmVhbSIpID8gIm1lZGlhc3RyZWFtLSIgOiAiIjsKIApAQCAtMzkxOCw3
ICszOTE4LDcgQEAgSW5pdERhdGEgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYXJzZUlu
aXREYXRhRnJvbVByb3RlY3Rpb25NZXNzYWdlKEdzdE1lc3MKICAgICAgICAgICAgIEdzdEJ1ZmZl
ciogZGF0YSA9IG51bGxwdHI7CiAgICAgICAgICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVjdGlv
bihldmVudC5nZXQoKSwgJmV2ZW50S2V5U3lzdGVtSWQsICZkYXRhLCBudWxscHRyKTsKIAotICAg
ICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHtldmVudEtleVN5c3RlbUlkLCBkYXRhfSk7CisgICAg
ICAgICAgICBpbml0RGF0YS5hcHBlbmQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbUlkIH0sIGRh
dGEgfSk7CiAgICAgICAgICAgICBtX2hhbmRsZWRQcm90ZWN0aW9uRXZlbnRzLmFkZChHU1RfRVZF
TlRfU0VRTlVNKGV2ZW50LmdldCgpKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MDM5LDcgKzQw
MzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlUHJvdGVjdGlv
bkV2ZW50KEdzdEV2ZW50KiBldmVudCkKICAgICBjb25zdCBjaGFyKiBldmVudEtleVN5c3RlbVVV
SUQgPSBudWxscHRyOwogICAgIEdzdEJ1ZmZlciogaW5pdERhdGEgPSBudWxscHRyOwogICAgIGdz
dF9ldmVudF9wYXJzZV9wcm90ZWN0aW9uKGV2ZW50LCAmZXZlbnRLZXlTeXN0ZW1VVUlELCAmaW5p
dERhdGEsIG51bGxwdHIpOwotICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHtldmVu
dEtleVN5c3RlbVVVSUQsIGluaXREYXRhfSk7CisgICAgaW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoeyBTdHJpbmcgeyBldmVudEtleVN5c3RlbVVVSUQgfSwgaW5pdERhdGEgfSk7CiB9CiAK
IGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0aW5nRm9yS2V5KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCBmM2Nh
OGEzMDFjNjczYmMzNGY1NDQ5MjU5MTU0OWZiOWE1OWRlMTQyLi4zMmVkM2FlOGIyOWMwMGZlODgx
NGJkZDA2ZTY0OTY4NTVhN2FkZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCkBAIC00NzEsNyArNDcxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBy
b2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSopOwogICAgIHZvaWQgcHJvY2Vzc1RhYmxl
T2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5Kik7CiAKLSAgICBTdHJpbmcgZW5naW5lRGVzY3Jp
cHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIjsgfQorICAgIFN0cmlu
ZyBlbmdpbmVEZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJHU3RyZWFtZXIi
X3M7IH0KICAgICBib29sIGRpZFBhc3NDT1JTQWNjZXNzQ2hlY2soKSBjb25zdCBvdmVycmlkZTsK
ICAgICBib29sIGNhblNhdmVNZWRpYURhdGEoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCmluZGV4IGRjYTJjMjFmZDYzMGE0
Mjc1MjA0YjU0NTVlN2M0ZDI5NDcyYzVhNmYuLjAzZWRhYzhjOGU5N2JiMWVhYTRiMzNiM2Y0NDU5
YWNkYWRmYjk0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1l
ci5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6
OmdldExhbmd1YWdlQ29kZShHc3RUYWdMaXN0KiB0YWdzLCBBdG9tU3RyaW5nJiB2YQogewogICAg
IFN0cmluZyBsYW5ndWFnZTsKICAgICBpZiAoZ2V0VGFnKHRhZ3MsIEdTVF9UQUdfTEFOR1VBR0Vf
Q09ERSwgbGFuZ3VhZ2UpKSB7Ci0gICAgICAgIGxhbmd1YWdlID0gZ3N0X3RhZ19nZXRfbGFuZ3Vh
Z2VfY29kZV9pc29fNjM5XzEobGFuZ3VhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGxhbmd1
YWdlID0gU3RyaW5nIHsgZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfY29kZV9pc29fNjM5XzEobGFuZ3Vh
Z2UudXRmOCgpLmRhdGEoKSkgfTsKICAgICAgICAgR1NUX0RFQlVHKCJDb252ZXJ0ZWQgdHJhY2sg
JWQncyBsYW5ndWFnZSBjb2RlIHRvICVzLiIsIG1faW5kZXgsIGxhbmd1YWdlLnV0ZjgoKS5kYXRh
KCkpOwogICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdmFsdWUpIHsKICAgICAgICAgICAgIHZhbHVl
ID0gbGFuZ3VhZ2U7CkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0
cmVhbWVyOjpnZXRUYWcoR3N0VGFnTGlzdCogdGFncywgY29uc3QgZ2NoYXIqIHRhZ05hbWUsIFMK
ICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiB0YWdWYWx1ZTsKICAgICBpZiAoZ3N0X3RhZ19saXN0
X2dldF9zdHJpbmcodGFncywgdGFnTmFtZSwgJnRhZ1ZhbHVlLm91dFB0cigpKSkgewogICAgICAg
ICBHU1RfREVCVUcoIlRyYWNrICVkIGdvdCAlcyAlcy4iLCBtX2luZGV4LCB0YWdOYW1lLCB0YWdW
YWx1ZS5nZXQoKSk7Ci0gICAgICAgIHZhbHVlID0gdGFnVmFsdWUuZ2V0KCk7CisgICAgICAgIHZh
bHVlID0gU3RyaW5nVHlwZSB7IHRhZ1ZhbHVlLmdldCgpIH07CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1l
TWV0YWRhdGFHU3RyZWFtZXIuY3BwCmluZGV4IDg5NDc1NDA1YzgwOWExODg0M2MxMjc1MTI1OGU0
NjUyZGI2YTY1ZTAuLmQ3YmU4MDUxOGVkNjllY2VjZDcxNmZhYjIzMjMwZjhjNzYwYjk2YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRl
b0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRhdGFHU3RyZWFtZXIuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9yRWxlbWVu
dChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgIGdzdF9wYWRfYWRkX3Byb2JlKHNpbmtQYWQuZ2V0
KCksIHByb2JlVHlwZSwgW10oR3N0UGFkKiwgR3N0UGFkUHJvYmVJbmZvKiBpbmZvLCBncG9pbnRl
ciB1c2VyRGF0YSkgLT4gR3N0UGFkUHJvYmVSZXR1cm4gewogICAgICAgICBhdXRvIFttb2RpZmll
ZEJ1ZmZlciwgbWV0YV0gPSBlbnN1cmVWaWRlb0ZyYW1lTWV0YWRhdGEoR1NUX1BBRF9QUk9CRV9J
TkZPX0JVRkZFUihpbmZvKSk7CiAgICAgICAgIEdTVF9QQURfUFJPQkVfSU5GT19EQVRBKGluZm8p
ID0gbW9kaWZpZWRCdWZmZXI7Ci0gICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5z
ZXQocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpLCBzdGQ6Om1ha2VfcGFpcihnc3Rf
dXRpbF9nZXRfdGltZXN0YW1wKCksIEdTVF9DTE9DS19USU1FX05PTkUpKTsKKyAgICAgICAgbWV0
YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChTdHJpbmcgeyByZWludGVycHJldF9jYXN0PGNo
YXIqPih1c2VyRGF0YSkgfSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgp
LCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CiAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX09L
OwogICAgIH0sIGdzdF9lbGVtZW50X2dldF9uYW1lKGVsZW1lbnQpLCBnX2ZyZWUpOwogCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCB3ZWJraXRHc3RUcmFjZVByb2Nlc3NpbmdUaW1lRm9yRWxlbWVu
dChHc3RFbGVtZW50KiBlbGVtZW50KQogICAgICAgICBpZiAoIW1ldGEpCiAgICAgICAgICAgICBy
ZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKIAotICAgICAgICBhdXRvKiBlbGVtZW50TmFtZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKTsKKyAgICAgICAgU3RyaW5nIGVsZW1lbnRO
YW1lIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH07CiAgICAgICAgIGF1dG8g
dmFsdWUgPSBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuZ2V0KGVsZW1lbnROYW1lKTsKICAg
ICAgICAgbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLnNldChlbGVtZW50TmFtZSwgc3RkOjpt
YWtlX3BhaXIodmFsdWUuZmlyc3QsIGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSkpOwogICAgICAg
ICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1By
aXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDQzMzY4NWUyMzM5NTMwYWM2M2YzN2RhOGMxOTRlOTQz
MzRlM2YxY2EuLmQ2NDA0YzEyMGNhOGFkZTEwZjc1ZWI3YjliM2FkYzJkNWMzZDM5MGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTU1LDcg
KzE1NSw3IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3Vy
YXRpb25Gcm9tQ2FwcygpCiAKICNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLCAyMCwgMCkKICAgICBH
VW5pcXVlUHRyPGNoYXI+IGNvZGVjKGdzdF9jb2RlY191dGlsc19jYXBzX2dldF9taW1lX2NvZGVj
KGNhcHMuZ2V0KCkpKTsKLSAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gY29kZWMuZ2V0KCk7Cisg
ICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IFN0cmluZyB7IGNvZGVjLmdldCgpIH07CiAjZW5kaWYK
IAogICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJL
aXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDc1NGIzZmY0ODM5MGQ1ZmYzMzZkOTA5YWM1
NWMwNjU4OTdkZDJkODEuLmQwYWQ2NzJkNzEwOTdjZjkxMmExNzMyMjcwNWRmMGVlZDNjMjA4ZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9X
ZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCkBAIC01OTYs
NyArNTk2LDcgQEAgc3RhdGljIGJvb2wgd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoR1F1YXJr
IGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIGdwb2kKIAogICAgIEdTVF9ERUJVRygiQXBw
ZW5kaW5nIGV4dHJhIGhlYWRlcjogXCIlczogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250ZW50
LmdldCgpKTsKICAgICBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZVJlcXVlc3QqPih1c2VyRGF0YSk7Ci0gICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxk
KGZpZWxkTmFtZSwgZmllbGRDb250ZW50LmdldCgpKTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQSGVh
ZGVyRmllbGQoU3RyaW5nIHsgZmllbGROYW1lIH0sIFN0cmluZyB7IGZpZWxkQ29udGVudC5nZXQo
KSB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY0NCw3IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhM
b2NrZXI8V2ViS2l0V2ViCiAgICAgQVNTRVJUKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uICE9
IG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlBv
c3RpbmcgdGFzayB0byByZXF1ZXN0IFIldSAlcyByZXF1ZXN0ZWRQb3NpdGlvbj0lIiBHX0dVSU5U
NjRfRk9STUFUICIgc3RvcFBvc2l0aW9uPSUiIEdfR1VJTlQ2NF9GT1JNQVQsIG1lbWJlcnMtPnJl
cXVlc3ROdW1iZXIsIHByaXYtPm9yaWdpbmFsVVJJLmRhdGEoKSwgbWVtYmVycy0+cmVxdWVzdGVk
UG9zaXRpb24sIG1lbWJlcnMtPnN0b3BQb3NpdGlvbik7Ci0gICAgVVJMIHVybCB7IHByaXYtPm9y
aWdpbmFsVVJJLmRhdGEoKSB9OworICAgIFVSTCB1cmwgeyBTdHJpbmcgeyBwcml2LT5vcmlnaW5h
bFVSSS5kYXRhKCkgfSB9OwogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsKTsKICAg
ICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11
dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKG1lbWJlcnMt
PnJlZmVycmVyKTsKIAogICAgIGlmIChwcml2LT5odHRwTWV0aG9kLmdldCgpKQotICAgICAgICBy
ZXF1ZXN0LnNldEhUVFBNZXRob2QocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSk7CisgICAgICAgIHJl
cXVlc3Quc2V0SFRUUE1ldGhvZChTdHJpbmcgeyBwcml2LT5odHRwTWV0aG9kLmdldCgpIH0pOwog
CiAjaWYgVVNFKFNPVVApCiAgICAgLy8gQnkgZGVmYXVsdCwgSFRUUCBBY2NlcHQtRW5jb2Rpbmcg
aXMgZGlzYWJsZWQgaGVyZSBhcyB3ZSBkb24ndApAQCAtNjcyLDcgKzY3Miw3IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhM
b2NrZXI8V2ViS2l0V2ViCiAgICAgLy8gTGV0IEFwcGxlIHdlYiBzZXJ2ZXJzIGtub3cgd2Ugd2Fu
dCB0byBhY2Nlc3MgdGhlaXIgbmljZSBtb3ZpZSB0cmFpbGVycy4KICAgICBpZiAoIWdfYXNjaWlf
c3RyY2FzZWNtcCgibW92aWVzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkK
ICAgICAgICAgfHwgIWdfYXNjaWlfc3RyY2FzZWNtcCgidHJhaWxlcnMuYXBwbGUuY29tIiwgdXJs
Lmhvc3QoKS51dGY4KCkuZGF0YSgpKSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50
KCJRdWlja3RpbWUvNy42LjYiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQVXNlckFnZW50KCJR
dWlja3RpbWUvNy42LjYiX3MpOwogCiAgICAgaWYgKG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9u
IHx8IG1lbWJlcnMtPnN0b3BQb3NpdGlvbiAhPSBVSU5UNjRfTUFYKSB7CiAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZm9ybWF0ZWRSYW5nZTsKQEAgLTY4MSwxOSArNjgxLDE5IEBAIHN0YXRpYyB2
b2lkIHdlYktpdFdlYlNyY01ha2VSZXF1ZXN0KFdlYktpdFdlYlNyYyogc3JjLCBEYXRhTXV0ZXhM
b2NrZXI8V2ViS2l0V2ViCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZvcm1hdGVkUmFuZ2Uu
cmVzZXQoZ19zdHJkdXBfcHJpbnRmKCJieXRlcz0lIiBHX0dVSU5UNjRfRk9STUFUICItIiwgbWVt
YmVycy0+cmVxdWVzdGVkUG9zaXRpb24pKTsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMs
ICJSYW5nZSByZXF1ZXN0OiAlcyIsIGZvcm1hdGVkUmFuZ2UuZ2V0KCkpOwotICAgICAgICByZXF1
ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6UmFuZ2UsIGZvcm1hdGVkUmFu
Z2UuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVy
TmFtZTo6UmFuZ2UsIFN0cmluZyB7IGZvcm1hdGVkUmFuZ2UuZ2V0KCkgfSk7CiAgICAgfQogICAg
IEFTU0VSVChtZW1iZXJzLT5yZWFkUG9zaXRpb24gPT0gbWVtYmVycy0+cmVxdWVzdGVkUG9zaXRp
b24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQZXJzaXN0ZW50IGNvbm5lY3Rpb24g
c3VwcG9ydCAlcyIsIHByaXYtPmtlZXBBbGl2ZSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOwog
ICAgIGlmICghcHJpdi0+a2VlcEFsaXZlKQotICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJG
aWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIik7CisgICAgICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb25uZWN0aW9uLCAiY2xvc2Ui
X3MpOwogCiAgICAgaWYgKHByaXYtPmV4dHJhSGVhZGVycykKICAgICAgICAgZ3N0X3N0cnVjdHVy
ZV9mb3JlYWNoKHByaXYtPmV4dHJhSGVhZGVycy5nZXQoKSwgd2ViS2l0V2ViU3JjUHJvY2Vzc0V4
dHJhSGVhZGVycywgJnJlcXVlc3QpOwogCiAgICAgLy8gV2UgYWx3YXlzIHJlcXVlc3QgSWNlY2Fz
dC9TaG91dGNhc3QgbWV0YWRhdGEsIGp1c3QgaW4gY2FzZSAuLi4KLSAgICByZXF1ZXN0LnNldEhU
VFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6SWN5TWV0YWRhdGEsICIxIik7CisgICAgcmVx
dWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSJf
cyk7CiAKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW3Byb3RlY3RvciA9IFdURjo6ZW5zdXJlR1JlZihzcmMpLCByZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgcmVxdWVzdE51bWJlciA9IG1lbWJlcnMtPnJlcXVlc3ROdW1iZXJdIHsK
QEAgLTg4MSw3ICs4ODEsNyBAQCBjb25zdCBnY2hhciogY29uc3QqIHdlYktpdFdlYlNyY0dldFBy
b3RvY29scyhHVHlwZSkKIAogc3RhdGljIFVSTCBjb252ZXJ0UGxheWJpblVSSShjb25zdCBjaGFy
KiB1cmlTdHJpbmcpCiB7Ci0gICAgcmV0dXJuIFVSTCB7IHVyaVN0cmluZyB9OworICAgIHJldHVy
biBVUkwgeyBTdHJpbmcgeyB1cmlTdHJpbmcgfSB9OwogfQogCiBzdGF0aWMgZ2NoYXIqIHdlYktp
dFdlYlNyY0dldFVyaShHc3RVUklIYW5kbGVyKiBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVu
ZFBpcGVsaW5lLmNwcAppbmRleCBmZTQ3OWQ2YmI1Mjc0ZjFlNjk2M2EzNTJiYjY2ZTk1YTZmZDll
ODk3Li4xYWYwZTU1NGQ4MmJhZTU4MTkzY2FjNjk3NWFhNWE3MzFlMGEzODVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBp
cGVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHN0ZDo6dHVwbGU8
R1JlZlB0cjxHc3RDYXBzPiwgQXBwZW5kUGlwZWxpbmU6OlN0cmVhbVR5cGUsIEZsb2F0U2l6ZT4g
QXBwZW5kUGlwZWxpCiAKICAgICBjb25zdCBjaGFyKiBvcmlnaW5hbE1lZGlhVHlwZSA9IGNhcHNN
ZWRpYVR5cGUoZGVtdXhlclNyY1BhZENhcHMpOwogICAgIGF1dG8mIGdzdFJlZ2lzdHJ5U2Nhbm5l
ciA9IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lck1TRTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKCFn
c3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5u
ZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBvcmlnaW5hbE1lZGlhVHlwZSkpIHsKKyAgICBp
ZiAoIWdzdFJlZ2lzdHJ5U2Nhbm5lci5pc0NvZGVjU3VwcG9ydGVkKEdTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lcjo6Q29uZmlndXJhdGlvbjo6RGVjb2RpbmcsIFN0cmluZyB7IG9yaWdpbmFsTWVkaWFU
eXBlIH0pKSB7CiAgICAgICAgIHN0cmVhbVR5cGUgPSBTdHJlYW1UeXBlOjpJbnZhbGlkOwogICAg
IH0gZWxzZSBpZiAoZG9DYXBzSGF2ZVR5cGUoZGVtdXhlclNyY1BhZENhcHMsIEdTVF9WSURFT19D
QVBTX1RZUEVfUFJFRklYKSkgewogICAgICAgICBwcmVzZW50YXRpb25TaXplID0gZ2V0VmlkZW9S
ZXNvbHV0aW9uRnJvbUNhcHMoZGVtdXhlclNyY1BhZENhcHMpLnZhbHVlX29yKEZsb2F0U2l6ZSgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcAppbmRleCA4MzFjMmIyYzZlZmIyMjQ3NTliNDNiZmU2N2ZiNzNiMTRmZTBhNjM2
Li4yY2VjNjg0NjZmZmMzZDkxOTc2YzI5MDRiZDc1MGJiYTZiODY5ZTc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCkBA
IC0xMjUsNyArMTI1LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6Omxv
YWQoY29uc3QgU3RyaW5nJikKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0U6
OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50KiBtZWRpYVNvdXJjZSkKIHsKLSAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3Ry
aW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyIgOiB1
cmwuc3RyaW5nKCkpOworICAgIGF1dG8gbXNlQmxvYlVSSSA9IG1ha2VTdHJpbmcoIm1lZGlhc291
cmNlIiwgdXJsLnN0cmluZygpLmlzRW1wdHkoKSA/ICJibG9iOi8vIl9zIDogdXJsLnN0cmluZygp
KTsKICAgICBHU1RfREVCVUcoIkxvYWRpbmcgJXMiLCBtc2VCbG9iVVJJLmFzY2lpKCkuZGF0YSgp
KTsKICAgICBtX21lZGlhU291cmNlID0gbWVkaWFTb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTC5jcHAKaW5kZXggNzNlMjQ4NDVjYjMzZTUwZDU0NTdhNjIwNjE4NDQ0MjY5NTE3ZDY4ZS4u
OTE5NjNkMzI5MDkzZTM2ZTA0YTJkOWZhYjFjM2ZkYWMzNDZmMGFmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTC5jcHAKQEAgLTEwNiwxOSArMTA2LDE5IEBAIGJvb2wgRXh0ZW5zaW9uc0dMT3Bl
bkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAv
LyBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBhcmUgImZha2UiLiBUaGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBvdGhlcgogICAg
IC8vIGV4dGVuc2lvbnMuIEluIHBhcnRpY3VsYXIgR0xfRVhUX2ZyYW1lYnVmZmVyX2JsaXQgYW5k
IEdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZS9HTF9BUFBMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZS4KICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCIpCi0g
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFt
ZWJ1ZmZlcl9ibGl0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0Il9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xf
QU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKTsK
KyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIl9zKTsKICAgICBpZiAobmFtZSA9PSAiR0xfQU5HTEVfaW5z
dGFuY2VkX2FycmF5cyIpIHsKLSAgICAgICAgcmV0dXJuIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl9pbnN0YW5jZWRfYXJyYXlzIikgfHwgbV9hdmFpbGFibGVFeHRlbnNp
b25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICAgICAgJiYg
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIikg
fHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQi
KSk7CisgICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfaW5zdGFuY2VkX2FycmF5cyJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykpCisgICAgICAgICAgICAmJiAobV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19pbnN0YW5jZWQiX3MpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIl9zKSk7CiAg
ICAgfQogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9zUkdCIikKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfc1JHQiIpICYmICht
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIikg
fHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JH
QiIpKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX3RleHR1cmVfc1JHQiJfcykgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250
YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiX3MpKTsKIAogICAgIGlmIChuYW1lID09ICJH
TF9FWFRfZnJhZ19kZXB0aCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFnX2RlcHRoIl9zKTsKIAogICAgIC8vIERl
c2t0b3AgR0wgYWx3YXlzIHN1cHBvcnRzIEdMX09FU19yZ2I4X3JnYmE4LgogICAgIGlmIChuYW1l
ID09ICJHTF9PRVNfcmdiOF9yZ2JhOCIpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBib29sIEV4dGVu
c2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgLy8gSWYgR0xfQVJCX3RleHR1cmVfZmxvYXQgb3IgR0xfT0VTX3RleHR1cmVfZmxv
YXQgaXMgYXZhaWxhYmxlIHRoZW4gd2UgcmVwb3J0CiAgICAgLy8gR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCwgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIGFuZCBHTF9PRVNfdGV4dHVyZV9o
YWxmX2Zsb2F0X2xpbmVhciBhcyBhdmFpbGFibGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX09FU190
ZXh0dXJlX2Zsb2F0IiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0IiB8fCBu
YW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIiIHx8IG5hbWUgPT0gIkdMX09FU190
ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0
ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3RleHR1cmVfZmxvYXQiKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0Iik7CisgICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0Il9z
KSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX09FU190ZXh0dXJlX2Zsb2F0
Il9zKTsKIAogICAgIC8vIEdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgaWYgKG5hbWUg
PT0gIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0IikgewogI2lmIChQTEFURk9STShHVEspKQot
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdmVy
dGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9BUkJfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAjZWxzZQotICAgICAg
ICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhf
YXJyYXlfb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2VuZGlmCiAgICAgfQog
CkBAIC0xNDcsMTQgKzE0NywxNCBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1T
dXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIikKLSAg
ICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRl
cl90ZXh0dXJlX2xvZCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIl9zKTsKICAgICAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIikKLSAgICAgICAgcmV0dXJu
IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2Fu
aXNvdHJvcGljIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJfcyk7CiAKICAgICBpZiAobmFt
ZSA9PSAiR0xfRVhUX2RyYXdfYnVmZmVycyIpIHsKICNpZiBQTEFURk9STShHVEspCi0gICAgICAg
IHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZl
cnMiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
QVJCX2RyYXdfYnVmZmVycyJfcyk7CiAjZWxzZQogICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50
IHN1cHBvcnQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MjMxLDcgKzIzMSw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0w6OmdldEV4dGVuc2lvbnMo
KQogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV0lOKQogYm9vbCBFeHRlbnNpb25zR0xP
cGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RTdXBwb3J0ZWQoKQogewotICAgIHN0YXRpYyBjb25z
dCBib29sIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3QgPSBzdXBwb3J0cygiR0xfT0VTX3ZlcnRl
eF9hcnJheV9vYmplY3QiKTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFy
cmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICAg
ICByZXR1cm4gc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAppbmRleCA0ODk2OTljNGVlM2NmNDA5YTQzNzU3
YWZlZjdhNDY1ZTM0Y2RmYWJkLi4zMDQwY2ViZGE5YTFmMGU2Y2Q1Y2NiZGYwOTA2MWEyMTRhNTM0
MjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uLmNwcApAQCAtMTc0LDEy
ICsxNzQsMTIgQEAgU3RyaW5nIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbjo6Z2V0VHJhbnNsYXRl
ZFNoYWRlclNvdXJjZUFOR0xFKFBsYXRmb3JtR0xPYmplY3QKICAgICBlbHNlIGlmIChHTHNoYWRl
clR5cGUgPT0gR3JhcGhpY3NDb250ZXh0R0w6OkZSQUdNRU5UX1NIQURFUikKICAgICAgICAgc2hh
ZGVyVHlwZSA9IFNIQURFUl9UWVBFX0ZSQUdNRU5UOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJu
ICIiOyAvLyBJbnZhbGlkIHNoYWRlciB0eXBlLgorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmco
KTsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KIAogICAgIEhhc2hNYXA8UGxhdGZvcm1HTE9iamVj
dCwgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5Pjo6aXRlcmF0b3Ig
cmVzdWx0ID0gbV9jb250ZXh0LT5tX3NoYWRlclNvdXJjZU1hcC5maW5kKHNoYWRlcik7CiAKICAg
ICBpZiAocmVzdWx0ID09IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZW5kKCkpCi0gICAg
ICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6U2hhZGVyU291cmNlRW50cnkmIGVudHJ5ID0gcmVzdWx0LT52
YWx1ZTsKIApAQCAtMjAzLDcgKzIwMyw3IEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21t
b246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAg
fQogCiAgICAgaWYgKCFpc1ZhbGlkKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogCiAgICAgcmV0dXJuIHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2U7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAwMTUwOTUwZTFkYjY0
NzJjY2NhYjFhYTljOTU2OGUyYTczLi5iOTExMTAyNTk4MzU4OTBkNjUxM2ZhMDMzYzMyZjk1MWU3
ZWZkYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQs
NyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJP
QyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAg
ICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVz
cygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9y
dHNBTkdMRWluc3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JW
ZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
aW5zdGFuY2VkX2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9u
KCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFu
Y2VkX2FycmF5cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
ZHJhd19pbnN0YW5jZWQiX3MpKSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAg
ICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3Rh
bmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZj
NTk4YjM5MGVhNTQ1MzRhYWUwOThjNDhjOWM5MjQ2OTQuLjBhNmE4OGNmMWFkNGM4NGQxMDAxNDRk
MzU5NzU5Yjk1YWU3YjIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cApAQCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJl
YWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgYXV0byBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewot
ICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KSkgewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
U3RyaW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlmIChzdXBw
b3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7CisgICAg
ICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
blN0cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUu
CiAgICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTJkMmU1YTAyM2ZkNDg5
M2NjZjY2ZDc2ZWI1NjU5Li5hZjc1ZTBkMDk5OTYxNmJmNjMxYjU2ZjVlNTM3NzliZGFmMmQ3MTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBA
IHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywg
YW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVk
IGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVu
dGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFT
Q0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRh
dGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29s
IHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Y2QwOWI5YjI4YmUwYmY0NDc3ODg3
NDMwNTczOC4uN2I1NGEwMWYzZTk2M2MxODc5MTczNGVjNGEzYzRlYThjOGYzOGE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9F
WFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRT
aXplJiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9u
cyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAg
ICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdM
X0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cAppbmRleCA4M2I5Yjg2YzUzMjcyZmM1NDE1N2M5MGY0NjY1YWY4MTE5OGRhNGY4Li4zYWU2MmJm
NmVlYjEzNzZmNzMxNGZhMzBjNmM0YWRlOTg4YTM4MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIC8v
IFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBk
ZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0g
KGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFj
a2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVz
LmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3Jl
RkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQog
ewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAg
ICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdf
bXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5h
bnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRl
cl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNl
OwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApp
bmRleCAzMzAxMDhjNjZkYWE3ZjIwYzZjMzIzYmQ1NDBjOTM3YTBjMjhiN2Y2Li5iMWY0YzY0N2E3
NjMyZmMwOTlkNmE0NjYxNmQwMGRiZTU0ZjdkNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTM1MCw3ICszNTAsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICAvLyBX
ZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRvIHRoZSBkbWFidWYtYmFja2Vk
IEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNf
RUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9P
RVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVuc2lvbkFOR0xFKCJHTF9PRVNf
RUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5ZDBjZjYwZTczMTg2ZWVmZGU1
NDE5YjYyZmY2ZmZmZjdmZTYuLmJjYjY3NTFlZGIzZTZkMzVlMThlMTQ5ZmEwODJhOTk4MmVlNzVk
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4
LDcgKzUxOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVy
Q2hhbmdlcygpCiAgICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwog
CiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVu
dCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1l
KTsKKyAgICAgICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0
cmluZygpLCBtX2FuaW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0No
YW5nZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNh
YzQ4YzZjMDVlY2I0NTIxNTdmYjIzMWViNjRiNjk4Y2E2ZjI3Li5jN2ExYzI3MjVkM2QyZTJlZjli
ZTk3M2Q5Y2ZjOGNmYWI5OGI4OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRl
ci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1cmVN
YXBwZXJGUFNDb3VudGVyKCkKICAgICAsIG1fbGFzdEZQUygwKQogICAgICwgbV9mcmFtZUNvdW50
KDApCiB7Ci0gICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NI
T1dfRlBTIik7CisgICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCB7IGdldGVudigiV0VCS0lU
X1NIT1dfRlBTIikgfTsKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgbV9mcHNJbnRlcnZhbCA9
IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25tZW50LnRvRG91YmxlKCZvaykpOwogICAgIGlmIChvayAm
JiBtX2Zwc0ludGVydmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDBkYjk4MDIxODA1NWJmNWExNDVjMzE3ODcz
YmE4Yjk1NmI5M2E3YTkuLjc2NjlhMTFkYmEyN2E1N2FkZTg1MmRhMWY4YjhmMjc4YjIzODk5NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBj
bGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFz
dEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkw
LDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0
aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYg
KG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlQ29udGVudExheWVycykK
LSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9i
YWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4
dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlv
bnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggMWY1Y2EzYjJhYzM5ZmUyNTI0ZGU1ZTA3
YTI1ZGE2YjUzYThjZjllZC4uYzhhYjI2NDdmN2Y5YTBiZTMyYzE4MmU0MmE2NTFhNzdhODkxNWJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApA
QCAtNDQsMTIgKzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJP
QVJEIl9zKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+
JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3Zl
KGNvbnRleHQpLCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KFdURk1vdmUoY29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMDcxNTM2MjI1MTY3Njc1YTVk
ZWY1M2Y3MjFhZjguLmMwMTdmMjFmYmQ4NGYyYjg0MmUwMWYyNDhjYzQ0MDcyM2NiMWFhYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRHdGsuY3BwCkBAIC03NzksMTAxICs3NzksMTAxIEBAIFN0cmluZyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUp
CiAgICAgY2FzZSBHREtfS0VZX01lbnU6CiAgICAgY2FzZSBHREtfS0VZX0FsdF9MOgogICAgIGNh
c2UgR0RLX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAgICByZXR1cm4g
IkFsdCJfczsKICAgICBjYXNlIEdES19LRVlfQ2xlYXI6Ci0gICAgICAgIHJldHVybiAiQ2xlYXIi
OworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2UgR0RLX0tFWV9Eb3duOgotICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8v
ICJFbmQiCiAgICAgY2FzZSBHREtfS0VZX0VuZDoKLSAgICAgICAgcmV0dXJuICJFbmQiOworICAg
ICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgIGNhc2UgR0RLX0tF
WV9JU09fRW50ZXI6CiAgICAgY2FzZSBHREtfS0VZX0tQX0VudGVyOgogICAgIGNhc2UgR0RLX0tF
WV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICByZXR1cm4gIkVudGVy
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9FeGVjdXRlOgotICAgICAgICByZXR1cm4gIkV4ZWN1dGUi
OworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxOgotICAg
ICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJfczsKICAgICBjYXNlIEdES19L
RVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICByZXR1cm4gIkYyIl9zOwogICAg
IGNhc2UgR0RLX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIHJldHVybiAi
RjMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y0OgotICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAg
ICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIEdES19LRVlfRjU6Ci0gICAgICAgIHJldHVybiAi
RjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNjoKLSAgICAg
ICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgY2FzZSBHREtfS0VZ
X0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0dXJuICJGNyJfczsKICAgICBj
YXNlIEdES19LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOworICAgICAgICByZXR1cm4gIkY4
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GOToKLSAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAg
IHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMDoKLSAgICAgICAgcmV0dXJuICJG
MTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNlIEdES19LRVlfRjExOgotICAg
ICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgIGNhc2UgR0RL
X0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgcmV0dXJuICJGMTIiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICBy
ZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIEdES19LRVlfRjE0OgotICAgICAgICByZXR1cm4gIkYx
NCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTU6Ci0gICAg
ICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAgY2FzZSBHREtf
S0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICByZXR1cm4gIkYxNiJfczsK
ICAgICBjYXNlIEdES19LRVlfRjE3OgotICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIHJl
dHVybiAiRjE3Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTg6Ci0gICAgICAgIHJldHVybiAiRjE4
IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxOToKLSAgICAg
ICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJfczsKICAgICBjYXNlIEdES19L
RVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIHJldHVybiAiRjIwIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgcmV0
dXJuICJGMjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMjoKLSAgICAgICAgcmV0dXJuICJGMjIi
OworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIEdES19LRVlfRjIzOgotICAgICAg
ICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgIGNhc2UgR0RLX0tF
WV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgIHJl
dHVybiAiSGVscCJfczsKICAgICBjYXNlIEdES19LRVlfSG9tZToKLSAgICAgICAgcmV0dXJuICJI
b21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNhc2UgR0RLX0tFWV9JbnNlcnQ6
Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgIHJl
dHVybiAiTGVmdCJfczsKICAgICBjYXNlIEdES19LRVlfUGFnZV9Eb3duOgotICAgICAgICByZXR1
cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICBjYXNlIEdE
S19LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAiOworICAgICAgICByZXR1cm4g
IlBhZ2VVcCJfczsKICAgICBjYXNlIEdES19LRVlfUGF1c2U6Ci0gICAgICAgIHJldHVybiAiUGF1
c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNhc2UgR0RLX0tFWV8zMjcwX1By
aW50U2NyZWVuOgogICAgIGNhc2UgR0RLX0tFWV9QcmludDoKLSAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAgICAgY2FzZSBHREtf
S0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJSaWdo
dCJfczsKICAgICBjYXNlIEdES19LRVlfU2VsZWN0OgotICAgICAgICByZXR1cm4gIlNlbGVjdCI7
CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9VcDoKLSAgICAg
ICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5k
YXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgY2FzZSBHREtfS0VZX0RlbGV0
ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsK
ICAgICBjYXNlIEdES19LRVlfQmFja1NwYWNlOgotICAgICAgICByZXR1cm4gIlUrMDAwOCI7Cisg
ICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9JU09fTGVmdF9UYWI6
CiAgICAgY2FzZSBHREtfS0VZXzMyNzBfQmFja1RhYjoKICAgICBjYXNlIEdES19LRVlfVGFiOgot
ICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVybiAiVSswMDA5Il9zOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleChnZGtfa2V5dmFs
X3RvX3VuaWNvZGUoZ2RrX2tleXZhbF90b191cHBlcihrZXlDb2RlKSksIDQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OGNjMGU3MmFmODc2NTVlYmFlNmNhNWQ0Yjk3OGMuLmU5NTc4MjkyYjFlMDBlZjc2NjY3
MTZmOWNhYmYxNDI3MTg4Zjg4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJh
Z0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6
bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0
ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3
NjczYWM5MTUxZDVmZjM1MmM3ZTVlNGFlZTIzMi4uOGQ1YzQzZGU4Mzk1NTk4YzIzOTlhMzhhODNk
ZWEzOGMxNGQyOTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bo
b25lKCkKICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNs
YXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdp
bmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBv
c05hbWVGb3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgp
ICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4g
ImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUg
T1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MDdkM2ZmZDM1MDdiZTc2MjJi
MmM0ODE2Yzk4NmYuLmJlNDZlMWUwZWM3NGEyNjk1ZDExMWQwOWEyMDhhY2FhZTE1ZGViZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAg
ICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJD
b250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdl
ZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAg
ICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6
VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9h
cmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0NzE0NDRlZWQzY2YwNmYzNDVhMzg5M2M5ZTZl
NzMuLmFlNDM5ZTMwZjFmYjIzOWQxOGUxMTY0ZTg4OTZkZmIyNzJjNzU2NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAg
LTk3LDcgKzk3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmKQogCiB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0
VVJMUmVhZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewotICAgIHRleHQudGV4
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCksIGNv
bnRleHQoKSk7CisgICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hh
cnNldD11dGYtOCJfcywgbmFtZSgpLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikK
IAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCiB7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFz
dGVib2FyZCgidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdXJsLnVybC5zdHJpbmcoKSk7Cisg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFz
dGVib2FyZCgidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Il9zLCB1cmwudXJsLnN0cmluZygpKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUo
Y29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxh
aW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQogewotICAgIHdy
aXRlU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB0ZXh0KTsKKyAgICB3cml0ZVN0
cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Il9zLCB0ZXh0KTsKIH0KIAogdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9Q
bGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCmluZGV4IGEzNGRjMjIwYmJiOWE5MmI0MGRm
YjQ2M2U4NzI0ZTgxYWM3NDViMmMuLjg0MzIzMWQzYjU4YTAyZmQ5ZDkzZDNhMzdiODY5OTdiZTU2
ZDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
YndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAx
IEBAIFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlD
b2RlKHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBX
UEVfS0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJB
bHQiOworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0g
ICAgICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4g
IkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAg
ICAgcmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVu
dGVyIgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0Vu
dGVyOgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOwor
ICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAg
ICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJG
MSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAg
ICByZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJG
MyI7CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAg
ICByZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjU6Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAg
cmV0dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgi
OworICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAg
cmV0dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Yx
MDoKLSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBj
YXNlIFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAi
RjExIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAg
ICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0
dXJuICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0
OgotICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJG
MTUiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAg
ICAgICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1
cm4gIkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6
Ci0gICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYx
OSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAg
ICAgIHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVy
biAiRjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoK
LSAgICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIz
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgcmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVy
biAiSGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9t
ZToKLSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAg
cmV0dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVy
biAiTGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFn
ZV9Eb3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdl
RG93biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdl
VXAiOworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6
Ci0gICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAg
IGNhc2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoK
LSAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3Jl
ZW4iX3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsK
KyAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAg
ICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAi
X3M7CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAg
ICAgY2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAg
ICByZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAg
ICByZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAg
ICBjYXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJl
dHVybiAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJm
NzJmYzhlYjVjY2MzZDgwNTNlNjAwY2U3MDI5N2JhYi4uNGZhODJiYmRlMTYyNGZmZmMyNzYzODFi
NTg3ZmQ2MjUwZmE0ODJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVy
UHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAg
IGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tz
KG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsKICAgICBp
ZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJh
Y2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9IHNlbGVj
dGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJfczsKIAog
ICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBlICVzIiwg
bWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0Nv
bnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQ
cm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAgICAgICAg
IGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNv
ZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyJf
czsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1
cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAg
IGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAg
ZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZTE0M2NkNGY0YTVlNDBm
NmQ1Yjk2NWRjM2NhNTQ0MzcwM2MwMTg1MS4uYjQyMzc5ZjMzYjM1YmYyZTVkNzJiMTI3YzJlMDNi
NjQwYWNmY2I2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFk
ZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiB7CiAgICAg
YXV0byBtaW1lSGVhZGVyID0gYWRvcHRSZWYoKm5ldyBNSU1FSGVhZGVyKTsKICAgICBLZXlWYWx1
ZU1hcCBrZXlWYWx1ZVBhaXJzID0gcmV0cmlldmVLZXlWYWx1ZVBhaXJzKGJ1ZmZlcik7Ci0gICAg
S2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBh
aXJzLmZpbmQoImNvbnRlbnQtdHlwZSIpOworICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBtaW1l
UGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUiX3Mp
OwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkp
IHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlLCBjaGFyc2V0LCBtdWx0aXBhcnRUeXBlLCBl
bmRPZlBhcnRCb3VuZGFyeTsKICAgICAgICAgaWYgKGF1dG8gcGFyc2VkQ29udGVudFR5cGUgPSBQ
YXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKSkg
ewogICAgICAgICAgICAgY29udGVudFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS0+bWltZVR5cGUo
KTsKICAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJzZWRDb250ZW50VHlwZS0+Y2hhcnNldCgpLnN0
cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRl
bnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsKLSAgICAgICAgICAgIGVuZE9m
UGFydEJvdW5kYXJ5ID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgi
Ym91bmRhcnkiKTsKKyAgICAgICAgICAgIG11bHRpcGFydFR5cGUgPSBwYXJzZWRDb250ZW50VHlw
ZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIl9zKTsKKyAgICAgICAgICAgIGVuZE9mUGFy
dEJvdW5kYXJ5ID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiYm91
bmRhcnkiX3MpOwogICAgICAgICB9CiAgICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFR5cGUg
PSBjb250ZW50VHlwZTsKICAgICAgICAgaWYgKCFtaW1lSGVhZGVyLT5pc011bHRpcGFydCgpKQpA
QCAtMTA5LDExICsxMDksMTEgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNl
SGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250
ZW50LXRyYW5zZmVyLWVuY29kaW5nIik7CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtl
eVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10cmFuc2Zlci1lbmNvZGluZyJfcyk7CiAgICAgaWYg
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKICAgICAgICAg
bWltZUhlYWRlci0+bV9jb250ZW50VHJhbnNmZXJFbmNvZGluZyA9IHBhcnNlQ29udGVudFRyYW5z
ZmVyRW5jb2RpbmcobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpOwogCi0gICAgbWltZVBh
cmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC1sb2NhdGlvbiIp
OworICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtbG9jYXRpb24iX3MpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZh
bHVlUGFpcnMuZW5kKCkpCiAgICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudExvY2F0aW9uID0g
bWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1MTY5MDQ1
YzcwNWYwODk4ZTgzMTc0ZTMxNjZlM2E2MGVkYTk0YjgzLi4yZGMyNzE2NjNhMzExZmQ0YjFlNjgy
ZjkwOGNlNjM2NGQ2ZmVhNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllMjAwZTkzNWMyMTYzODk0MzY5ZTRmNDUxYmQwNS4uNmNmMDQ5MTgxNWVhZWU5MDBjM2Q0
Y2U5OGFiZDZjOTEwMmE4MTNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUs
OSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewot
ICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmls
ZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAgICAg
ICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQ
YXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxl
UHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKaW5kZXggZTBlZWY2ODgwZjJiNjdlMDllMjMzZGVjNzQ1YmQwODM0ODc5YWFjZC4uMDcxYmIx
YTQ3YmUwNzgwNDYwNDIwNWZlMjIwZDhhNzNkM2RlNjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBDZXJ0aWZpY2F0ZUluZm8gQ2VydGlmaWNhdGVJbmZvOjpp
c29sYXRlZENvcHkoKSBjb25zdAogCiBTdHJpbmcgQ2VydGlmaWNhdGVJbmZvOjp2ZXJpZmljYXRp
b25FcnJvckRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gWDUwOV92ZXJpZnlfY2Vy
dF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcik7CisgICAgcmV0dXJuIFN0cmluZyB7
IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpIH07CiB9
CiAKIENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGUgQ2VydGlmaWNhdGVJbmZvOjptYWtlQ2Vy
dGlmaWNhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4
IDYxMzY1MzFiNWIxYzRjN2ZhYmI0NDkxMDMwMzU2ZTVmNDZmNzFjNWMuLjZiMTZmYzM0ZGU3YTE5
YTBkZGRlMGU0NTBkOTA4NTRlMzk4NDA4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBA
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVl
c3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7
CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNWYyZWZjNGQwMTlhMDlmNDQ4YzQwNDliYjZkMDMu
LjA0ZTY0Y2QyYzdhOTBkOWNlM2RjMjlmOGIyZDE2NzgyNDBmYTAzNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTE4
NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVybCkK
IAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChwYXRo
LmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiAiLyI7
CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNoUG9zaXRpb24gPSBw
YXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKLSAgICAg
ICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgcmV0dXJuIHBhdGgu
c3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDdi
NDY4NTVhMDUxNTc0N2Y0ZGRmYmRlNWM5MDlhYWI5ODcwNjAzZjguLmE3YTE1MjdjODZhYTNjNWYw
ZDJlNWJhMGQxZGIwMzA0NTJhZjVmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNjEsMTAgKzYxLDEw
IEBAIEN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVz
b3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyCiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJs
LmxhdGluMSgpKTsKIAogICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwot
ICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIik7CisgICAgbV9oZWFkZXJGaWxl
bmFtZS5hcHBlbmQoIi5oZWFkZXIiX3MpOwogCiAgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5k
KG1fYmFzZW5hbWUpOwotICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiKTsK
KyAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50Il9zKTsKIH0KIAogQ3VybENh
Y2hlRW50cnk6On5DdXJsQ2FjaGVFbnRyeSgpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDdXJs
Q2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXNwb25z
ZS5odHRwSGVhZGVyRmllbGRzKCkuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAg
ICAgICBTdHJpbmcgaGVhZGVyRmllbGQgPSBpdC0+a2V5OwotICAgICAgICBoZWFkZXJGaWVsZC5h
cHBlbmQoIjogIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiX3MpOwogICAgICAg
ICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBw
ZW5kKCJcbiIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIl9zKTsKICAgICAgICAg
Q1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5k
YXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2Vy
LmNwcAppbmRleCAzYmQyY2M3NDI4NmVjNDY3ODY0MDI0OGM1ZTFjZmVjYzVhMDI2N2JkLi43MDJj
NWIzMWEwMWVlMjQ2YzdjNzVkN2I1NTU4NGFlYWQ2ZmIwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Nh
Y2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAg
IG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBA
QCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIp
OwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4
RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3
MjhjYjg4YmZiMDU1MDI5YWFmNmY1OTM0NzE1MzljZTc0NzkyNGNkLi4zZTVkNmYxYzkwZjYxOGVm
ZDFlNWNhZDEwZDRhMDZhZWU1OTk2M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQyOSwyNiArNDI5LDIzIEBA
IHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVyKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTdHJpbmcgaGVhZGVy
KG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhhdCB0aGlzIGhlYWRlciBo
YXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQoIjsiKTsKKyAgICAgICAg
aGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhl
YWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQodmFsdWUpOworICAgICAg
ICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsKICAgICB9CiAKLSAgICBh
cHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZN
b3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92ZVJlcXVlc3RIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRlciB3aXRoIG5vIGNvbnRl
bnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRpc2FibGVkLiAKLSAgICBT
dHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoiKTsKLQotICAgIGFwcGVu
ZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9IG1ha2VTdHJpbmcobmFt
ZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7CiB9CiAK
IHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwNTVkNjhhMDU1ZmIzNTA3OTY3ZGU0YzAwODZl
ZC4uYjA5MjU2YjE5ODNlODZiMWZmZTU3Y2RhMjhmNzRjNmIzZjVhMzE5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAK
QEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KCkK
ICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0
QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VU
Il9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAg
bmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJi
YWY5NDJkYmM5NjNkM2ZmYjNkY2IxNWZjMWIzYmVkZDBlZWVlYjQuLjdlYjA4NzBkNzk3NGM1YmIx
MGI1YzQ2MTM4OWM1OGZjYWRlMzgxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQ
dXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBo
ZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOwor
ICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAg
IGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAg
aWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpz
ZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0
aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhl
YWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkK
LSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNv
ZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFk
ZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAg
aWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6
ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFj
NmQwNzY2ZGFjZjNlMTliMjM3MzM2ZjViNTVjZTUyNjkuLmIzYWI4ZDFjYjYyZDNkZDA5ZjBmYTA4
ODhhMjE5MDQ2YmRiMWUwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAgICAgIGlm
IChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVy
bC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAgIGlmIChkKCktPm1fYWRkZWRD
YWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVz
VGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNlMDczNTM2YzE0OGVhZmFjYTlk
NzUxZWM4ZmIyNDQyMzIuLjRmODlkOTczZWM5MTFhNWQ5MDlkZGQ3ZTJlYmE5N2E1ZDRmYmNiMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTQzLDEzICs0MywxMyBA
QCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRDb29raWVKYXJQYXRoKCkKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVmYXVsdEZpbGVOYW1lID0gImNvb2tpZS5qYXIuZGIiOwogICAgIGNoYXIqIGNvb2tp
ZUphclBhdGggPSBnZXRlbnYoIkNVUkxfQ09PS0lFX0pBUl9QQVRIIik7CiAgICAgaWYgKGNvb2tp
ZUphclBhdGgpCi0gICAgICAgIHJldHVybiBjb29raWVKYXJQYXRoOworICAgICAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChjb29raWVKYXJQYXRoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkZWZhdWx0RmlsZU5hbWUpOwog
I2Vsc2UKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjQxNwotICAgIHJldHVybiBkZWZhdWx0RmlsZU5hbWU7CisgICAgcmV0dXJuIFN0cmlu
ZyB7IGRlZmF1bHRGaWxlTmFtZSB9OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAppbmRleCAzNjE1
MDlkNzRkYzk1MTJmNTFmNDFiOTJkNjk3YWJjODFkOTViYjVlLi5kMzliNjViNDQwZThmMmJiMTk1
NGU2YzYwYTNlODkyM2IzZjQ2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFy
eUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wq
IHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0
cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1l
KGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9n
ZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJf
Z2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4
Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4MDI0Mjg5YmY0YTY1ZjkwZDJlMzhhYzFkNDc3ZS4u
ZjliMDBlMTg0NTA5YmY3YjhjNWMwYWMzMWRlMTJjMzJiMmU1MmYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1YmxpY1N1ZmZpeEN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJs
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5JbnRlcm5hbChjb25zdCBwc2xfY3R4X3QqIHBzbCwgY29uc3QgYwogewogICAgIC8v
IHBzbF9yZWdpc3RlcmFibGVfZG9tYWluIHJldHVybnMgYSBwb2ludGVyIHRvIGRvbWFpbidzIGRh
dGEgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBwcml2YXRlIGRvbWFpbgogICAgIGlmIChjb25zdCBj
aGFyKiB0b3BQcml2YXRlRG9tYWluID0gcHNsX3JlZ2lzdHJhYmxlX2RvbWFpbihwc2wsIGRvbWFp
bikpCi0gICAgICAgIHJldHVybiB0b3BQcml2YXRlRG9tYWluOworICAgICAgICByZXR1cm4gU3Ry
aW5nIHsgdG9wUHJpdmF0ZURvbWFpbiB9OwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKaW5kZXggZDFkN2I2NmVhYTc4YzEwMzFmYmFiNGI3NDFjZjgzMWMyZmMwYjEzYi4uMTQ1ZmY2
OGQ1ODg4ZmE0YTQ2NGM2N2IwYjRhZjU2NDY1YjFjNGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBj
dXJsRXJyb3JEb21haW47CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJsRXJyb3JEb21haW47
CiAKICAgICB1bnNpZ25lZCBtX3NzbEVycm9ycyB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNw
cAppbmRleCA5ZTNlMTU2MWI1MjkxMDAyZWVkZTg5YWVjN2Q0YmNiZGJkMjUyYzIzLi45OWQwNmEy
N2EwMmUwMTM0MzEyNmYzODQ0MjBiYjdjYjRmNzJkNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBj
b25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsK
K0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9y
RG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmMWU0NTY3NWQwMjE5NTNjZWY1OTk1YzY0NjU5
Ny4uZGVhMGRhYzRiZDAwMmRlODlkYzgyMDNiODA0Yzc2MmE1YmYxNDdiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAo
c2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAg
bmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRI
VFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxw
dHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5kZXggM2QxYmQxMjQ5YjdkNzZlZWVhNDZjYzU4NWU4
ZTNjOGU5ZjBkZThhZS4uNWJmOGQ2ODAxMWMyODMwNDc4YzA3NjMxODNkZDY4OTIzMjc1ZmQ2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVzcG9uc2VDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCkBAIC04OSwxMyArODksMTMgQEAgUmVzb3VyY2VS
ZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQog
CiAgICAgc3dpdGNoIChyZXNwb25zZS5odHRwVmVyc2lvbikgewogICAgIGNhc2UgQ1VSTF9IVFRQ
X1ZFUlNJT05fMV8wOgotICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiKTsKKyAgICAg
ICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4wIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEu
MSIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjEiX3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzJfMDoKLSAgICAgICAgc2V0SFRUUFZlcnNp
b24oIkhUVFAvMiIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIl9zKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl9OT05FOgogICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2MTZkYjQyZjdj
OWVhMWQxODUyMjFjMjAwNDBjMy4uYzIwZWM4ZTcyMTFjZTFlZmU2N2I1NDFiYzgxYjk2NTVjNmU1
N2QxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1
ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCBmYWI1NzQyMzNmZTAwZjRiMGJmMjJlMGJhZWMwOWRiMTE2YTRkM2NlLi5hOGQyMzcwNjQ4ZDI0
Njg4MTJjZTViNmY5NTM5YWFiMDk2MmU4NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGkKICAg
ICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMo
Y29va2llU3RvcmFnZSgpKSk7CiAgICAgZm9yIChhdXRvKiBpdGVtID0gY29va2llcy5nZXQoKTsg
aXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBHVW5pcXVlUHRyPFNv
dXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSkpOwot
ICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNv
dXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSkgPT0gZG9tYWluKSB7CisgICAgICAg
IGlmIChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoU3RyaW5nIHsg
c291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUuZ2V0KCkpIH0pID09IGRvbWFpbikgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IDJjZThhMDNmZGYwMjJkZTNmMmZjZTlk
ZjNhOGFhOTU1NmY4YzAwYjcuLjM0YTU3ZTVjMmMyZWI2OTg5N2E1NzNhZTQwMzJiMjMxYjk5OTNj
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IoY29u
c3QgVVJMJiBmYWlsaW5nVVJMLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25Q
aHJhc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09V
UF9IVFRQX0VSUk9SX0RPTUFJTiksIHN0YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFz
ZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmco
U09VUF9IVFRQX0VSUk9SX0RPTUFJTikgfSwgc3RhdHVzQ29kZSwgZmFpbGluZ1VSTCwgcmVhc29u
UGhyYXNlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoU291
cE1lc3NhZ2UqIG1lc3NhZ2UsIEdFcnJvciogZXJyb3IpCkBAIC02MSwyMiArNjEsMjIgQEAgUmVz
b3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdl
KiBtZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKICNpZiBVU0UoU09VUDIpCi0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RP
TUFJTiksIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pIH0sIG1lc3Nh
Z2UtPnN0YXR1c19jb2RlLAogICAgICAgICBzb3VwVVJJVG9VUkwoc291cF9tZXNzYWdlX2dldF91
cmkobWVzc2FnZSkpLCBTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9T
RVNTSU9OX0VSUk9SKSwgc291cF9tZXNzYWdlX2dldF9zdGF0dXMobWVzc2FnZSksCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9TRVNTSU9O
X0VSUk9SKSB9LCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhtZXNzYWdlKSwKICAgICAgICAgc291
cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSksIFN0cmluZzo6ZnJvbVVURjgoc291cF9tZXNzYWdl
X2dldF9yZWFzb25fcGhyYXNlKG1lc3NhZ2UpKSk7CiAjZW5kaWYKIH0KIAogUmVzb3VyY2VFcnJv
ciBSZXNvdXJjZUVycm9yOjpnZW5lcmljR0Vycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgR0Vy
cm9yKiBlcnJvcikKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVU
RjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgZmFpbGluZ1VS
TCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOwogfQogCiBSZXNvdXJjZUVycm9y
IFJlc291cmNlRXJyb3I6OnRsc0Vycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgdW5zaWduZWQg
dGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQogewotICAgIFJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhHX1RMU19FUlJPUiksIEdfVExT
X0VSUk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlm
aWNhdGUoKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyB7IGdfcXVh
cmtfdG9fc3RyaW5nKEdfVExTX0VSUk9SKSB9LCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUs
IGZhaWxpbmdVUkwsIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOwogICAgIHJlc291cmNl
RXJyb3Iuc2V0VExTRXJyb3JzKHRsc0Vycm9ycyk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0
aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7CiAgICAgcmV0dXJuIHJlc291cmNlRXJyb3I7CkBAIC04OCw5
ICs4OCw5IEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCkKICAgICAvLyBuZXR3b3JraW5nIGVycm9ycyBmcm9tIHRoYXQgZmls
ZSBzaG91bGQgYmUgbW92ZWQgaGVyZS4KIAogICAgIC8vIFVzZSB0aGUgc2FtZSB2YWx1ZSBhcyBp
biBOU1VSTEVycm9yLmgKLSAgICBzdGF0aWMgY29uc3QgaW50IHRpbWVvdXRFcnJvciA9IC0xMDAx
OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCAgZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0
d29ya0Vycm9yIjsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91
dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiLCBSZXNvdXJjZUVycm9yOjpU
eXBlOjpUaW1lb3V0KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCB0aW1lb3V0RXJyb3IgPSAt
MTAwMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0
d29ya0Vycm9yIl9zOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1l
b3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91dCJfcywgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6VGltZW91dCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VFcnJvcjo6ZG9QbGF0Zm9ybUlz
b2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNv
dXAuY3BwCmluZGV4IDliN2I0YjMyZDc1N2IxYmMyYTZjYjI1OTQxMDgwNGI4OTUyY2UxMWIuLjg4
OGRiN2Q4ZjMzOTI4ZGY2ZjZjZjk5NzY5MWRkZjI4ZjVjMjYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9u
c2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJl
c3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgogICAg
IH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhzb3Vw
TWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291cF9tZXNzYWdlX2dldF9yZWFzb25f
cGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0YXR1c1RleHQoU3RyaW5nIHsgc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSB9KTsKIAogICAgIG1fY2Vy
dGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVyX2NlcnRpZmljYXRlKHNvdXBNZXNz
YWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2FnZV9nZXRfdGxzX3BlZXJfY2VydGlm
aWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkgKzY2LDkgQEAgUmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0IENT
dHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgY29uc3QgY2hhciogb2Zm
aWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShyZXNwb25zZUhlYWRlcnMs
ICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRDb250ZW50VHlwZS5pc051bGwoKSAm
JiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCAmJiBzbmlmZmVk
Q29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAgICBjb250ZW50VHlwZSA9IHNuaWZm
ZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgc25p
ZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UKLSAgICAgICAgY29udGVudFR5cGUg
PSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgb2ZmaWNpYWxU
eXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250
ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0dHBTdGF0dXND
b2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWltZVR5cGUoTUlN
RVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0cmluZygpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1YzUxMTgyMDZiNzE3MTFiNDk3NzNj
YTIxZDY2YzIwOTFhNS4uYTJmMGM5NTQ3MjhjOWU2ZDZiMzYwODZiOTY1OGRjMzk0NGNjMmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtNjUsMTIgKzY1LDEzIEBAIHN0YXRpYyBTdHJp
bmcgZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKIAogc3RhdGljIHZvaWQgc2NhbkRpcmVjdG9yeUZvckRpY3Rpb25hcmllcyhjb25zdCBj
aGFyKiBkaXJlY3RvcnlQYXRoLCBIYXNoTWFwPEF0b21TdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYg
YXZhaWxhYmxlTG9jYWxlcykKIHsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSkgeworICAgIGF1dG8gZGlyZWN0b3J5UGF0
aFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoZGlyZWN0b3J5UGF0aCk7CisgICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aFN0cmlu
ZykpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFy
eUZpbGVOYW1lKGZpbGVOYW1lKTsKICAgICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAg
ICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChk
aXJlY3RvcnlQYXRoU3RyaW5nLCBmaWxlTmFtZSk7CiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBh
dGhbUEFUSF9NQVhdOwogICAgICAgICBpZiAoIXJlYWxwYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0YSgpLCBub3JtYWxpemVkUGF0aCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwCmluZGV4IGFhMDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkw
MDguLmE0NGU0MzZiNjVlYzMzNGZlNzQ4OGFkM2RkN2NlY2M4OWE3YjQwNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNDM0LDggKzQz
NCw4IEBAIHZvaWQgTG9jYWxlV2luOjppbml0aWFsaXplTG9jYWxlRGF0YSgpCiAgICAgU3RyaW5n
IG5lZ2F0aXZlU3VmZml4ID0gZW1wdHlTdHJpbmcoKTsKICAgICBzd2l0Y2ggKG5lZ2F0aXZlRm9y
bWF0KSB7CiAgICAgY2FzZSBOZWdhdGl2ZUZvcm1hdFBhcmVudGhlc2lzOgotICAgICAgICBuZWdh
dGl2ZVByZWZpeCA9ICIoIjsKLSAgICAgICAgbmVnYXRpdmVTdWZmaXggPSAiKSI7CisgICAgICAg
IG5lZ2F0aXZlUHJlZml4ID0gIigiX3M7CisgICAgICAgIG5lZ2F0aXZlU3VmZml4ID0gIikiX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTmVnYXRpdmVGb3JtYXRTaWduU3BhY2VQcmVmaXg6
CiAgICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gbmVnYXRpdmVTaWduICsgIiAiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKaW5kZXggYWFlNmM5OWRkMDUyOTg1
YTQzNzE4ODQ2YjY4NTM2NDU0MDUwYzIzNC4uMDVhMGQxMjU2YTEzNjk4MjUwN2I3MzJjNzg1MmJi
ZWNlMjAxYjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2
ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4u
Y3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JX
aW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5
Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7
CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05UUk9MOgot
ICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAiQ29udHJv
bCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAiU2hpZnQi
OworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19DQVBJVEFM
OgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1cm4gIkNh
cHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktfUldJTjoK
LSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2luIl9zOwog
ICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAg
ICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAg
ICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVybiAiRW5k
IjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIiCiAgICAg
ICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAg
ICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgICAg
ICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAgcmV0dXJu
ICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZLX0YzOgot
ICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9zOwogICAg
ICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0dXJuICJG
NSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2OgotICAg
ICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgICAg
ICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAgICByZXR1
cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7
CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAg
ICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgICAgICBj
YXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVybiAiRjEy
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAg
ICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAg
ICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAgIHJldHVy
biAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
NjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE2Il9z
OwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAg
IHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAgICBjYXNl
IFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAg
ICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJldHVybiAi
RjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZLX0YyNDoK
LSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0Il9zOwog
ICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAg
ICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgICAgICBj
YXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAg
IHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNl
IFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJl
dHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAg
Y2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICAgICAg
cmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAg
IHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJf
czsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmlnaHQiOwor
ICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJf
czsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7
CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19VUDoKLSAg
ICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsKICAgICAg
ICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2Fz
ZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHAKaW5kZXggYjkzODcxNDY2NTNhYWQzZDkyYzA2YjBiNDQzZTdhNGM4YmQwMDhlZS4uODA3ZDU3
MjM0MzBiMWFiODliOWJjOWIyODUwZTIxMWYyMjAyYmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1
cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9z
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2NjU3
MGZjMjM5NzdkOTQ0YmFhN2YzZDRhNjYyZi4uMjhiNTRlZjQ3YTFjM2I3OWViNzVmZjc1YjhjNjNh
YmIxZTU0OTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVU
eXBlUmVnaXN0cnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcApAQCAtNzQsMzQgKzc0LDM0IEBAIFN0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IHN0cmluZykKICAgICBzdGF0
aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWltZXR5cGVNYXA7CiAgICAgaWYgKG1pbWV0eXBl
TWFwLmlzRW1wdHkoKSkgewogICAgICAgICAvL2ZpbGwgd2l0aCBpbml0aWFsIHZhbHVlcwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCIsICJ0ZXh0L3BsYWluIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgicGRmIiwgImFwcGxpY2F0aW9uL3BkZiIpOwotICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInBzIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJjc3MiLCAidGV4dC9jc3MiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1s
IiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSIsICJ0ZXh0L2h0
bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiLCAidGV4dC94bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4c2wiLCAidGV4dC94c2wiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ4aHQiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieGh0bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgicnNzIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIiwgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2ZyIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgic3ZneiIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgianBnIiwgImltYWdlL2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJqcGVnIiwgImltYWdlL2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciLCAi
aW1hZ2UvcG5nIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIiwgImltYWdlL3RpZmYi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWZmIiwgImltYWdlL3RpZmYiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJpY28iLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiY3VyIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJt
cCIsICJpbWFnZS9ibXAiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiLCAidGV4dC92
bmQud2FwLndtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMiLCAiYXBwbGljYXRp
b24vdm5kLndhcC53bWxjIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIiwgImF1ZGlv
L3gtbTRhIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0Il9zLCAidGV4dC9wbGFpbiJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicGRmIl9zLCAiYXBwbGljYXRpb24vcGRmIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyJfcywgImFwcGxpY2F0aW9uL3Bvc3RzY3Jp
cHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyJfcywgInRleHQvY3NzIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1sIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJodG0iX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhtbCJfcywgInRleHQveG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ4c2wiX3MsICJ0ZXh0L3hzbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMi
X3MsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoInhodCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieGh0bWwiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInJzcyJfcywgImFwcGxpY2F0aW9uL3Jzcyt4bWwiX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiX3MsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hp
dmUiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2ZyJfcywgImltYWdlL3N2Zyt4bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiX3MsICJpbWFnZS9zdmcreG1sIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGVnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgicG5nIl9zLCAiaW1hZ2UvcG5nIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ0aWYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0aWZmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aWNvIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiX3Ms
ICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJtcCJfcywgImltYWdl
L2JtcCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIl9zLCAidGV4dC92bmQud2Fw
LndtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyJfcywgImFwcGxpY2F0aW9u
L3ZuZC53YXAud21sYyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIl9zLCAiYXVk
aW8veC1tNGEiX3MpOwogI2lmIFVTRShKUEVHWEwpCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
anhsIiwgImltYWdlL2p4bCIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCJfcywgImlt
YWdlL2p4bCJfcyk7CiAjZW5kaWYKICAgICB9CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1pbWV0eXBl
TWFwLmdldChleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCmluZGV4IDBiMjVmZjZjMzhjODYzNGYzN2VlYTJhZmQwMjRhOGQ0MmE0ZjQyYzUuLjY2
ODVlZDk5MzY0NjlmZDBhNDNmYmUyNDEyYmJjMzhiY2ZmOGQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBi
b29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9y
bWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0
KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8
IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1
bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmkt
bGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCkt
PmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3Jt
YXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMu
YWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsy
NzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhj
b25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
dHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIp
OwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3Vy
aS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwog
CiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3
LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0
YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRh
dGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5
cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJu
IG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1M
KCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3
cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUs
IGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBj
Zmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxl
KSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1
cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5o
R2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1
bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwg
VFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5
Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0
IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3Vy
bC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5n
KCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhG
cm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBm
c1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJM
Il9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRd
XHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50
U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRv
IGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29u
dGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9v
d25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZI
VE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAg
ICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxl
KSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRl
R2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENs
aXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEp
OwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6
SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1f
b3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRh
KENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJh
Y3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0
aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19j
YXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0g
U3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAg
ICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2Fy
ZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5p
bnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0
bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQ
YXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFy
a3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1
cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwg
ZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBU
WU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5
c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3Bw
CmluZGV4IDcwZjZjMWRjZGViZDZlNGRiODA1MmYyYTkxMWY3MDYyMWFiMjQ3ZDQuLmUxNjUzM2Jl
MmRiODJkMmVjYTZiM2JjOGJmN2MwYTUzODBiYjU1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0
ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5n
IG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBX
aW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dz
IENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NF
NDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAi
V2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2Ug
V2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4g
IldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2lu
ZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRv
d3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAg
IHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0
OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJf
czsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFy
KiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDog
IldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1h
am9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09X
NjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0
dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAg
ICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0
dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9D
RVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7
CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNo
aXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVy
biAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCmluZGV4IGNmYmZkNTRiNjI5YTRk
NjJhMmIwMjQyOTkyNDM5MjIwNzdkNjljOGQuLjVkNzU0ODk3NmM0MWU3ZjBhODBkZjEyNzBjODQz
YmM4ZmM3YzQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaApAQCAtNDcsMTcgKzQ3LDE3IEBAIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5PE9wZW5YUkJ1dHRvblR5cGUsIDc+IG9wZW5YUkJ1dHRvblR5cGVzIHsKIGlu
bGluZSBTdHJpbmcgYnV0dG9uVHlwZVRvU3RyaW5nKE9wZW5YUkJ1dHRvblR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6
IHJldHVybiAidHJpZ2dlciI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpTcXVlZXplOiBy
ZXR1cm4gInNxdWVlemUiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VG91Y2hwYWQ6IHJl
dHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazog
cmV0dXJuICJ0aHVtYnN0aWNrIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1icmVz
dDogcmV0dXJuICJ0aHVtYnJlc3QiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9u
QTogcmV0dXJuICJidXR0b25hIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6
IHJldHVybiAiYnV0dG9uYiI7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUcmlnZ2VyOiBy
ZXR1cm4gInRyaWdnZXIiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpTcXVlZXplOiBy
ZXR1cm4gInNxdWVlemUiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDog
cmV0dXJuICJ0b3VjaHBhZCJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1ic3Rp
Y2s6IHJldHVybiAidGh1bWJzdGljayJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRo
dW1icmVzdDogcmV0dXJuICJ0aHVtYnJlc3QiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBl
OjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBl
OjpCdXR0b25COiByZXR1cm4gImJ1dHRvbmIiX3M7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKQEAgLTgwLDExICs4MCwxMSBAQCBjb25zdGV4cHIg
c3RkOjphcnJheTxPcGVuWFJBeGlzVHlwZSwgMj4gb3BlblhSQXhpc1R5cGVzIHsKIGlubGluZSBT
dHJpbmcgYXhpc1R5cGV0b1N0cmluZyhPcGVuWFJBeGlzVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRvdWNocGFkOiByZXR1cm4gInRv
dWNocGFkIjsKLSAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRo
dW1ic3RpY2siOworICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRvdWNocGFkOiByZXR1cm4gInRv
dWNocGFkIl9zOworICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAi
dGh1bWJzdGljayJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0
aWxzLmgKaW5kZXggOWVjYzQ4YTZhNmYwMTVlYzc1ZWExNTgxZjM2NDhhYTIwMzlmN2FiOS4uNTYz
NzJiYjM1NmVjM2VjMzJkMWEwMWIzYzBmZDg5MmQyMmNhYTlkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEy
IEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNzVG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVz
cykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVzcykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpM
ZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAg
ICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJyaWdodCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBh
OTA5MGY3ZWExYTM0OWY0OGQ3M2YzYzM3NjU0ZWUzZjY0ZmUzMmIzLi4wY2Y0MjQ4MjlkODc0ZTZk
ZTEwNmJkY2Y3ZjU2NzRiZWRmNTQwNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50
U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldE91dHNpZGVWaWV3cG9ydFRocm90dGxpbmdF
bmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBNb2Nr
UHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoIiIpOworICAgIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZChlbXB0eVN0cmlu
ZygpKTsKICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyOjpzZXRDbGllbnRGb3JUZXN0aW5nKG51bGxw
dHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDUyZTI3Njc2
M2NhMzJhYTA0ZTY5Mzc5ZmY1M2ViMTQxMmNiMzI3YjEuLjgzNTk2OWJmYTM2Y2UxNmY2MzU2YzZi
YTE3Y2E5MmVhMWU5OGRlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMs
MTEgKzUzLDExIEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZh
bHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJ
bnRlZ2VyKCJjb2RlIik7CisgICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2Vy
KCJjb2RlIl9zKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBh
dXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwog
ICAgIGlmICghZXJyb3JNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3Bw
CmluZGV4IDA1MjQ2YmFhNjNjNTA5NDFiYjJhOGJhNDMyOWI4MDcxYjk3ZTY5OWEuLmQ3MWY0ZDEw
NTdlZGJiNTNlZGFlMTY1YjJmZTJjZTAzYjFmMGVlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cg
PSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAg
IGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0
LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3Jp
cHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVu
dFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBh
dXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3Qo
ImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAo
IWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENv
bW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3Ip
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAg
ICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAg
ICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29t
bWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vz
c2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9z
LCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5
KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7
Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAg
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93
T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAg
ICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkp
OworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFs
dWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVp
Z2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9z
LCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vz
c2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+
dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2Ny
aXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQog
ICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50
YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmls
ZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0
aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAg
IHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAg
In0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50
SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxl
U2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0K
ICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQu
ZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBm
YWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRh
YmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAg
ICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAg
ICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5z
ZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1
bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxl
VXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxv
YWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVf
b3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBh
dG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQor
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAg
ICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAg
ICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsi
CiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFj
dGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50
U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVu
Y3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5n
ZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAg
ICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVs
ZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1l
bnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9
OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsK
IAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVs
ZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGlj
IFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpD
b29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1l
KTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7
Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVl
X29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUu
cGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21h
aW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZh
bHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2ll
Lmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFu
KCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3Vi
bGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJO
b25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2ll
LnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsK
IH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBT
ZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1f
aW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9u
U291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJj
ZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291
cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4g
Ik51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAg
c3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91
c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0
dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNl
IFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAg
ICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgot
ICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5
OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJf
czsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJX
aGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3Jp
Z2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAg
ICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAg
ICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9p
bnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmln
aW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJl
dHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBh
MjhiMWI4MGFlYmZmM2NhYWIzYzg0Y2Q1YThkYmYuLjU5MTg0NzBiODVjYWM4N2ZkYjljN2EzNTk3
YzI4MWQxMGE1OWJlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgU3RyaW5nIHRhcmdl
dFN0cmluZzsKICAgICBpZiAoY29uc3QgY2hhciogdGFyZ2V0RW52VmFyID0gZ2V0ZW52KCJXRUJE
UklWRVJfVEFSR0VUX0FERFIiKSkKLSAgICAgICAgdGFyZ2V0U3RyaW5nID0gdGFyZ2V0RW52VmFy
OworICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyB0YXJnZXRFbnZWYXIgfTsKICNlbmRp
ZgogICAgIGZvciAoaW50IGkgPSAxIDsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICBjb25zdCBj
aGFyKiBhcmcgPSBhcmd2W2ldOwpAQCAtNzUsNyArNzUsNyBAQCBpbnQgV2ViRHJpdmVyU2Vydmlj
ZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdl
U3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0U3RyaW5nID0gYXJndltpXTsKKyAgICAg
ICAgICAgIHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC05Nyw3ICs5Nyw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNl
OjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VT
dGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhcmdldFN0cmluZyA9IGFyZ3ZbaV07CisgICAg
ICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkK
ICAgICAgICAgICAgIGlmICghcHJveHkuaHR0cHNVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHZh
bHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiKSkgeworICAgICAgICBpZiAo
YXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Il9zKSkgewogICAg
ICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgICAg
ICBpZiAoIXNvY2tzUHJveHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxp
emVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94
eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5n
ZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7CisgICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZh
bHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiJfcyk7CiAgICAgICAgICAg
ICBpZiAoIXNvY2tzVmVyc2lvblZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcyLDMwIEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y3Jl
YXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsIHN0CiAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldEJvb2xlYW4oInNldFdpbmRvd1JlY3Qi
X3MsIGNhcGFiaWxpdGllcy5zZXRXaW5kb3dSZWN0LnZhbHVlX29yKHRydWUpKTsKICAgICAgICAg
ICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlX29y
KFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgewogICAgICAgICAg
ICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzczoKLSAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJkaXNtaXNzIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHQ6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Iik7CisgICAgICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9z
LCAiYWNjZXB0Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnk6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9y
Il9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBh
bmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFuZE5vdGlmeToKLSAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJhY2NlcHQgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQg
bm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3I6Oklnbm9yZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUi
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMucGFnZUxv
YWRTdHJhdGVneS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAg
ICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJub25lIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJub3JtYWwiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoKLSAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJlYWdlciJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5wcm94eSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCmluZGV4IDBmNmM4NzgyMDA5NWEy
NzEwYzc5ODVmMjBkNGQ4N2ExYTkwN2FiZmEuLjJiNjcxMzQ5ZDM1YjFkY2RjOWFlYTg1ZjI5MDZm
NDJkOWIwODA3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxp
dGllc1NvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVz
U29ja2V0LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0Ojpw
YXJzZUNhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7
CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRh
cmdldEFkZHI7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0
YXJnZXRBZGRyIiwgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5n
KHRhcmdldEFkZHIpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2Nr
ZXQ6dGFyZ2V0QWRkciJfcywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFz
U3RyaW5nKHRhcmdldEFkZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRh
cmdldEFkZHI7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAg
ICBpbnQgdGFyZ2V0UG9ydDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgi
c29ja2V0OnRhcmdldFBvcnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+
YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZh
bHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0
VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdl
dFBvcnQgPSB0YXJnZXRQb3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9IVFRQU2VydmVyU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBT
ZXJ2ZXJTb2NrZXQuY3BwCmluZGV4IDc5YjdjYTRiMmQxMzMyMmIwZGU4ODMyYTIzODIxODBlMzJh
MDQyZjAuLjcwYWE0NGYwYmU4NDM4ZjgxYTQxMDIwZWMyMDk2MjcwNTU4NDBiOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6
UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJ
bnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IElu
dmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShX
VEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
bWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhNDJjOWEzNGNhOTIwZmIyMjczZDg2MTc2
MWU3Zi4uNTdkYmEwM2UxZTNkZGU1MmI3Zjk4YjU0MDBmODk5N2QyN2E2OWQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENv
bW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZm
ZXImIHNvdXJjZSwgY29ucwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVy
ZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRl
IGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZp
Y2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRF
bmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBz
b3VyY2UsIGNvbgogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFs
aWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxp
ZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdl
bmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVy
Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNl
LCBjbwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNh
dGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZTE4MDgyZTVkNTI4MWQ5NDA1OTVi
MWNlYTc4MGRmYzM1NjIwYjZlYS4uMzVmYWJlZTVhNGU3NWM2YzgzYWMwMDZlOTM3NzU5ZWUyNmFi
Njc5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJp
bmcgc3RyaW5nRm9yU1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBr
VExTUHJvdG9jb2wxMzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NT
TFByb3RvY29sQWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxs
Il9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtu
b3duIjsKKyAgICAgICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29s
TWF4U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDA2Y2NlYzYyMWEwNWE3YzMwOWI4OWUyMTA0MjRkZTdk
YWYzMDcxMzYuLjA5ZGJlOTk2NjE0NDg0MWUyZmZiM2E4YWM5MTVkZGYxYTcxYzE1NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1
cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAg
Ly8gQ2hhbmdlIHJlcXVlc3QgbWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5n
IGEgcHJldmlvdXMgcmVkaXJlY3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNv
LgogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8
IHNob3VsZFJlZGlyZWN0QXNHRVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNl
dEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51
bGxwdHIpOwogICAgICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzYWVjOGQxZGY5OTRkMjVm
ZGNkYTRlZDJkN2U2Ni4uZTY3ZjdlZDI5YmM1MmVhYzkyNmZlYTc1NmU3YTU4YWY1Y2M2MWE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtOTI5LDkgKzkyOSw5IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24oKQogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhSZWRpcmVjdHMgPSAyMDsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdC5yZWRpcmVj
dENvdW50KCkgPiBtYXhSZWRpcmVjdHMpIHsKICNpZiBVU0UoU09VUDIpCi0gICAgICAgIGRpZEZh
aWwoUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IobV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
U09VUF9TVEFUVVNfVE9PX01BTllfUkVESVJFQ1RTLCAiVG9vIG1hbnkgcmVkaXJlY3RzIikpOwor
ICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJl
cXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJl
ZGlyZWN0cyJfcykpOwogI2Vsc2UKLSAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVh
cmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIFNPVVBfU0VTU0lPTl9FUlJPUl9UT09f
TUFOWV9SRURJUkVDVFMsIG1fY3VycmVudFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgo
IlRvbyBtYW55IHJlZGlyZWN0cyIpKSk7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihT
dHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIFNPVVBfU0VT
U0lPTl9FUlJPUl9UT09fTUFOWV9SRURJUkVDVFMsIG1fY3VycmVudFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoIlRvbyBtYW55IHJlZGlyZWN0cyIpKSk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8g
Q2hhbmdlIG5ld1JlcXVlc3QgbWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5n
IGEgcHJldmlvdXMgcmVkaXJlY3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNv
LgogICAgICAgICBpZiAoc291cF9tZXNzYWdlX2dldF9tZXRob2QobV9zb3VwTWVzc2FnZS5nZXQo
KSkgPT0gU09VUF9NRVRIT0RfR0VUIHx8ICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSB8fCBzaG91bGRSZWRpcmVjdEFzR0VUKG1fc291cE1lc3NhZ2UuZ2V0KCksIGlzQ3Jv
c3NPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOwor
ICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgICAgIHJlcXVlc3QuY2xlYXJI
VFRQQ29udGVudFR5cGUoKTsKICAgICAgICAgfQpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVh
bSwgR0FzeW5jUmVzdWx0KgogICAgICAgICBpZiAodGFzay0+bV9zb3VwTWVzc2FnZSkKICAgICAg
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcih0YXNrLT5t
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBlcnJvci5nZXQoKSkpOwogICAgICAgICBlbHNlIGlmICh0
YXNrLT5tX2ZpbGUpCi0gICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19x
dWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2RlLCB0YXNrLT5tX2ZpcnN0
UmVxdWVzdC51cmwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKKyAgICAg
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0
cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3Qu
dXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSBlbHNlIGlm
IChieXRlc1JlYWQgPiAwKQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRT
dHJlYW0KICAgICBBU1NFUlQoIW1faW5wdXRTdHJlYW0pOwogICAgIG1faW5wdXRTdHJlYW0gPSBX
VEZNb3ZlKGlucHV0U3RyZWFtKTsKICAgICBhdXRvKiBoZWFkZXJzID0gc291cF9tdWx0aXBhcnRf
aW5wdXRfc3RyZWFtX2dldF9oZWFkZXJzKG1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCkpOwot
ICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVh
ZGVycywgIkNvbnRlbnQtVHlwZSIpOworICAgIFN0cmluZyBjb250ZW50VHlwZSB7IHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIkNvbnRlbnQtVHlwZSIpIH07CiAgICAgbV9y
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9maXJzdFJlcXVlc3QudXJsKCksIGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLAogICAgICAgICBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoaGVhZGVycyksIGV4dHJhY3RDaGFyc2V0RnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIG1fcmVzcG9uc2UudXBkYXRlRnJvbVNvdXBNZXNz
YWdlSGVhZGVycyhoZWFkZXJzKTsKQEAgLTEzNzYsNyArMTM3Niw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIGVsc2UKICAgICAgICAgb3V0cHV0U3RyZWFtID0g
YWRvcHRHUmVmKGdfZmlsZV9jcmVhdGUobV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwg
R19GSUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAo
IW91dHB1dFN0cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxE
b3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9t
VVRGOChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4
NCw3ICsxMzg0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAg
bV9kb3dubG9hZEludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChpbnRlcm1lZGlhdGVQYXRoLmdldCgpKSk7CiAgICAgb3V0cHV0U3RyZWFtID0gYWRvcHRHUmVm
KGdfZmlsZV9yZXBsYWNlKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRy
LCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpOwog
ICAgIGlmICghb3V0cHV0U3RyZWFtKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAg
ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91
dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKQEAgLTE0MTIsNyArMTQxMiw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6d3JpdGVEb3dubG9hZENhbGxiYWNrKEdPdXRwdXRTdHJlYW0qIG91dHB1
dFN0cmVhbSwgR0FzCiAgICAgZ3NpemUgYnl0ZXNXcml0dGVuOwogICAgIGdfb3V0cHV0X3N0cmVh
bV93cml0ZV9hbGxfZmluaXNoKG91dHB1dFN0cmVhbSwgcmVzdWx0LCAmYnl0ZXNXcml0dGVuLCAm
ZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3BvbnNlLCBlcnJvci0+
bWVzc2FnZSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKHRhc2stPm1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRXcml0ZURvd25sb2FkKGJ5dGVzV3Jp
dHRlbik7CiB9CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpZEZpbmlzaERvd25sb2FkKCkKICAgICBBU1NFUlQobV9kb3dubG9hZEludGVybWVkaWF0ZUZp
bGUpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9t
b3ZlKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBtX2Rvd25sb2FkRGVzdGluYXRp
b25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG1fY2FuY2VsbGFibGUuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2Fn
ZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1f
cmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE2ODgsMTAgKzE2ODgsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRHZXRGaWxlSW5mbyhHRmlsZUluZm8qIGluZm8pCiB7CiAgICAgbV9yZXNwb25z
ZS5zZXRVUkwobV9maXJzdFJlcXVlc3QudXJsKCkpOwogICAgIGlmIChnX2ZpbGVfaW5mb19nZXRf
ZmlsZV90eXBlKGluZm8pID09IEdfRklMRV9UWVBFX0RJUkVDVE9SWSkgewotICAgICAgICBtX3Jl
c3BvbnNlLnNldE1pbWVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICAgICAgbV9yZXNwb25zZS5zZXRN
aW1lVHlwZSgidGV4dC9odG1sIl9zKTsKICAgICAgICAgbV9yZXNwb25zZS5zZXRFeHBlY3RlZENv
bnRlbnRMZW5ndGgoLTEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IGdjaGFyKiBjb250
ZW50VHlwZSA9IGdfZmlsZV9pbmZvX2dldF9jb250ZW50X3R5cGUoaW5mbyk7CisgICAgICAgIFN0
cmluZyBjb250ZW50VHlwZSB7IGdfZmlsZV9pbmZvX2dldF9jb250ZW50X3R5cGUoaW5mbykgfTsK
ICAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFt
ZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKICAgICAgICAgaWYg
KG1fcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkpCkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnJlYWRGaWxlQ2FsbGJhY2soR0ZpbGUqIGZpbGUsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBOZQogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19JTlBV
VF9TVFJFQU0oZ19maWxlX3JlYWRfZmluaXNoKGZpbGUsIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KSkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9y
KGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9m
aXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0
cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3Qu
dXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAg
ICAgICB0YXNrLT5kaWRSZWFkRmlsZShXVEZNb3ZlKGlucHV0U3RyZWFtKSk7CiB9CkBAIC0xNzQz
LDcgKzE3NDMsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmVudW1lcmF0ZUZpbGVDaGls
ZHJlbkNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bAogICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdGaWxlRW51bWVyYXRvcj4gZW51bWVyYXRvciA9
IGFkb3B0R1JlZihnX2ZpbGVfZW51bWVyYXRlX2NoaWxkcmVuX2ZpbmlzaChmaWxlLCByZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFp
bChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+
Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKSk7CisgICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+
bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRSZWFkRmlsZSh3ZWJraXREaXJlY3RvcnlJbnB1
dFN0cmVhbU5ldyhXVEZNb3ZlKGVudW1lcmF0b3IpLCB0YXNrLT5tX2ZpcnN0UmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCmluZGV4IDRiY2U4ODg0OGM2NzMy
NjBhYTVjNjdiNjk0NGI3MTUyYjVkMTVkOWIuLjk3ZjA5ODU0Y2Y1ZTNlMjhmZTAyZWJjZjkyMjFi
MzVkYjJlMDlhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2Vi
U29ja2V0VGFzazo6ZGlkQ29ubmVjdChHUmVmUHRyPFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24pCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29ubmVjdGlvbi5n
ZXQoKSwgImVycm9yIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZFJlY2VpdmVFcnJv
ckNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29ubmVj
dGlvbi5nZXQoKSwgImNsb3NlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPihkaWRDbG9z
ZUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChzb3VwX3dlYnNv
Y2tldF9jb25uZWN0aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpLCBhY2NlcHRl
ZEV4dGVuc2lvbnMoKSk7CisgICAgbV9jaGFubmVsLmRpZENvbm5lY3QoU3RyaW5nIHsgc291cF93
ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfcHJvdG9jb2wobV9jb25uZWN0aW9uLmdldCgpKSB9LCBh
Y2NlcHRlZEV4dGVuc2lvbnMoKSk7CiAKICAgICBtX2NoYW5uZWwuZGlkUmVjZWl2ZUhhbmRzaGFr
ZVJlc3BvbnNlKG1faGFuZHNoYWtlTWVzc2FnZS5nZXQoKSk7CiAgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9kYXRhKG1faGFuZHNoYWtlTWVzc2FnZS5nZXQoKSwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIuaAppbmRleCBhOWRkYTMwMGZkODZmYmE2OGY3MWZmZjVmZTU4YjZiZDAyMjZkNjMyLi4zYTg4
ZmMyNmFkMDQ5MDIwOTVlNmUzMzA1ZTk0ZTM2YzFmMzllMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUg
KzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1i
b29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBO
U1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0YWM0ZWFkNGZjMmU0MzU0
OTZhNWE5NDJkNGUwNC4uMTU3M2RmMmI3MmM2MDg3NjI4ZTk3ZDRjM2RkY2VmOTQyZDhjZDNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0KQEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlv
bmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNp
Z25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7
Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6
d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGxvY2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAh
PSB3aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVu
Z3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNo
YXIgd2lyZVR5cGUgPSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5
cGUpIHsKLSAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJj
aGFuZ2VhYmxlLgotICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0
cmNocigiQmMiLCB3aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0
byBtYXBDaGFyYWN0ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBg
Ym9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0
dXJuIGMgPT0gJ0InID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0g
bG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0p
ICE9IG1hcENoYXJhY3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTk3MCw5ICs5NjcsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdL
UmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNl
cHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAg
IFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7
Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9k
U2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2Nh
dGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRo
b2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25h
dHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVy
YXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJl
cyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9n
ZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJs
b2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0NGVlOTZiMWE0ZmRhMDEz
MGQ1ZjFiNDYxZDA2Yi4uNTk2OTdlMjYyZDk5M2Y1Mjk4YmQzOGUxZmMzZGUzZDE2OTk4Y2MwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3Rl
T2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3Rl
T2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQ
cm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQor
c3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQs
IG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGlu
ZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0
cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9j
a1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBi
CiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVF
bmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWdu
YXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFT
U0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0
dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0
dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudElu
ZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2ln
bmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRh
KCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0
aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25h
dHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVj
dGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9j
b2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9j
a1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1
cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlk
YXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJl
Iik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7
Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSBy
ZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0Zjgo
KS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9j
ayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tl
TWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVj
dEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVj
a2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJ
RCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2Fw
dHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCBy
ZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJk
aW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZh
Y2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24g
Kmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1Jl
bW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCAx
NDQ4ZGY5ZTlkZWFjYmU0YTY5NDFkNmQxYWNhZTE2OTY1YjJkMzc2Li5mZjIyMWNhNDlhM2M2Mjhk
MGRiZjZiMDkyZGIyN2IwNDhhYTViMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg
d2Via2l0X3VyaV9yZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29u
c3QgY2hhciogdXJpKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNU
KHJlcXVlc3QpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsg
dXJpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSBy
ZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3
NDQ1ZGY2NGNjNWQzYjRiYjYxMGVjMWYzYzA2NWYwLi4zZjlmZTY1NzM2M2I5YzI4NWNkNGJiMDEx
ZmE3NjQ4NThkMGIyYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2Vi
RXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpCiAKIFJlc291
cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JEb21h
aW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VSTCwgXygi
UHJpbnRlciBub3QgZm91bmQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJv
cjo6d2ViS2l0UHJpbnRFcnJvckRvbWFpbigpLCBBUEk6OkVycm9yOjpQcmludDo6UHJpbnRlck5v
dEZvdW5kLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIlByaW50ZXIgbm90IGZvdW5k
IikpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBV
UkwmIGZhaWxpbmdVUkwpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6
d2ViS2l0UHJpbnRFcnJvckRvbWFpbigpLCBBUEk6OkVycm9yOjpQcmludDo6SW52YWxpZFBhZ2VS
YW5nZSwgZmFpbGluZ1VSTCwgXygiSW52YWxpZCBwYWdlIHJhbmdlIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JEb21haW4oKSwgQVBJOjpF
cnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVU
RjgoXygiSW52YWxpZCBwYWdlIHJhbmdlIikpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOGNiYmVkYzNiMjk0YmQ3ZTI1NzIzOWJiY2I1
ODMzMzQ3ZDc4NmU2Mi4uNzAwMjZmZDI4NjQzMmE5ZjM4NTRhNDRhMzcwMmE5NjliMjIyMDk1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIFN0cmluZyB3ZWJr
aXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJOYW1lKFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
KiBzZXNzaW9uKQogICAgIGlmIChzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pCiAgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9u
YW1lKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykpOwogCi0gICAgcmV0dXJuIGdfZ2V0
X3ByZ25hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChnX2dldF9wcmduYW1lKCkp
OwogfQogCiBTdHJpbmcgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyVmVyc2lvbihX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKaW5kZXggZjgyNmVlMTg5
YTU0OTNlOWMyNGQ4NDViYjVlNWJlNTNkOWM3Zjg2OS4uMGRhYTVjOWJkNWE3N2QyNGVlMjA4NjU1
MmQxOTZmZWFlMzJjYzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRD
cmVkZW50aWFsKiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25z
dCBnY2hhciogcGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFM
X1BFUlNJU1RFTkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVk
ZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGlu
KSwgdG9XZWJDb3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJl
dHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJp
bmcoKSwgU3RyaW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVu
Y2UocGVyc2lzdGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CmluZGV4IDkyNjJhODRkZWNlMjViZjBiZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcuLjNmZmZjOGZi
OWUyN2I2NmJiMjYwYzkwZjQxMWZkYjQ3Y2EzMjE4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAKQEAgLTEzOSwxMSArMTM5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJr
aXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRp
Zmllci0+dmFsdWUoKSk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB9IGVsc2UgaWYgKGdf
c3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAiRGlkR2V0U25hcHNob3QiKSkgewotICAgICAgICAgICAg
QVBJOjpVSW50NjQqIGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3Nh
Z2UuZ2V0KCJDYWxsYmFja0lEIikpOworICAgICAgICAgICAgQVBJOjpVSW50NjQqIGNhbGxiYWNr
SUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIl9z
KSk7CiAgICAgICAgICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJJbWFnZSo+
KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCIpKTsKKyAgICAgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9
IHN0YXRpY19jYXN0PFdlYkltYWdlKj4obWVzc2FnZS5nZXQoIlNuYXBzaG90Il9zKSk7CiAgICAg
ICAgICAgICB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KHdlYlZpZXcsIGNhbGxiYWNr
SUQtPnZhbHVlKCksIGltYWdlKTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNw
cAppbmRleCA5ZmM0ZDMxOTkwMzYwMzlkNDhhZTdiYjJhMzJhMDljZmY1ODMwNjY2Li43NTMyZmY1
YmVkYmJkNDgzNGVlN2MxMTFjZmVkYjlhN2E4NGM2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0UHJvdG9jb2xIYW5kbGVyOjpXZWJLaXRQcm90b2NvbEhh
bmRsZXIoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIAogdm9pZCBXZWJLaXRQcm90b2NvbEhh
bmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsK
LSAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
Z2V0X3VyaShyZXF1ZXN0KSk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoU3RyaW5nIHsgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpIH0pOwogICAgIGlmIChyZXF1
ZXN0VVJMLmhvc3QoKSA9PSAiZ3B1IikgewogICAgICAgICBoYW5kbGVHUFUocmVxdWVzdCk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNldHRpbmdzLmNwcAppbmRleCAwM2M1YTBiMDNkODgzZjJiMjAxODk1YzJiNTM0NGY5
ZjJjM2FiNTRmLi45YjdiNWEwNzQyMmE3MTc4YjZlNDlkNzFjZmMyOWI2ZDY4YzQ2NWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBf
V2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAg
ICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2Vi
S2l0Mi4iLCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewog
ICAgICAgICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1p
bHkoKS51dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+
Zml4ZWRGb250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBjaGFyKiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OCh1c2VyQWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgdXNlckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAg
ICAgICB1c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0
cmluZygpKTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0
ZjgoKTsKICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0M2IyODY3OTZlMjc3ZTI0N2QyYWJlOGJjOGJk
NC4uMGMzZTJiN2VhOGNlMjA5NTY4N2RjMzllY2U4YzQ3NTc3YTA4ZjExOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKQEAgLTIyMiwxNiArMjIyLDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5j
CiAKICAgICBXZWJLaXRVUklTY2hlbWVSZXNwb25zZSogcmVzcCA9IHByaXYtPnJlc3BvbnNlLmdl
dCgpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7Ci0gICAgICAgIENTdHJpbmcgY29udGVu
dFR5cGUgPSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldENvbnRlbnRUeXBlKHJlc3ApOwotICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwo
KSwgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5kYXRhKCkpLCB3ZWJL
aXRVUklTY2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7
Ci0gICAgICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlLmRhdGEoKSkpOworICAgICAgICBTdHJpbmcgY29udGVudFR5
cGUgeyB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldENvbnRlbnRUeXBlKHJlc3ApLmRhdGEoKSB9
OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHByaXYtPnRhc2stPnJlcXVlc3Qo
KS51cmwoKSwgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksIHdlYktp
dFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RyZWFtTGVuZ3RoKHJlc3ApLCBlbXB0eVN0cmluZygpKTsK
KyAgICAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUoY29udGVudFR5cGUpKTsKICAgICAgICAgY29uc3QgQ1N0cmluZyYgc3RhdHVzTWVz
c2FnZSA9IHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzTWVzc2FnZShyZXNwKTsKICAg
ICAgICAgaWYgKHN0YXR1c01lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNl
LnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzVGV4dCgiT0siX3MpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c0NvZGUod2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRTdGF0dXNDb2RlKHJl
c3ApKTsKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KHN0YXR1c01lc3Nh
Z2UuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KFN0cmlu
ZyB7IHN0YXR1c01lc3NhZ2UuZGF0YSgpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNw
b25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1pbWVU
eXBlKE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yUGF0aChyZXNwb25zZS51cmwoKS5wYXRo
KCkudG9TdHJpbmcoKSkpOwpAQCAtMzExLDYgKzMxMSw2IEBAIHZvaWQgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9maW5pc2hfZXJyb3IoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwg
R0VyCiAKICAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3Qt
PnByaXY7CiAgICAgcHJpdi0+cmVzcG9uc2UgPSBudWxscHRyOwotICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3Jl
RXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgdG9XZWJDb3Jl
RXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKICAgICBwcml2LT50YXNrLT5kaWRDb21wbGV0ZShy
ZXNvdXJjZUVycm9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrNC5jcHAKaW5kZXggMDlmZWIxNGJlMDE2MjVkZmRhZTAzYjUyMmE4YTEy
ZjExZGZjYWQwYi4uMmE3Y2JmOWY0MWY5ZjFjODE5YmVhZjIyY2FkN2EwOWVkMWEzZDIxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmICht
X3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRl
cz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEtPmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7
Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9i
eXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAg
ICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMo
UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgp
KSk7CiAgICAgfQogCiAgICAgYXV0byogc3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2Uo
Z3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4
MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li4xZjUyMmRlOTZiYWQzYmEwMjU5MGNlM2VmZDEw
YTEyODZjYjcyNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFy
Z2V0KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJn
ZXRzKGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0
X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVU
U0NBUEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rh
cmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygi
YXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBl
OjpTbWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkp
LCAwLCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxp
c3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7
CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVm
YXVsdHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9u
PihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsK
ICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0
LmNwcAppbmRleCBhYmJhY2EyOWM3NDExMWRjYzA5MzU3Mzk0OTNiOTNjNzQ0NTI1MGQ4Li43NDc5
MTQyYjlmMTU4YmMzMmZjYTRkODFmYmI1Zjk2ZjUyZWJhM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAtNDksNyArNDks
NyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdldCogd2ViVmlldykKICAgICBnZGtf
Y29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgInRl
eHQvdXJpLWxpc3QiKTsKICAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVf
dHlwZShmb3JtYXRzQnVpbGRlciwgIl9ORVRTQ0FQRV9VUkwiKTsKICAgICBnZGtfY29udGVudF9m
b3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgImFwcGxpY2F0aW9u
L3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpOwotICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVp
bGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpKTsKKyAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlw
ZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0
ZXJzKCkpOwogICAgIGF1dG8qIHRhcmdldCA9IGd0a19kcm9wX3RhcmdldF9hc3luY19uZXcoZ2Rr
X2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2ZyZWVfdG9fZm9ybWF0cyhmb3JtYXRzQnVpbGRlciks
CiAgICAgICAgIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KEdES19BQ1RJT05fQ09QWSB8IEdE
S19BQ1RJT05fTU9WRSB8IEdES19BQ1RJT05fTElOSykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
dGFyZ2V0LCAiYWNjZXB0IiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2Rr
RHJvcCogZ2RrRHJvcCwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA2N2I5ZmVkZTZhMzcx
MjI3OGMyY2Q1NzQ3NzEyMjYyNWU1MDBjNmIyLi4yYTA2NmI4NWNjNDUxYmNkZWViYWQ2ZWM0NzIx
ZTRhMGZkOWVhOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
flJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcigpCiAgICAgICAgIGdfb2JqZWN0X3dlYWtf
dW5yZWYoR19PQkpFQ1Qod2ViVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHdl
YlZpZXdEZXN0cm95ZWQpLCB0aGlzKTsKIAogICAgIGZvciAoYXV0byogdXNlckNvbnRlbnRNYW5h
Z2VyIDogbV91c2VyQ29udGVudE1hbmFnZXJzKSB7Ci0gICAgICAgIHdlYmtpdFVzZXJDb250ZW50
TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikt
PnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciIsIEFQSTo6Q29udGVu
dFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1h
bmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5y
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVu
dFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgICAgICBnX29iamVjdF93ZWFrX3VucmVm
KEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3Rp
Znk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KIH0KQEAgLTk5
LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnVzZXJDb250
ZW50TWFuYWdlckRlc3Ryb3llZChSZW1vdGVJbnNwZWN0b3IKIAogdm9pZCBSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
cmVxdWVzdCkKIHsKLSAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwo
U3RyaW5nIHsgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpIH0pOwog
ICAgIGlmICghcmVxdWVzdFVSTC5wb3J0KCkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+
IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoV0VCS0lUX1BPTElDWV9FUlJPUiwgV0VCS0lUX1BP
TElDWV9FUlJPUl9DQU5OT1RfU0hPV19VUkksICJDYW5ub3Qgc2hvdyBpbnNwZWN0b3IgVVJMOiBu
byBwb3J0IHByb3ZpZGVkIikpOwogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJvci5nZXQoKSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8g
dXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2Vy
Q29udGVudE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdF
bnRyeSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIGF1dG8g
aGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3Jp
cHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJH
ZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dl
YWtfcmVmKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dl
YWtOb3RpZnk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KQEAg
LTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dGFy
Z2V0TGlzdENoYW5nZWQoUmVtb3RlSW5zcGVjdG9yQ2xpZW50JiBjbAogICAgICAgICBpZiAod2Vi
a2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTCh7IH0sIHdlYmtpdF93ZWJfdmlld19nZXRf
dXJpKHdlYlZpZXcpKTsKKyAgICAgICAgVVJMIHdlYlZpZXdVUkwgPSBVUkwoU3RyaW5nIHsgd2Vi
a2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykgfSk7CiAgICAgICAgIGF1dG8gY2xpZW50Rm9y
V2ViVmlldyA9IG1faW5zcGVjdG9yQ2xpZW50cy5nZXQod2ViVmlld1VSTC5ob3N0QW5kUG9ydCgp
KTsKICAgICAgICAgaWYgKCFjbGllbnRGb3JXZWJWaWV3KSB7CiAgICAgICAgICAgICAvLyBUaGlz
IHZpZXcgaXMgbm90IHNob3dpbmcgYSBpbnNwZWN0b3IgdmlldyBhbnltb3JlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApp
bmRleCA5OTdiNmE1ZWZmZjNjNWVmYzFiZWU2MGRmMmFiYzVlMjUzMzU2MzcwLi41NDI5M2U3ZTRj
OTIzZWFmYjI0NTljMjQzY2M5YTM5MTNlOTcwZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOTMzMTQ4ODdhMzRmMTg1NGFlODhjNDM5MWQ5
ZTkuLjIyZmMwYThkZmIwOGViMmFkYjQwYjkwYzViMzE0MzZhZWUyOWNjMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2NvbG9yX3BhcnNlKFdlYktpdENvbG9yKiBjb2xvciwg
Y29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9y
LCBGQUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3JTdHJpbmcsIEZBTFNFKTsK
IAotICAgIGF1dG8gd2ViQ29yZUNvbG9yID0gV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9y
V2l0aG91dENvbnRleHQoeyBjb2xvclN0cmluZyB9KTsKKyAgICBhdXRvIHdlYkNvcmVDb2xvciA9
IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KFN0cmluZyB7IGNv
bG9yU3RyaW5nIH0pOwogICAgIGlmICghd2ViQ29yZUNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXggNmIwNTEzNjYyMGVjZTI4NmNh
OTI2MmNlN2E2M2MyMzhiNDI1NmVjNi4uYmMxZTFjOWUzYzIzYWE1NThlYWUzMWExYzNkNGYxYjQ3
N2QyODkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJy
b3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3Ry
aW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAg
ICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAg
IGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRd
KQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90
cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3Npbmcv
ZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxz
ZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8v
Z29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlm
CiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShT
U0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRB
bkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNF
cXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6
Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVy
biAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9
c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBs
YWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2NzhmZTczZTU0NjkyOThhZGMxMjYx
OTdkMWJjNDFmMTljMDc4Li41ZjVlMmQ0NTJjNjQ0NjIyMzZmNjBiZTEzNTExMGZiMTNmNDdjMDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5
c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJl
dmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQo
bV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIp
OworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmll
d0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhU
YXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQs
IHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsu
Y3BwCmluZGV4IDk0ZTg2NjAxNTQ5MTYyNWNkM2MyZTBlZmM2YzNiYWMzMTNiMjcwMzUuLjI2NmE3
NzMxYzc4NDllMmFhOTM0YzllYzQ0ZTE4YjM4MDAwMmVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVX
ZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtNTYsNyArNTYsNyBAQCBXZWJQYWdlUHJveHkq
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5k
V2luZG93KCkKIHsKICAgICBBU1NFUlQoIW1fd2ViVmlldyk7CiAKLSAgICBhdXRvIHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3Ry
aW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxPUEVS
X01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVj
dG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZl
cmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMTE0LDcgKzExNCw3
IEBAIHN0YXRpYyB2b2lkIHJlbW90ZUZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0
KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3VsCiAKICAgICBhdXRvKiBwYWdlID0gc3RhdGljX2Nh
c3Q8V2ViUGFnZVByb3h5Kj4odXNlckRhdGEpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChn
X2ZpbGVfZ2V0X3BhdGgoZmlsZSkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclVJOjpEaWRTYXZlKHBhdGguZ2V0KCkpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShTdHJpbmc6OmZyb21VVEY4KHBhdGgu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1T
YXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JV
SVByb3h5R3RrLmNwcAppbmRleCAyODIyZWU4N2VmNDUwMjVjYzk1YzAxOTY0ZTM5NWI0NmYzYjZi
NGIwLi5iNzcxY2FkZTU0YzEwNTVkMmE1ZGE5OTE2MmFiZmM4NmQxYTkxNDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2Vi
SW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBXZWJQYWdlUHJveHkq
IFdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBB
U1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7CiAK
LSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwg
IldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZl
cmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNp
ZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNw
ZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNl
dHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUp
OwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyB2b2lkIGZpbGVSZXBsYWNlQ29udGVudHNDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzCiAKICAgICBhdXRv
KiBwYWdlID0gc3RhdGljX2Nhc3Q8V2ViUGFnZVByb3h5Kj4odXNlckRhdGEpOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcGF0aChnX2ZpbGVfZ2V0X3BhdGgoZmlsZSkpOwotICAgIHBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKHBhdGguZ2V0KCkpKTsKKyAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShTdHJpbmc6OmZyb21VVEY4
KHBhdGguZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1T
YXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYTI2MzA4ODU3M2NmMjlh
NzU2M2IyZGIwZGM2NWRjMDA4MjJkMjkwNC4uYjY2NDM3MTNmNTc1Zjg4YTIwMDM4ZTQyMDE3NjIz
OWJiODZhMTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAg
ICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50Pihy
ZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3NhZ2UgbGlz
dGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0g
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VD
bGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250
ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJv
bGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAg
IC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9hZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3YjgwNDc3YmRj
N2MyMzY0OTE1ZjllNzQ1YmI2NGVkZTlkZTRhNi4uYTFjNjhlNDIwZTFjNzU3NWFiYTVhYjBlZjgz
NzFlYjcxZTU1YmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlXaW4u
Y3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTFJFU1VMVCBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5
OjpvbkNsb3NlKCkKIAogV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7Ci0gICAgUmVmUHRyPFdlYlBy
ZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJl
ZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3Ms
ICJXZWJLaXQyLiJfcyk7CiAgICAgcHJlZmVyZW5jZXMtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMcyh0cnVlKTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94
eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3Bl
Y3RvclVJUHJveHlXaW4uY3BwCmluZGV4IGY0MDBkNWU3MzcxOThjZDBkNDgyNjlkZTI1MDc3M2Ez
Y2M0NjAxYWQuLjFhMTkxNTU1ZjllODEzOTBmMWY2MGE2OTEyMGExNGMwZWNmOGY5YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9y
VUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dp
bi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIp
OworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygp
LCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RF
KQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBp
biBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNl
cy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNw
cAppbmRleCA5ZDNmOThhMzQ5NDA0MDlmOWNhOGE0MmFjOTQ0ZWE3NmViYjRmNjdiLi5lMmY5NzEz
MjU1MjQzNzcwMjJiNDA1MTlmYjA3ZTg3MzAzMDkzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3MgewogCiBzdGF0aWMg
dm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3MsIGNvbnN0IGNo
YXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikKIHsKLSAgICBX
VEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgpOworICAgIFdU
Rjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5nOjpmcm9tVVRG
OChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAgQ1N0cmluZyBy
cGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0b3IoVmVjdG9y
PENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRhKCkgfSkpOwpA
QCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihH
U3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAgICAgICAgYWRk
RXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5kYm94QXJncyk7
CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2NrZXQiLCAid2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dHJhUGF0
aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlzRGlyZWN0b3J5
Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Il9zIH07CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAgICAgICAgICAg
IFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQ4NjY0
NWRhYWQzMDViNDM4OTZjODhiMzNhYzhjLi5mZDcxNGEzMDU5MTYyYWI2YzM2ZTAwMmVjOGJmNzE0
MTliZmFjMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBA
IC01NSw3ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1l
bnRDYWNoZURpcmVjdG9yeSgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAg
c2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNl
cnZpY2UiKTsKKyAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0
LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiX3MpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCmluZGV4
IDBkMWY0MDBlNDQ0MTA4ODdlMjQ2N2Q0MDkyNTM3OWYzODQzZGE2ODcuLmNmZTdhMGViM2JlYzAw
OTc0NTQxNjc0YjVjNDE0ZTUxMjc0YjFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAgIGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9y
ID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJz
LmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFt
ZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0
X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYK
IApAQCAtODksNyArODksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVf
bG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRl
cmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1l
bnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBV
U0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUg
PSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4
ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBh
cHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZhdWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0gZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25f
aWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0
aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsg
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMu
YXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsgZ19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAK
ICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNlcnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVyQWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4
ODRkYWRjYjFmYWE4ZjhiMWEzMWQ5NTU5ODc4ZmVjNjM5NzQwLi44NjRkMGUzNmZiOGRhMjU2ZDUx
MzJlZTM1NjMwNmM1MjhjNmU2NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExh
dW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25z
KQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJlbmFi
bGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIiA6
ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0
KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0
cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5h
YmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG1fd2Vic2l0
ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5ODIzMGY5YTQ0OWQy
YTJlNzRhMjYxODU0MTNiMS4uNjI2OWNjNGQyODk5YjQyMGQwYWRjNjM5MmI0MjhlNTU0NzU2Mjhh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3
ZWJraXRndGsiCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiX3MKICNlbGlmIFBM
QVRGT1JNKFdQRSkKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndwZSJfcwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmluZGV4IGU4YjlhMDQ3ZThm
YmY2M2E3OWI2YTE4OGFmOTcyOWFmZTdmNTgyZjAuLmUzZTBjNDRkNWZiM2FiZmU2YjIzN2E5OGYx
MGIwYTBkYmY3NmJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRh
dGEuY2FuU21hcnRSZXBsYWNlKCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5n
ZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJr
aXRndGsuc21hcnRwYXN0ZSIpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsK
ICAgICBpZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdl
dFR5cGU6OkN1c3RvbSk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0
b20pOwogCiAgICAgaW50IG51bWJlck9mVGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFi
bGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9m
VGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlw
Ym9hcmRUYXJnZXRUeXBlOjpDdXN0b206CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0
aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVm
ZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRhLmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0
aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVj
dGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNv
bnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5
ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzLi40ZmQ5NjE2YzVmN2Y5NGI3OWM1NGMxNDM5
NTUyODE0OThiNjMwOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAgICAgaWYgKHNlbGVjdGlv
bkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAgICAgICAgcHJv
dmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVzKFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMu
Z2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1wdHkoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
aW5kZXggMTU5OTcxYWNjNmYwZDg4YjgyYTZhMWQ1YWNiZjI2ZDlkNmNiN2E2NC4uY2JmMWEyOWZk
YTMzYjljOGRjNjBhZTc3YzEyY2U2MThlYjYyOGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCkBAIC0xOTgsMjMgKzE5
OCwyMyBAQCBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6fktleUJpbmRpbmdUcmFuc2xhdG9yKCkKIHN0
cnVjdCBLZXlDb21iaW5hdGlvbkVudHJ5IHsKICAgICB1bnNpZ25lZCBnZGtLZXlDb2RlOwogICAg
IHVuc2lnbmVkIHN0YXRlOwotICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgQVNDSUlMaXRlcmFs
IG5hbWU7CiB9OwogCiBzdGF0aWMgY29uc3QgS2V5Q29tYmluYXRpb25FbnRyeSBjdXN0b21LZXlC
aW5kaW5nc1tdID0gewotICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiICAgICAgfSwKLSAgICB7IEdES19LRVlfaSwg
ICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVJdGFsaWMi
ICAgIH0sCi0gICAgeyBHREtfS0VZX0VzY2FwZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICB9LAotICAgIHsgR0RLX0tFWV9ncmVhdGVyLCAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwK
LSAgICB7IEdES19LRVlfVGFiLCAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJbnNlcnRUYWIiICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgR0RLX1NI
SUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICB9LAotICAgIHsg
R0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklu
c2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfS1BfRW50ZXIsICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZ
X0lTT19FbnRlciwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3
TGluZSIgICB9LAotICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19LRVlfS1BfRW50
ZXIsICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsi
IH0sCi0gICAgeyBHREtfS0VZX0lTT19FbnRlciwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9WLCAgICAgICAgIEdE
S19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlBhc3RlQXNQbGFpblRleHQiIH0sCisg
ICAgeyBHREtfS0VZX2IsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlQm9sZCJfcyAgICAgIH0sCisgICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NP
TlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIl9zICAgIH0sCisgICAg
eyBHREtfS0VZX0VzY2FwZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q2FuY2VsIl9zICAgICAgICAgIH0sCisgICAgeyBHREtfS0VZX2dyZWF0ZXIsICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiQ2FuY2VsIl9zICAgICAgICAgIH0sCisgICAgeyBH
REtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0VGFiIl9zICAgICAgIH0sCisgICAgeyBHREtfS0VZX1RhYiwgICAgICAgR0RLX1NISUZUX01B
U0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiJfcyAgIH0sCisgICAgeyBHREtf
S0VZX1JldHVybiwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0
TmV3TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZX0tQX0VudGVyLCAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZ
X0lTT19FbnRlciwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3
TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZX1JldHVybiwgICAgR0RLX1NISUZUX01BU0ssICAg
ICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJy
ZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX0lTT19FbnRlciwgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX1YsICAg
ICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiUGFzdGVBc1BsYWluVGV4
dCJfcyB9LAogfTsKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+IGhhbmRsZUtleUJpbmRpbmdzRm9y
TWFwKGNvbnN0IEtleUNvbWJpbmF0aW9uRW50cnkqIG1hcCwgdW5zaWduZWQgbWFwU2l6ZSwgdW5z
aWduZWQga2V5dmFsLCBHZGtNb2RpZmllclR5cGUgc3RhdGUpCkBAIC0yNjcsNzEgKzI2Nyw3MSBA
QCBWZWN0b3I8U3RyaW5nPiBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXlFdmVu
dChHZGtFdmVudEtleSogZXZlbnQpCiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0
aW9uRW50cnkgcHJlZGVmaW5lZEtleUJpbmRpbmdzW10gPSB7Ci0gICAgeyBHREtfS0VZX0xlZnQs
ICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZUxlZnQiIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX1NI
SUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAg
ICJNb3ZlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkQmFja3dhcmQiIH0sCi0gICAg
eyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNL
LCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlf
S1BfTGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29y
ZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW8iIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiB9LAotICAg
IHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19L
RVlfUmlnaHQsICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3Zl
V29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tF
WV9SaWdodCwgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVX
b3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQs
ICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVVwIiB9LAotICAgIHsgR0RLX0tFWV9L
UF9VcCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIg
fSwKLSAgICB7IEdES19LRVlfVXAsICAgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQ
X1VwLCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiB9LAotICAgIHsgR0RLX0tFWV9L
UF9Eb3duLCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3du
IiB9LAotICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAg
ICAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9LUF9Eb3duLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIg
fSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0hvbWUs
ICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5u
aW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3Vt
ZW50IiB9LAotICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19DT05UUk9MX01BU0ssICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIH0sCi0gICAgeyBHREtf
S0VZX0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92
ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19L
RVlfS1BfSG9tZSwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9FbmQsICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVU
b0VuZE9mTGluZSIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZ
X0VuZCwgICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9FbmQsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAg
IHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiIH0sCi0gICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAg
R0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9QYWdlX1VwLCAgICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX0tQX1Bh
Z2VfVXAsICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCIg
fSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9LUF9QYWdlX1VwLCAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlRG93biIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rp
b24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsg
R0RLX0tFWV9EZWxldGUsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkRlbGV0ZUZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgfSwKLSAgICB7IEdES19L
RVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkRm9yd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfQ09OVFJP
TF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgfSwKLSAgICB7IEdE
S19LRVlfQmFja1NwYWNlLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE
ZWxldGVCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgfSwKLSAgICB7IEdES19L
RVlfQmFja1NwYWNlLCAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIiB9LAotICAgIHsgR0RLX0tFWV9h
LCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlVuc2VsZWN0
IiB9LAotICAgIHsgR0RLX0tFWV9zbGFzaCwgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAg
ICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwKLSAgICB7IEdES19LRVlfYmFja3NsYXNoLCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJVbnNlbGVjdCIgfSwKLSAgICB7IEdE
S19LRVlfeCwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJD
dXQiIH0sCi0gICAgeyBHREtfS0VZX2MsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiQ29weSIgfSwKLSAgICB7IEdES19LRVlfdiwgICAgICAgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJQYXN0ZSIgfSwKLSAgICB7IEdES19LRVlf
S1BfRGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJDdXQiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0luc2VydCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAg
ICAgICAgICAiQ29weSIgfSwKLSAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJQYXN0ZSIgfQorICAgIHsgR0RLX0tFWV9MZWZ0LCAg
ICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0s
CisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZUxlZnQiX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfU0hJRlRfTUFTSywg
ICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwK
KyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJNb3ZlV29yZEJhY2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAg
ICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJf
cyB9LAorICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtf
U0hJRlRfTUFTSywgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAg
ICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01B
U0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW8iX3MgfSwKKyAgICB7IEdES19L
RVlfUmlnaHQsICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
UmlnaHQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiX3MgfSwKKyAgICB7IEdES19LRVlfUmlnaHQs
ICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRG
b3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9z
IH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAg
eyBHREtfS0VZX1VwLCAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTW92ZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1VwLCAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX1VwLCAg
ICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9k
aWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1VwLCAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0Rvd24sICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZURvd24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biJfcyB9LAorICAgIHsgR0RL
X0tFWV9Eb3duLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0Rvd24sICAg
ICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlT
ZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiX3MgfSwKKyAgICB7
IEdES19LRVlfS1BfSG9tZSwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBH
REtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVB
bmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RL
X0tFWV9Ib21lLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdE
S19LRVlfS1BfSG9tZSwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBH
REtfS0VZX0VuZCwgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TW92ZVRvRW5kT2ZMaW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIl9zIH0sCisgICAg
eyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0VuZCwgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAg
ICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1
bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19L
RVlfRW5kLCAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3Zl
VG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0VuZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5k
T2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9QYWdlX1Vw
LCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiX3Mg
fSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNl
bGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIEdES19TSElGVF9NQVNL
LCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwK
KyAgICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlUGFnZURvd24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iX3MgfSwKKyAg
ICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAg
ICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlf
S1BfUGFnZV9Eb3duLCBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFn
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfRGVsZXRlLCAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRGVsZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9EZWxldGUsICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9z
IH0sCisgICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1Nw
YWNlLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2Fy
ZCJfcyB9LAorICAgIHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0JhY2tT
cGFjZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEJh
Y2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFT
SywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZX2EsICAg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiVW5zZWxlY3QiX3Mg
fSwKKyAgICB7IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAg
ICAgICAgICAgICJTZWxlY3RBbGwiX3MgfSwKKyAgICB7IEdES19LRVlfYmFja3NsYXNoLCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJVbnNlbGVjdCJfcyB9LAorICAgIHsg
R0RLX0tFWV94LCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
IkN1dCJfcyB9LAorICAgIHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIkNvcHkiX3MgfSwKKyAgICB7IEdES19LRVlfdiwgICAgICAgICAg
ICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJQYXN0ZSJfcyB9LAorICAgIHsg
R0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAg
IkN1dCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIkNvcHkiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJQYXN0ZSJfcyB9CiB9OwogCiBW
ZWN0b3I8U3RyaW5nPiBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXl2YWwodW5z
aWduZWQga2V5dmFsLCB1bnNpZ25lZCBtb2RpZmllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCBhODZiMzRkZGFhOGY3MTVl
MWM5NDdiODk0M2NlZmQ5MjEzOWM0MTMwLi5lMzE4ODlmMzQ0YzRhNjNkZjVlNWU2NTllMjQyMWY0
YzkxMDQ4Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzUG9vbFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29t
bWFuZHNQYXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVy
bFJlZi5nZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BB
VEgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNzJhY2QwMWYyYTZhNmYyOGJjYWVj
NTNjYzUxZGMuLjlkN2U3MWMyMjg5MWYyMjMzNDY2Y2E2OTcxMjM5OWEyNzJjY2U5YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBX
ZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNl
dFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBt
X3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiKTsKKyAgICBtX3BhZ2UtPnNl
dFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
OjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJlIG1hdGNoZXMgV2ViS2l0IHdp
biwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1N2I4ZjAwNzczNjU1MGU1NmZhNWE0YWZmNGM2Ny4uNDRj
YmY3M2M2YWQxNTVjZTI2MjllMDFhNDc0OThjMjUyOGNlYzQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtNzMzLDEwICs3MzMsMTAgQEAgdm9pZCB3ZWJraXRXZWJQ
YWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmEKIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IFN0
cmluZygiR2V0U25hcHNob3QiKSkgewotICAgICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RP
cHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihzdGF0aWNfY2FzdDxBUEk6OlVJ
bnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdE9wdGlvbnMiKSktPnZhbHVlKCkpOwotICAgICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdl
LmdldCgiQ2FsbGJhY2tJRCIpKS0+dmFsdWUoKTsKLSAgICAgICAgU25hcHNob3RSZWdpb24gcmVn
aW9uID0gc3RhdGljX2Nhc3Q8U25hcHNob3RSZWdpb24+KHN0YXRpY19jYXN0PEFQSTo6VUludDY0
Kj4obWVzc2FnZS5nZXQoIlNuYXBzaG90UmVnaW9uIikpLT52YWx1ZSgpKTsKLSAgICAgICAgYm9v
bCB0cmFuc3BhcmVudEJhY2tncm91bmQgPSBzdGF0aWNfY2FzdDxBUEk6OkJvb2xlYW4qPihtZXNz
YWdlLmdldCgiVHJhbnNwYXJlbnRCYWNrZ3JvdW5kIikpLT52YWx1ZSgpOworICAgICAgICBTbmFw
c2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25z
PihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdE9wdGlvbnMi
X3MpKS0+dmFsdWUoKSk7CisgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdGF0aWNfY2Fz
dDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIl9zKSktPnZhbHVlKCk7Cisg
ICAgICAgIFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9u
PihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiJf
cykpLT52YWx1ZSgpKTsKKyAgICAgICAgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQgPSBzdGF0
aWNfY2FzdDxBUEk6OkJvb2xlYW4qPihtZXNzYWdlLmdldCgiVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
Il9zKSktPnZhbHVlKCk7CiAKICAgICAgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdEltYWdl
OwogICAgICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gcGFnZS0+cHJpdi0+d2ViUGFnZTsKQEAgLTc2
NSwxMCArNzY1LDEwIEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktp
dFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIH0KIAogICAg
ICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZVJlcGx5OwotICAgICAgICBtZXNz
YWdlUmVwbHkuc2V0KCJQYWdlIiwgd2ViUGFnZSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQo
IkNhbGxiYWNrSUQiLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKLSAgICAgICAg
bWVzc2FnZVJlcGx5LnNldCgiU25hcHNob3QiLCBzbmFwc2hvdEltYWdlKTsKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoIldlYlBh
Z2UuRGlkR2V0U25hcHNob3QiLCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1lc3Nh
Z2VSZXBseSkpLnB0cigpKTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSJfcywgd2Vi
UGFnZSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIkNhbGxiYWNrSUQiX3MsIEFQSTo6VUlu
dDY0OjpjcmVhdGUoY2FsbGJhY2tJRCkpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJTbmFw
c2hvdCJfcywgc25hcHNob3RJbWFnZSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90Il9z
LCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1lc3NhZ2VSZXBseSkpLnB0cigpKTsK
ICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCmluZGV4IGZl
MGQ0MDE4ZTNmODA5YzVmMjdiZTMyZDQ1YWZlZjFiZjkyMDFjODEuLmE5Y2RhYzljMDkxMTRlMmQx
MzYyMjNhOWE3MjVlZmVhYzU3YWE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURvY3VtZW50R3RrLmNwcApAQCAtMTkwOSw5ICsxOTA5LDkgQEAgZ2NoYXIqIHdl
YmtpdF9kb21fZG9jdW1lbnRfZ2V0X3Zpc2liaWxpdHlfc3RhdGUoV2ViS2l0RE9NRG9jdW1lbnQq
IHNlbGYpCiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CiAgICAgc3dpdGNoIChpdGVtLT52aXNpYmlsaXR5U3RhdGUoKSkgewogICAgIGNhc2UgV2ViQ29y
ZTo6VmlzaWJpbGl0eVN0YXRlOjpIaWRkZW46Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4
U3RyaW5nKCJoaWRkZW4iKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoImhp
ZGRlbiJfcyk7CiAgICAgY2FzZSBXZWJDb3JlOjpWaXNpYmlsaXR5U3RhdGU6OlZpc2libGU6Ci0g
ICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKCJ2aXNpYmxlIik7CisgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKCJ2aXNpYmxlIl9zKTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRv
ckNsaWVudFdQRS5jcHAKaW5kZXggNDUyY2YwY2M4YzdhNjY1MzA0NWY5YWUxMzVhMDU0ZWUwNzYz
M2RhMy4uMzM4NGZhMjU4YzIwZjQ0NmYyMTJkYWUyYzI0ZGM5ZDgxMjJiYWQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JD
bGllbnRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50JiBldmVudCkK
IAogc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50
JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50KQogewot
ICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICBT
dHJpbmcgY29tbWFuZE5hbWUgeyBpbnRlcnByZXRLZXlFdmVudChldmVudCkgfTsKIAogICAgIGlm
ICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgdm9p
ZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25z
dCBQbGF0Zm9ybUtleQogCiBzdGF0aWMgdm9pZCBoYW5kbGVLZXlEb3duKEZyYW1lJiBmcmFtZSwg
S2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpCiB7Ci0g
ICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0
cmluZyBjb21tYW5kTmFtZSB7IGludGVycHJldEtleUV2ZW50KGV2ZW50KSB9OwogICAgIGlmIChj
b21tYW5kTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGZjMjQyMDQx
NjRjYTk5Yzc4MzlmNTg3MzkzMjM0Li5hMmUxYzEzMTUwNTI3YTJlMDE2NTA3MTJiNDlkZTdlZTkx
ZTY5NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzg1Miw3ICszODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAo
ZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUg
dG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJv
dW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21h
aW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNl
ciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9H
X0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBh
Z2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFn
ZUdMaWIuY3BwCmluZGV4IDliYWE3Mjg4NGE4OTA1NmY1NzY0ODkyMmYwMmRjNzgyYjA4OTFhZWQu
LjFjOTM2OWRjOGI4ZDgzM2QxYTE1YjA0M2JiZDFkNjAzY2JjNzkxZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBA
IC0xMTQsMjIgKzExNCwyMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUo
RnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBjb25zdCBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLmVkaXRvcigpOwogICAgIGlmIChz
ZWxlY3Rpb24uaXNSYW5nZSgpKSB7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5
bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpID09IFRyaVN0YXRlOjpUcnVlKQorICAg
ICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwg
ImJvbGQiX3MpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAgICAgICBpZiAoZWRpdG9yLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJpU3Rh
dGU6OlRydWUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlGb250U3R5bGUsICJpdGFsaWMiX3MpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAg
cG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotICAg
ICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAg
ICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIl9zKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJs
aW5lOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSA9PSBUcmlTdGF0ZTo6
VHJ1ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIl9zKSA9PSBUcmlTdGF0
ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0g
QXR0cmlidXRlU3RyaWtlVGhyb3VnaDsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5pc0NhcmV0
KCkpIHsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgImJvbGQiKSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFy
dEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQogICAgICAgICAgICAg
cG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAgICAg
ICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUs
ICJpdGFsaWMiKSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSkKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLSAgICAgICAgaWYgKGVk
aXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25T
dGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1
bmRlcmxpbmUiX3MpKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRl
cyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3Rh
cnRIYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGlu
ZS10aHJvdWdoIikpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIl9z
KSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlU3RyaWtlVGhyb3VnaDsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
CmluZGV4IDJmMjFmMmJlZjNjOWJiZjYzMTIzNTIwY2RmOWY4Nzk2NzE4NWNhMDEuLmMyZmJjYmM5
MDY5YzYyNDcxNzc5YjdlYmNkMGU5ZGVmNzhkZGQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZ3RrX3ByaW50
X2pvYl9nZXRfc3VyZmFjZShtX3ByaW50Sm9iLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwogICAg
ICAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgICAgIHByaW50RG9uZShwcmludEVycm9yKGZy
YW1lVVJMKCksIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgICAgICBwcmludERvbmUocHJpbnRF
cnJvcihmcmFtZVVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBwcmludEpvYkNvbXBsZXRlKEd0a1ByaW50Sm9iKiwgV2ViUHJp
bnRPcGVyYXRpb25HdGtVbml4KiBwcmludE9wZXJhdGlvbiwgY29uc3QgR0Vycm9yKiBlcnJvcikK
ICAgICB7Ci0gICAgICAgIHByaW50T3BlcmF0aW9uLT5wcmludERvbmUoZXJyb3IgPyBwcmludEVy
cm9yKHByaW50T3BlcmF0aW9uLT5mcmFtZVVSTCgpLCBlcnJvci0+bWVzc2FnZSkgOiBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yKCkpOworICAgICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnREb25lKGVy
cm9yID8gcHJpbnRFcnJvcihwcmludE9wZXJhdGlvbi0+ZnJhbWVVUkwoKSwgU3RyaW5nOjpmcm9t
VVRGOChlcnJvci0+bWVzc2FnZSkpIDogV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpKTsKICAgICAg
ICAgcHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IgPSAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMy
OWE5MGMzNzRmZjAwZWYxMmRjMDlmZjQyNWVjOTY0MjE0YzQ3Li4zNGZmMmQ0MDU4Nzc4OGQxOGFm
YmYwOTY2ZmVhMzI4NWQ5M2ZiMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBX
ZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNl
IFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIsCi0g
ICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6
Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTki
LCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAg
IlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAi
S2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAgICAg
ICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
ImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJVKzAw
NDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
OjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJLZXlV
Il9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUi
X3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQYWdl
OjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1Mx
M0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAg
ICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJf
MV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5h
bWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAppbmRl
eCBiYjUxMmFlYzM0NTA2YWE1ODhhNzM2YjZkY2Y2YjZmM2I2NjllMzQyLi43NjQ0M2E5NDI1NGFl
NGZlOGU1OGY4MDdiYWE1MjE1NmMzNjdkMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZl
bnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1h
dGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0YzgzMzE5ZDRhMzkxMDZjNDNh
NmNlNTAyNWFiMi4uYjdmZTgwMDRlNDhmZjZlODk3Y2E5MjI2Y2Q4NWJiNjUwYTZmZDE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04
Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZp
ZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAg
ICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Yg
d2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVT
aWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4K
LSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
ciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBp
ZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4
IDM5ZDg2MGMyOTVhN2MwOGYwYTdmOTY4MzkzYTM4MzU1YjQwZjg0NDYuLmEyNjJiZmMxNDAyOWY0
NzZkNDRhYTc5YjdmYTBhN2JmMjY4NDEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5t
bQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBE
b2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5
U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4
dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIs
IGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygp
LT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAg
IHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3Vt
ZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxs
cHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3NmI2ZDEyYzRjNDU4MTM5ZjMwODI1OGQ5M2ZmMy4uMDk4
ZjhlYzI5NjA2YzBjYzRhMzc5YjZjNjExZDBkZjJjZDA5ZDU5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3Ry
aW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxl
ZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFy
T2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50
KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZh
MTllNmQ5MWZjYjNiZmM4MWNjYTkxZWM3ZTBlNTZjNDI4Li5iYzJhMzJlYTMzOTRhYTM4M2Q3ZTZk
ZmMyMjRlNmYwY2Y5YmI2YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVm
ZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNv
ZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNv
ZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1YmEx
NzQ0YzQxZDk2MjgzMDcxOGQ5MTE5MGExZDguLmYxNGZhMzk5NGY0YWZhYmJjZTViMDFiOTk0NTc1
MmRhOTlhODExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRo
U3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJl
ZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwot
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJB
cHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0
b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2
YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5YTExYzY5MGVm
ZDFkYzQyNjUwOWZlZGYzNGRjYTY3NC4uYzI5MGRhZTM3OTQzOWVlZTMxMjhiZTNkMjM1NzYwYzdj
NzAzMTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApA
QCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmop
OwogICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6
fkFjY2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2li
bGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2lu
ZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYzIxNDAwYmVlODg3ZWQxMTE5YjM2OWZmZTYwMDMu
LmE1YzA3ZWI5MTJmYmJmMTE3MTRiNmU5ODY3NjliMjk2ZjczZjk3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3Bl
cnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7
CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIyMmNmMDU2YTk3
YjcxOTY1MDRkOTY3YWUwZmMyLi4zMDJmNjM3YWJjMDI0MTI3NGNiZTIwNTEwNjljMjg5NWU3ZjZl
MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2Fk
RGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25s
b2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6fkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKICAgICBIYXNoU2V0
PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVnaW4oKTsKICAgICBm
b3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgqaSktPlJlbGVhc2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxl
Z2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUu
Y3BwCmluZGV4IGU4ZTVmNWM0Y2MxMWExMjA4M2JiZTRiNTE4YjJjNDg2ZWQ1NjhjODkuLjFmYThj
MzU0ZGZiYTExNzliZDczZTM0ZGVkMmE4OWRiM2Q0YWU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEz
IEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5
RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURl
bGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi45
ZGE1OTYwNTY0YTViMjZiNjU3Y2Q2ZGFlNDBmNjYzMGI2MWFkYmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJl
YW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0o
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJN
ZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVh
bSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Zjkx
ZjI5NmM0ZTRkODA1MjRmM2EyZTNjYjE2NC4uZTk3YzQxMzI0NzE2OTdjOWNmMTljYzE5YTU2NDQ5
OWUyOWEwMjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9u
UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblBy
b3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjpX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0
CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJB
Y3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFn
Il9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5QmFnOjpj
cmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA4ZjI3MTYyYmJh
ZjE4ZWUxYzExOGI5NTExZjUxYjQ3ZTQ0ODU3NzRjLi5mMzEwMmU1MjY4N2U5YzJkNTViYjY2YTg3
OGIwNGExY2Q2M2FlNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGU6
OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsK
IH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlv
bkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNo
ZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5nIGFwcGxp
Y2F0aW9uQ2FjaGVQYXRoKCkKIAogV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBw
bGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNo
ZSJfcykubGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1
Y2QzY2RjZGIxZmYuLjE3ZGViYzQ4N2U1NDJmY2UzYjcyZjZjMzE1NWM5MDk2ZTQwMjY5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAg
V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJj
aGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNo
aXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBX
ZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNDc4MmRiZTIzZTY5YzQ3YTBhNDFjZWFhZmFh
NTIuLjExNmFhNDIwMTc2OGQ4MjU0NTk3ZDZhNTExYzViOTgyMzUwN2Y2YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQs
NyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0Zv
cndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJz
KCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdl
YkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBA
IFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0Zvcndh
cmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3
YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRM
aXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRlODUwZTcxM2IwMzQ4OTBjNTU3
MzYxNGIzMzY4MmRlMjg5NGFjOGMuLjhiMTZiNDNkNDFmOWYzMzg0ZTgwYzI4YWE1YTI4MTJjMTVk
ZWIzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKQEAgLTQ3LDEzICs0Nywx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNhY2hlOjpXZWJDYWNoZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hl
Ojp+V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
Q2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZSogV2ViQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCAzNTY5
ODNjNTJiMzc0OGE0Y2RiY2E1YWQ5MWY5NTM1MTJhODg5YmUwLi5mMTMxNmRlNDZjMjEzNWE2ZDI2
ZmFiOWQxNDRkZWIzZjgxZjA4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwog
fQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3Rp
Y3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9z
KTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0
YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2
YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0
ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmlu
ZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmpl
Y3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAg
IHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAg
IHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVl
KTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9w
ZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRz
LmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNV
TFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0
cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMt
PmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3Ig
KEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAh
PSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXks
IGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJy
ZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+
IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5
cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7
CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlT
dGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2Jh
bE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0
aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVz
ZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9j
U3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9j
Q29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1h
bGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RN
YWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0
TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNj
cmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVl
U2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5
dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmll
bGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAg
ICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRl
cykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOwor
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZp
ZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQo
IkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGds
b2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3Bl
cnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlh
NmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5iOWY0MTA5MzU5YjM2ZDUxY2FjYTQzMzM4
ZDkyOTFkMjVmY2Q4NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1l
bnQqIGUsIEtleWJvYXJkRXZlbnQqIGtlKQogICAgICAgICBpZiAoZG9tRWxlbWVudCkgewogICAg
ICAgICAgICAgSURPTUhUTUxJbnB1dEVsZW1lbnQqIGRvbUlucHV0RWxlbWVudDsKICAgICAgICAg
ICAgIGlmIChTVUNDRUVERUQoZG9tRWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01IVE1M
SW5wdXRFbGVtZW50LCAodm9pZCoqKSZkb21JbnB1dEVsZW1lbnQpKSkgewotICAgICAgICAgICAg
ICAgIFN0cmluZyBjb21tYW5kID0gbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSk7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgeyBtX3dlYlZpZXctPmludGVycHJldEtleUV2
ZW50KGtlKSB9OwogICAgICAgICAgICAgICAgIC8vIFdlIGFsbG93IGVtcHR5IGNvbW1hbmRzIGhl
cmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUgYWN0dWFsbHkgZGVwZW5kcyBvbiB0aGlzIGJlaW5nIGNh
bGxlZCBmb3IgYWxsIGtleSBwcmVzc2VzLgogICAgICAgICAgICAgICAgIC8vIFdlIG1heSB3YW50
IHRvIHJldmlzaXQgdGhpcyBsYXRlciBiZWNhdXNlIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vu
c2UgdG8gc2VuZCBhbiBlbXB0eSBjb21tYW5kLgogICAgICAgICAgICAgICAgIGZvcm1EZWxlZ2F0
ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9tSW5wdXRFbGVtZW50LCBCU3RyaW5nKGNvbW1hbmQpLCBr
aXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgJnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDllZmI3OWQ5NGE5ZDM1NjJiMDZkYmRl
ZjI3MWU1ZDhjNzMuLmY3OGMxYmQyYTg1MmI3NGYxNmQ4MjAzNTdmYTYyNzlmMjE2Y2Y1ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2U6On5XZWJE
YXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3Vy
Y2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwogICAgIFdlYkRhdGFT
b3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0YVNvdXJjZTo6Y3Jl
YXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3MjAzMTVjMzkzM2Nk
YzIyZTQyNTJlM2VhMzM4ZmY4OTI1NDYuLjhmMzc2NTQxMjU2ZGM2YWVkMTA3ZTA1MTMxMzhmMGVm
MzMxNDNlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRh
YmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0
YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJE
YXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDkyZDBmYTcyY2Q2ZjQyOGE1MmExYzEwOGE4OGU3ZTNhMTkxZDY3ZjMuLjI1NmEz
NTg4MDdkN2VhMjU4MmM2NmI2MjhlZWMzYzkxOTAxMjgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9j
dW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNoZWREYXRhU291cmNlKDApCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50TG9h
ZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciJfcyk7
CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRh
KQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9h
ZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRM
b2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiAgICAgaWYgKG1fZGF0
YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0YWNoZWREYXRhU291cmNlKTsKICAgICAg
ICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2YWIxNmNlZWM2ZWIxZTRhZGQzZmFkYzJmZDczOS4u
OTk0NjkwNDU1MWMwY2M2ZDFjZTFjYmU5Mjg4Y2E3M2E4YmI2OGYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkOjp+
V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9hZDo6fldlYkRvd25sb2Fk
KCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQg
KCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9hZCogV2ViRG93bmxv
YWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAKaW5kZXggMTgxMGE2Njg1ODE4MTEwZTc3YzY5OWQ2MDBiZmM4YWI3ZDE0NmNm
NC4uZmM2NGI5YmM5OTk3ZDg0MjBhYjVjMTcwOWMzMTlmOTI1MmMxODc1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBA
QCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5f
b3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBu
ZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJD
YW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1
dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9y
PiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAg
ICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4
OWZhM2M5ZDY5OTVjZGM3YjliNzhjZTc1MjdlNjY5MC4uNWIxYzVkZmM3ZTg3MWJiMGQ4OGVmMjdi
ZjZmNGM0YWZlNjQyNjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RHJvcFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJj
ZS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJvcFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BT
b3VyY2U6On5XZWJEcm9wU291cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSJfcyk7CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9w
U291cmNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVs
ZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50
UHJvcGVydHlCYWcuY3BwCmluZGV4IDhhZmJhMGY2ZDUzYWZkNTU1ODQ1YzE5NTM2YzJhOWMxZWM1
ZjM3ZDAuLmM2MWYxNzJkNDdmYjMxNzhiOWUwNzRjMjc5ODNkYWVjMjFhMGU1NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAt
NDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5
QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICA6IG1fcmVzdWx0KG1ha2VVbmlx
dWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVt
ZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyogV2ViRWxlbWVudFByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTlkZTM3MWJlYTFjMTE2ZmQ3NjZkNmEzOTRkYjRl
YTgwZmJkYmZjMi4uNzE2MTIxOTIzM2ViYzEwYWMyODIzMjU2ZGZkZjM3MzZmZjk3ODEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVy
cm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1
c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJF
cnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IDU5NDhiMGVjNWI4MGQyNzliMjY0MzRmNDJmNDVjZmExN2JmN2ZiY2EuLjA3YmQ0NmZj
OTk4ZTE4ZTM2NzgzMmM2MGFjZmE3NDZiZWI4ZTY2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewog
ICAgIFdlYkZyYW1lQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6On5XZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAg
V2ViRnJhbWU6On5XZWJGcmFtZSgpCiAgICAgZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0t
OwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJG
cmFtZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQog
CiBXZWJGcmFtZSogV2ViRnJhbWU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBA
QCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyht
aW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAg
ICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJp
bmcgPSAidGV4dC9odG1sIl9zOwogCiAgICAgU3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNv
ZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyAr
MTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDJi
OTgyOGEyZTQ0Nzc3NDFjZDU0NzYyNzM5MDc3Li45NDQ2OGJiNzNkMDY1MjY2MDBiNGU4ZTVhZGNk
NmI5MGRmOTY4ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQogICAg
IDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3NDA2YzI1Y2YyMTg5MDlkNWJlMGExYTc1YzA5OS4uNjg5
MmY3NzFhZGRkMWE5MzhlYTE0NDM0MDNjOTdmMzQ5YjBiODNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAK
QEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9s
b2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJf
cyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxNjVmZmU4ZjA4OGM4
N2QwNmRmNDljNjAzNDZiNS4uZmYxZmQ5MGM0Mzc5MzAzZGUzNWMwNGUwNzgyMWUxOTAzNTRmYzEx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdl
b2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdl
b2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJl
cHJlc2VudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5jcHAKaW5kZXggNDZhYWFlOTdkN2JiYmQ2ZWNkMzY3MGJhOTRhM2JhM2NjZmZmODli
ZS4uODZhM2NiNmRhYTI5ZTIyNTBjMzE1NzkxMzVkM2QzNzdlMmFmZGQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Miw3
ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkK
IHsKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAK
IFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCkBAIC01NCw3
ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigp
CiAKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7
CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbiogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjcmVh
dGVJbnN0YW5jZShXZWJGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCmluZGV4IDNmMWViNmQ3MzhiZDNhMjQ1YTFjZjRlYmI4NjBlZjQ5NDkyMWY1NWYuLjUw
YThlNWY2YmNmMzBhYTQ4NDU0YmUwZDllMTJiOWM4ZDEzYTNiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09N
UHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3Rp
ZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcg
QEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwog
fQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2YWMzMmRj
ZjVjZjUwMTFjMzU0ODE3MWE2YzNiZS4uOGRkOWJkYWFhMjg4NzBjMGNmMzQyYzI0ODI3MTI1ZTZh
YTUzMDUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBXZWJIaXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhp
c3RvcnlJdGVtPiYmIGhpc3RvcnlJdGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQo
bV9oaXN0b3J5SXRlbS5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJI
aXN0b3J5SXRlbSgpCkBAIC02Miw3ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9y
eUl0ZW0oKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5n
ZXQoKSk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnlJdGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNw
ZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRl
eCBmNjIxOWE2NmRhYTk1ZGM1NjIyNDE1YjNmOTkwMzc1ZTdiN2ZiNzJjLi40NDdkOTJhM2EzY2Nk
YTU2YTIyNTJiODI2NGM2NTQ1NThhYzYyZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3Bl
Y3RvcihXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3Bl
YwogICAgIEFTU0VSVF9BUkcoaW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVj
dG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQog
CiBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6OmZyb250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhl
NGJlOGFjMjFiZGI2NjE4ZDViY2IxMmIxOTk2NWM5MjkxN2M5Yy4uNzU4NjYyNzJkNWY3ZGNiM2E1
YTA4NjJlYmM5YTQxN2ZlYjcyYjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRD
b2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rv
cjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0K
IAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xh
c3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9y
eS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3N2M3ZWVmOGRiOGQ3NDY0M2Y5NTJhM2FmMWE1Ni4uNmVl
MDcyNTMyZWU0MDkxYWFjYTIwZjQ4MWJhMzNkZDEwM2I0ZGM1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAg
V2ViS2l0Q2xhc3NGYWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3Mp
CiAgICAgV2ViQ29yZTo6cG9wdWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBX
ZWJLaXRDbGFzc0ZhY3Rvcnk6On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3Rvcnki
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdE1lc3NhZ2VMb29wLmNwcAppbmRleCA5MzdhNjY2OWU5MDhmZWU2MDdiYzQxZDViOTI3
N2M3YTYwMWRlZDY5Li5lNjljMGM4MDg5OGJmNzE1MDhiMDMyZDk5MjE4YmQxMmY3NTk1YWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0z
NCwxMyArMzQsMTMgQEAKIFdlYktpdE1lc3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1l
c3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9v
cCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRN
ZXNzYWdlTG9vcCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2Fn
ZUxvb3AiX3MpOwogfQogCiBXZWJLaXRNZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGlj
cy5jcHAKaW5kZXggMTI2M2JjMGMxMWY5OGYxZGZlYzdlZjhkZjc4ZTliZGY4YmFjOTBjZC4uZjUx
NTFjYmUwYmI2ZjZkMDYyMzM5YTQ5MGJkZmNiNDc3YThmNGU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQg
V2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0
U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGlj
cyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3Rh
dGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUlu
c3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjY5ZWJiMzQyNTAzY2M3MTAzMTk0YzMxMTVlNWU3Li4y
NDQxMDY2ODg2NzZmNTcyYjk2ZDkyNWJmZjFhYjA1NjhlNmFkYTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0
YWJsZSkKICAgICA6IG1faXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAog
V2ViTXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5j
ZSgpCkBAIC05Myw3ICs5Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6Y3JlYXRlSW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6fldlYk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTmF2aWdhdGlvbkRhdGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNmM5NDg1YWZhNzUwM2EyMzMz
MWE4Mjc2ZjI2NzAuLjZhOTMzYWJiNWY4NzI2YWFlMmYxZjE5MmJmODA1YzRiYzJjZGM1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcy
LDEzICs3MiwxMyBAQCBXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhOjp+V2ViTmF2aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQog
CiBXZWJOYXZpZ2F0aW9uRGF0YSogV2ViTmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVx
dWVzdCwgSVdlYlVSTFJlc3BvbnNlKiByZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwg
Y29uc3QgU3RyaW5nJiBjbGllbnRSZWRpcmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IGY1M2JiNzI2MzUzZjc2YWNhMDY4YThkZmRj
N2Y4YjE0OTFkZDYzMzguLjk0OTI1NmVlODAyMmZjNGEzZDcxN2YxYTM5YThjNTlhMWYwNWM3YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElV
bmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5B
ZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlm
aWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBA
IC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAg
ICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlv
biogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5r
bm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmlu
ZGV4IDkyNTMyZGJkY2E0MWI4NTMxZTkxNjhjZGRkZTMxYjU3YTdmNDU2YjUuLjZjZDg4NDJlN2Ew
Njc1ZWFhMGFmY2EzMGYwZDg2ZmU4YmNkN2FlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdl
Yk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFr
ZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7
CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5v
dGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90
aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3Rp
ZmljYXRpb25DZW50ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWNkZGViYjBlZDg0OTlmZmU5NDBm
NmU0ZjE4NDM0Li5mYjE3M2RkNWMxZTUwNjUxZWMzOTQ5MTdkZDdiMjcyOGZkMGE3N2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0
NywxMyBAQCBXZWJQcmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJl
ZmVyZW5jZXMoKQogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2Vi
UHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVu
Y2VzKiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0
OWEzZTY0YTkuLjNiYmEzMWUzOWQ5NTY5NjhiYzJlNzZkYjE5ZGJkNGRmZWNhMmI5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIwMTJjMWY1
MzkxYTI4YjQ2YTA1OWM5YjBlOGRjLi5kZjA3ODFmNDEyMzliNzA0NWI0NzA3YzViYTliNjNmZjA5
OTNkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAK
QEAgLTM0LDEzICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3Jp
cHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJf
cyk7CiB9CiAKIFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVj
dCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0V29ybGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMDZiM2IwZjE3MjBkZjk1MDU1ZWI0MDM3
MzM2NDguLjdlZjhhNDUzNDYxMWJkOGQyMTY3MjNmZWVhYWYwMTdlMjM5ZDYwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
aW5saW5lIFdlYlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiYmIHdvcmxkKQogICAgIGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsK
IAogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3Jp
cHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3Mp
OwogfQogCiBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVt
b3ZlKG1fd29ybGQuZ2V0KCkpOwogCiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3Jp
cHRXb3JsZDo6c3RhbmRhcmRXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIzZjZiMWZjYTdkMGI0Nzc3ZjBjZDA2MDAy
NDZhMTAwMC4uZWVmMTY0M2I2MTdjMjRkMzA0M2ExYmYwMDZiNmQxMjE3YzhlMTg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMg
KzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJp
dHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2lu
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNl
Y3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXgg
OGJiODBhMmZjYTI5MjdlMjRjZmQwMGY4NjE2Y2I2MTc1NzYxNWVlZC4uN2YxMWRmNWZmZTE2NTEx
MWFmMTU5NTM0NDZiZjcxMmNmZGQ2ZDJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1Zh
bHVlKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNl
cmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJp
YWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJp
YWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZh
N2Y2Nzg5Yzg3YTM3MzI3N2ZjZGQ1OWJlZjgyMzU4ZWQuLjA0NTM1ZjNmNzIzMTZmNDJhMzEwOTdj
ZjYwMzg1ZWVlMGMxZTg0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlRleHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJl
bmRlcmVyLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJl
bmRlcmVyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJl
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRl
cmVyIl9zKTsKIH0KIAogV2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJl
bmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIi
X3MpOwogfQogCiBIUkVTVUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBS
RUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAKaW5kZXggNTk3ODhjNGY1ZTI0Zjg5NWJmYWU0M2M2MDU5MWE0NWFmZTNkNjY1MS4uNDBiN2I2
NmZhN2FhZDFiYWVlMjY3ZjYxZDFkNzEzNzE0YjNmNDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApA
QCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRl
cihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUlu
c3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2NhMDVk
Yzc2ZGU2MzU2N2JjZTZmZTlkZGNhNmYxLi41MDk5YmEwYWYxN2JlM2MzN2M3OTlmZjA1N2JmMDBh
MWY5YmM2Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIs
MTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9z
KTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjU0NzJlODFiY2Y3YjM4Zjli
MGMzMTg5NjE2MTlmLi5hNTMxZDEwNjk5NTJlOWQ1NjJiMTRkMjZlYWVjODUzZjY0NjJmZThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcs
MTMgKzM3LDEzIEBAIFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVk
ZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9z
KTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50
aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9z
KTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlv
blNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFj
ZS5jcHAKaW5kZXggMTllZDk2ZjgyMTBkODkzOWE5ZWVjYTJjNTFhMmQ4MzRiZTgwMGU1MC4uMzFi
MDlhYzRjYjQ0NDBmZGU5MTdmNDY1MGVlMTZlNmEzNDVjYzg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAK
IFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXgg
YTViMjNkYmZhNTQ5NGMzZTA4MzJlYWQ2ODRlNGZiYmU3MDhiYjUwOC4uNjEyMjk2Y2I1NTAwZDZh
NGU2ZDVhNGI3Y2E0NzkyNzVhNGRjYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2Nh
bGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVS
TFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2Vi
VVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwog
ICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApp
bmRleCA0ODEyMzg0NzEzYzhiOTlkYTVjYmE1YjYzZjI1NDQ0OWZlNTBjNjQyLi5lZGYzMzU4NmIx
YTAxM2FiMThmYjA1NzgyM2ZhOTE4ZjVjZGYxZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm46OldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsK
IH0KIAogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
KCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0ZjY2MWUwMDdl
ZTEyZDBkMTk0NWQzYjc4ZmM5Yi4uZTU1YTI0MmRjZWIyYzU2Nzk0ZTQyOTg4MDM3ZGJlODg5MjU2
MzVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBA
QCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpA
QCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3Vu
dC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0K
IAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwx
MSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQ
YXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAg
ICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21t
YW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRp
dG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5k
bzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhl
Y3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8i
X3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZy
YW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6Omhh
bmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkg
IT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2
ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5k
KFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApA
QCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhl
Y3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVT
VUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVS
TChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7
CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0
cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxl
dGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtl
cnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYyYmU2Y2M3MGQ2OGMzNWJmOTBhZmExODU5
ODY4Li4yZTkzMWUwOGU3NzI2N2IyMjMxMDdhNTgzODgxYTU0OWQ3ZWYxODIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSArOTAs
MTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0YW5j
ZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQog
CiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9zKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBj
MWQ0Zjg0MTkwYjEzMDk3NTFiMzA0NGMzNzBmZGY2ZjgwMmQ5MjNkLi42NWEzMDZmNGZjZWQ2NWU5
OTVmYmIyZjI4NjVjOGZiMDcwZjI5OGMwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjItMDQtMDMgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFy
KikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpyZWFkQWxsQ2h1bmtzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVC
cm93c2VyUXVpcmspOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9y
VVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3Nl
cnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0VtcHR5UXVpcmspOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDdXJsOjpURVNUX0Yp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJl
cG9ydC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKGNsZWFuVXBJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKToKKyAgICAgICAgKGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3
V2luZG93UHJvcGVydGllcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25QYWdl
SUQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxl
cik6CisgICAgICAgIChXZWJLaXRUZXN0U2VydmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGggY29uc3QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmcpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJp
YnV0ZVNldHRhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNB
dHRyaWJ1dGVTdXBwb3J0ZWQpOgorICAgICAgICAoV1RSOjp4bWxSb2xlVmFsdWVTdHJpbmcpOgor
ICAgICAgICAoV1RSOjpyb2xlVmFsdWVUb1N0cmluZyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6
OnRvSlNPTk9iamVjdCk6CisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
OgorICAgICAgICAodGVzdFN1bW1hcnlQcm92aWRlcnMpOgorCiAyMDIyLTA0LTAyICBBbmRyZXMg
R29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdG8gTWluaUJy
b3dzZXIgdGhlIGFiaWxpdHkgdG8gbG9nIGEgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUg
QVggdHJlZXMgZm9yIHRoZSBjdXJyZW50IHBhZ2UuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdiNzg5YjM1ZWExZWY3MmJkNmM4ZTY0ZTM5Njkw
OGRjOGMxNzZhLi5lMTk2NjhjY2Q3NDliYmU5YTY4OGUwNjg0MzcwODhmZDM2NThhZjg2IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMDQsNyAr
MTEwNCw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0
aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAg
IFN0cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGhP
clVybCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVu
dFBhdGgoU3RyaW5nOjpmcm9tVVRGOChwYXRoT3JVcmwpKTsKIAogICAgIHdjaGFyX3QgZnVsbFBh
dGhbX01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRG
YWxsYmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTExMTUsNyAr
MTExNSw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRo
T3JVcmwpCiAKICAgICBTdHJpbmcgcGF0aFRvQ2hlY2sgPSBmdWxsUGF0aDsKIAotICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiOworICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5k
IHRoZSBsYXlvdXQgdGVzdCByb290IG9uIHRoZSBjdXJyZW50IHBhdGg6CiAgICAgc2l6ZV90IGxv
Y2F0aW9uID0gcGF0aFRvQ2hlY2suZmluZChsYXlvdXRUZXN0cyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5
Njk5OGE2MGM4MzkyYjRmODIyYTc4YjUyNjE0N2Y4Li5mYTYxOGJiMWI3OWI3MGQ3NTcxZTVhNTdi
MTUzMDQ1NmM1YmFlMjRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9Dcm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0Nyb3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3Nz
VGhyZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29u
c3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3Rv
clNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VR
KDF1LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5h
bWVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VR
KDN1LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNv
cHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEo
MXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAg
IEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92
ZUNvbnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9D
cm9zc1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5
IGRpZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBm
dW5jdGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92
ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgx
dSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VS
VF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikp
OworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0x
Il9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dl
ci0xLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1v
dmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJ
TEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKaW5k
ZXggZmZiYTAwYjgwMjFhNWE0NmI4MzFhM2I5N2M0NWRiNGJmM2I0NThlYi4uZTgwNzA3NGY0Y2M1
ZGRjOTM5NWYxM2Y4YjgzMTcyNGM1OTlhMjllOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVT
VChIVFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lm
IFVTRShHTElCKQogVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7
Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2Vi
S2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpLzEwLjAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAg
RVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJL
aXQvMTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
KSAoPC0gRW1wdHkgY29tbWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5e
X2B8fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9r
ZW4gY2hhcmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVY
UEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJL
aXQvMTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkvMTAuMCBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMg
KE1vemlsbGE7IGxpa2UgR2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJB
Z2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsK
KyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAo
PC0gRW1wdHkgY29tbWVudCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7
CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0u
Xl9gfH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBF
Q1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMg
dG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9G
QUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVz
cGFjZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFp
bGluZyBuZXdsaW5lKVxuIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJt
aW5hdGVkIGNvbW1lbnQiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFy
YWN0ZXIpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0
b2tlbikiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
LzEyMyAobWlzc2luZyBwcm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOwor
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJh
aWxpbmcgd2hpdGVzcGFjZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5l
d2xpbmUpXG4iX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkvIChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5h
dGVkIGNvbW1lbnQiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hh
cmFjdGVyKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWly
IGluIHRva2VuKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3Bw
CmluZGV4IGIwMTEyOGIyNmIxY2MwYTIwNWM2NTQxYTQ4NTZiN2YwMmY0OGJjNzYuLjA3YTQ1ZTBl
ZjQxNGJmNzQ5NzEyOTJmYzFjYzJhYTg3NDhhZGQ1MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcg
QEAgVEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5SXNDb250aWd1b3VzKQog
dGVtcGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlz
aXplKCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFs
bENodW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZm
ZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVk
ZVNlcGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3Rv
cjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3Qg
U3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiJfcywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFs
c2UpCiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwg
c2VwYXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVy
Lm5leHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9y
KTsKQEAgLTQ3NywzMiArNDc3LDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRl
c3QsIHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICBhdXRvIGNoZWNrID0gW10oRnJh
Z21lbnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9y
PFN0cmluZz4gY2h1bmtzOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5r
czFXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIs
ICJjdWxvdXMgaCIsICJzdG9yeSB0aGVyZSAiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZj
aHVua3MsIHNoYXJlZEJ1ZmZlciwgImkiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0No
dW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShl
eHBlY3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVh
cigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJh
dG9yW10gPSB7ICJUaGkiLCAicyBpIiwgInMgdGhlIG1vc3QgcmkiLCAiZGkiLCAiY3Vsb3VzIGhp
IiwgInN0b3J5IHRoZXJlIGkiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5r
cywgc2hhcmVkQnVmZmVyLCAiaSIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImkiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVj
a0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShl
eHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigp
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJh
dG9yW10gPSB7ICJUaCIsICIgIiwgIiB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAidG9yeSB0aGVy
ZSAiLCAiLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpcyIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlz
Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENo
dW5rczJXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNl
cGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hh
ciogY29uc3QgZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMi
LCAiIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzIiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKLSAg
ICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOwor
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zLCB0cnVl
KTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5r
czJXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcikp
KTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3Qg
ZXhwZWN0ZWRDaHVua3MzV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCBy
aWRpY3Vsb3VzIGgiLCAib3J5IHRoZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygm
Y2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpc3QiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIsICJpc3QiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0No
dW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShl
eHBlY3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVh
cigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJh
dG9yW10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUg
aXMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlz
dCIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImlzdCJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywg
ZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dp
dGhTZXBhcmF0b3IpKSk7CiAgICAgfTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC01NTcsMTIg
KzU1NywxMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0
ZXJhdG9yKQogICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBz
dGQ6OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtz
LCBzaGFyZWRCdWZmZXIsICJkb2ciKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBz
aGFyZWRCdWZmZXIsICJkb2ciX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhj
aHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVk
Q2h1bmtzV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAg
ICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7
ICJkb2ciIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAi
ZG9nIiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVy
LCAiZG9nIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtz
LCBleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dp
dGhTZXBhcmF0b3IpKSk7CiAgICAgfQogCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBURVNUX0YoU2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRv
IHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihz
aW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0
aG91dFNlcGFyYXRvcltdID0geyAiQmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIg
fTsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0Iik7CisgICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUo
Y2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5
c2l6ZShleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtz
LmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNl
cGFyYXRvcltdID0geyAiQmVhdWNvdXAgZGUgY2hhdHMgY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0
IiwgImNhdCIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJjYXQiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZm
ZXIsICJjYXQiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVu
a3MsIGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtz
V2l0aFNlcGFyYXRvcikpKTsKICAgICB9CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA1ZjkyNTMyNzkx
YTQwZTgzNTIzM2QwYWMxNTgyNTUxN2E5ZGQ1YjAwLi4yZGQ3ZTRhZTdhMDFjMjllZjE0YmU4OWZl
ZGFiMjg1ZDk3NmY5ODAzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0No
cm9tZUJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5n
ID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVh
U3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKCBTdHJpbmcgeyB1cmwgfSkpOwog
CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBF
Q1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiU2FmYXJpIikpOwpAQCAtNDUsNyArNDUsNyBAQCBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29u
c3QgY2hhciogdXJsKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNGaXJl
Zm94QnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcg
PSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFT
dHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAog
ICAgIEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOwogICAgIEVYUEVD
VF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiU2FmYXJpIikpOwpAQCAtNTYsNyArNTYsNyBAQCBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNGaXJlZm94QnJvd3NlclF1aXJrKGNv
bnN0IGNoYXIqIHVybCkKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFj
UGxhdGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0g
c3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3Ry
aW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAg
ICBFWFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiTWFjaW50b3NoIikpOwogICAgIEVYUEVD
VF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKQEAgLTcyLDE0ICs3MiwxNCBA
QCBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNv
bnN0IGNoYXIqIHVybCkKIC8vIHRoYXQgdGhlIHN0YW5kYXJkIHVzZXIgYWdlbnQgc2hvdWxkIGJl
IHVzZWQuKQogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRW1wdHlRdWlyayhj
b25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdl
bnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRV
c2VyQWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVh
U3RyaW5nLmlzTnVsbCgpKTsKIH0KIAogVEVTVChVc2VyQWdlbnRUZXN0LCBRdWlya3MpCiB7CiAg
ICAgLy8gQSBzaXRlIHdpdGggbm8gcXVpcmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4K
LSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCAi
aHR0cDovL3d3dy53ZWJraXQub3JnLyIpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iX3MpKTsKICAgICBF
WFBFQ1RfVFJVRSh1YVN0cmluZy5pc051bGwoKSk7CiAKICAgICBhc3NlcnRVc2VyQWdlbnRGb3JV
UkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0LmNvbS8iKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKaW5kZXgg
MGQwYjAwN2Y2NGVkZTVjNDNkM2FkZGIwYjM4NzI3ZTJhODM3YzNmMC4uNjQzOGYxY2E2YWIxNmFj
NzNmYWI0YTdiZDRmYmY3M2RjYzhjNjgyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTY0LDMwICs2NCwzMCBAQCBwcm90
ZWN0ZWQ6CiAKIFRFU1RfRihDdXJsQ29va2llcywgUmVqZWN0VGFpbG1hdGNoRmFpbHVyZURvbWFp
bikKIHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwgdXJs
IHsgImh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZG9tYWluIG1h
dGNoCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZv
bz1iYXI7IERvbWFpbj1leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmsp
KTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9v
PWJhcjsgRG9tYWluPWV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3Jr
KSk7CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwotICAgIEVYUEVDVF9UUlVF
KG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4YW1w
bGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9UUlVF
KG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4YW1w
bGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CiAgICAgLy8gZmFpbHVy
ZTogc3BlY2lmaWMgc3ViIGRvbWFpbgotICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0
Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSIsIENvb2tp
ZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXIt
PnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj13d3cuZXhhbXBsZS5jb20iX3Ms
IENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBmYWlsdXJlOiBkaWZmZXJl
bnQgZG9tYWluCi0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1
cmwsICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5l
dHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVy
bCwgImZvbz1iYXI7IERvbWFpbj1zYW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpO
ZXR3b3JrKSk7CiB9CiAKIFRFU1RfRihDdXJsQ29va2llcywgVGVzdEh0dHBPbmx5Q2FzZSkKIHsK
LSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwgdXJsIHsgImh0
dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZnJvbSBuZXR3b3JrCi0g
ICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7
IEh0dHBPbmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9U
UlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSJf
cywgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogICAgIC8vIHN1Y2Nlc3M6IHdpbGRj
YXJkIG9mIGRvbWFpbnMKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVy
bCwgdXJsLCAiYmluZ289Ym9uZ287IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7Cisg
ICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImJpbmdvPWJv
bmdvOyJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAgICAgLy8gZmFpbHVyZTog
Zm9vIGlzIGFscmVhZHkgc3RvcmVkIGFzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29v
a2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyIsIENvb2tpZUphckRCOjpTb3Vy
Y2U6OlNjcmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVy
bCwgdXJsLCAiZm9vPWJhcjsiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwogICAg
IC8vIGZhaWx1cmU6IGluY29uc2lzdGVudC4gU291cmNlIGlzIFNjcmlwdCwgYnV0IGF0dHJpYnV0
ZSBzYXlzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUo
dXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSIsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlw
dCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAi
Zm9vPWJhcjsgSHR0cE9ubHkiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fw
cFByaXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0FwcFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzODhlOTU5NzRkMWVkYzUzMzkx
MjE1NzIwN2ZlMy4uZGRjMTg1ZDk2YmM2ZWI0ODJkNzc4NGQzOTBmMDljOTg0Y2M2NTZmZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5
UmVwb3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBw
UHJpdmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9y
dCwgTm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIi
U1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3
IEBAIHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUg
eyBTeW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29s
IHsgTm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChS
ZXNwb25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkK
ICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBj
b25zdCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzOwogICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChyZXNwb25zZVR5
cGUpIHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6U3ludGhldGljOgotICAgICAgICBqcyA9ICJz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVz
cG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAg
ICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50
LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50
aGV0aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSki
X3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0g
InNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9u
ZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAganMgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChm
ZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAi
ZmV0Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0
ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIs
IHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAor
ICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9z
LCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBq
cyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2Zl
dGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTM2OSwxMyArMzY5LDEzIEBAIFRFU1QoQXBwUHJp
dmFjeVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAg
IH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0
IGNoYXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsg
ZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0
ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+
IHsgZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiX3M7CiAgICAg
Y29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKIAogICAg
IFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFp
blNXQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQu
aHRtbCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIg
fSB9LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3
LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9z
IH19LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxl
cnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmll
dzEgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC00NTIsMTIgKzQ1MiwxMiBAQCBzdGF0
aWMgdm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAg
ICB3ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNw
b25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAo
ZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNj
cmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3Rl
eHQvaHRtbCd9KSkpOyB9KSJfczsKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwK
LSAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlv
bi9qYXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dC
eXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJf
cywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKICAgICAgICAgfSwgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRl
bnRpdHkoKSk7CiAgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKIApAQCAtNDc2
LDggKzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlz
QXBwSW5pdGlhdGVkKQogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAg
ICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiIH19LCBqcyB9IH0KKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9
LAorICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0KICAgICAgICAgfSwgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCks
IHNlcnZlclBvcnQpOwogCiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0g
W05TTXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2
ZXIyLnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQs
IFdlYlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5pdGlhdGVkKQogCiAjaWYgV0tfSEFWRV9DX1NQ
SQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVT
T1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBS
IlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtNTg5LDkgKzU4
OSw5IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0Pgot
KVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3Jp
cHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0
byBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIHNlbGYuYWRkRXZlbnRM
aXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkgPT4gewogICAgIGlmICghc2VsZi5pbnRl
cm5hbHMpIHsKICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMn
KTsKQEAgLTYyMCw3ICs2MjAsNyBAQCBhc3luYyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBv
cnRWYWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKICAgICBldmVudC5zb3VyY2Uu
cG9zdE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVkJyk7CiB9CiAKLSlTV1JFU09VUkNFIjsKKylT
V1JFU09VUkNFIl9zOwogCiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwpAQCAtNjY2
LDggKzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVlKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluU1dCeXRlc0Rl
ZmF1bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUi
LCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9
IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUg
fSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBs
aWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAog
ICAgIH0pOwogCiAgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1
ZXN0LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5p
dGlhdGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9EZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5kZXggY2RiOTEwNGFlYjVmZDAxY2E1ZTcxNDgw
ZWJhMTk0OTY3NDdlNjJlZi4uMzI0YmQwMjQ2OGViM2ZkMmIwYTVkOTM4M2ViNzA2MTJiOTE3NmZl
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZp
Y2VPcmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VP
cmllbnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxy
ZWFkeUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2Vp
dmVkTWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVz
ID0gUiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJU
RVNUUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICsz
MzIsMTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0Pgot
KVRFU1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0
aW9uLCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAg
ICAgICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRh
U3RvcmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uUGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4
dCA9IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBS
IkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4x
OjkwOTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7
Z3lyb3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3
LjAuMC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3Rh
dGljIGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsK
K3N0YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxi
b2R5PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1Qo
V2ViS2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJh
bWVUZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxs
cHRyLCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0g
ICAgICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9z
LCB7IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luQXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxZTQ2ZjM1MDZkNDY2Y2M5
N2E2ZDMyYzRmMDI5MC4uZjZkYjE2N2E1YmQxYzc1MGYwYWU4YTZlZTdkNWY1YTkzMjhmYTVmYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3Rh
dGljIHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAg
IFdlYkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRl
KCk7Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBw
bGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAK
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkK
IHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0
SWRlbnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
cigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0
KQpAQCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1Vz
ZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29u
c3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rp
b24gbG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5y
ZWdpc3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0p
U1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5V
bnJlZ2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFp
blVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxv
Zyhtc2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5
dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0g
UiJTV1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQp
ID0+IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2
ZWQ6ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJf
czsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZp
Y2VXb3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1s
IiwgeyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1U
eXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAg
ICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5q
cyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3Mg
fSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNl
V29ya2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNl
cnZpY2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVk
TWVzc2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBI
ZWxsbyBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJN
ZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFu
IGFwcC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIv
c3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0g
fSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJl
Z2lzdGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5
cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAog
ICAgIH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29y
ZHNGb3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2Fn
ZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5y
ZWdpc3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRl
eCBiZjQ4MmUzYWI4Y2JhNTU4OWVmNDY0ZGU0ZmVhZGRmNDllNWY4ZWE4Li41YmNlYTgxMDkzY2Zl
ZTVmODgyZmY2OTZmNTg2ZjkyNjk4NzhiZDEzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0KQEAgLTgzMTcsOCArODMxNyw4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2Rl
SW5DYXNlT2ZDb29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIs
IHsgImZvbyIgfSB9LAotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250
ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIs
ICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJf
cywgeyAiZm9vIl9zIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7
ICJDb250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5l
ci1Qb2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhU
VFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTgzODksMTEgKzgz
ODksMTEgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZlBTT05UaGVuQ29v
cFByb2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAg
SFRUUFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9
IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKICAgICB9LCBI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIyKHsK
LSAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRl
eHQvaHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4i
IH0gfSwgImJhciIgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsg
IkNvbnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVy
LVBvbGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KaW5kZXggMzNjOGRiYzViNzFlMWJiZjkyMmMxMTNiNGNjNWRlY2Rl
YWViMzJjOS4uZmRkNjcwODY4M2ViY2JlZjIyZTA4NTY3Zjc2YmU1OTZlMTgwZGQzOSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVT
VChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJB
dXRoZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAg
ICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJG
T08iX3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAg
ICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRo
SW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNl
c3Npb24uY3BwCmluZGV4IDlhNjhlNmU0NTFmZWYxM2JmNTAwN2NiMmYwMzc2NTBhYzMzZmZkYzIu
LjJmMTk1MmMyOTg5YjQxZmQ3MGFiMTdiOTRlNWQwYjdjYTc1MGY0ZmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgICAgICBtX2Ny
ZWF0ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0gQ1N0cmlu
ZygpOwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24s
ICJjcmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFjayksIHRo
aXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0
Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQi
X3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAg
IGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAg
ICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOwpAQCAtMjEyLDcgKzIx
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQg
PSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElE
ID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OndpbmRvdyIs
IEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0luV2luZG93Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAg
ICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVz
ZW50YXRpb25IaW50XCI6XCJXaW5kb3dcIn0iKTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tl
bmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldp
bmRvd1wifSJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsK
ICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQp
OwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRlV2ViVmlld0luV2luZG93V2FzQ2FsbGVk
KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld0lu
VGFiV2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgICAgIG1fbWVzc2FnZSA9IHsgfTsKICAgICAgICAg
YXV0byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9zZXNzaW9uLCAiY3JlYXRlLXdlYi12
aWV3Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdJblRhYkNhbGxiYWNrKSwgdGhpcyk7
Ci0gICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiLCAi
e1wicHJlc2VudGF0aW9uSGludFwiOlwiVGFiXCJ9Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9C
YWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6
XCJUYWJcIn0iX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7
CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElE
KTsKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdJblRhYldhc0NhbGxlZCk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNT
TC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAK
aW5kZXggNTFjODE1MWM5MGFhMGU4MTI1ZTRiYTU5ZjlkZGUwYjg1NmVlMzFiMy4uMDU0MDU1Mzdh
NzU3NDhkMGZlZmY4ZGY1OGQ0NjUwNmIwNmQyMTVhZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHB1
YmxpYzoKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09C
SkVDVChjZXJ0aWZpY2F0ZSkpOwogICAgICAgICBtX2NlcnRpZmljYXRlID0gY2VydGlmaWNhdGU7
CiAgICAgICAgIG1fdGxzRXJyb3JzID0gdGxzRXJyb3JzOwotICAgICAgICBtX2ZhaWxpbmdVUkwg
PSBVUkwoeyB9LCBmYWlsaW5nVVJJKTsKKyAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKFN0cmlu
ZyB7IGZhaWxpbmdVUkkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNw
cAppbmRleCAyODRmODA0YjY0MTA1Yjg0YjY3NjI4Mzc4Y2U4Y2YwYzE5NzJhY2Y4Li5iN2MxY2Mx
YzVjNTNiOTcwNmVkZDRiYzRmNzcyY2EyOTYzZDEzNDJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdpbmRvd1Byb3BlcnRpZXNOb3Rp
ZnlDYWxsYmFjayhHT2JqZWN0KiwgR1BhcmFtU3BlYyogcGFyYW1TcGVjLCBVSUNsaWVudFRlc3Qq
IHRlc3QpCiAgICAgewotICAgICAgICB0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmFk
ZChnX3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSk7CisgICAgICAgIHRlc3QtPm1fd2lu
ZG93UHJvcGVydGllc0NoYW5nZWQuYWRkKFN0cmluZyB7IGdfcGFyYW1fc3BlY19nZXRfbmFtZShw
YXJhbVNwZWMpIH0pOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB2aWV3Q3Jl
YXRlQ2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlv
biogbmF2aWdhdGlvbiwgVUlDbGllbnRUZXN0KiB0ZXN0KQpAQCAtNzYwLDExICs3NjAsMTEgQEAg
c3RhdGljIHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkSHRtbChodG1sU3RyaW5nLmdldCgpLCBu
dWxscHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CiAKLSAgICBz
dGF0aWMgY29uc3QgY2hhciogcHJvcGVydGllc0NoYW5nZWRbXSA9IHsKKyAgICBzdGF0aWMgY29u
c3RleHByIEFTQ0lJTGl0ZXJhbCBwcm9wZXJ0aWVzQ2hhbmdlZFtdID0gewogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICAgICAgImdlb21ldHJ5IiwKKyAgICAgICAgImdlb21ldHJ5Il9zLAogI2VuZGlm
Ci0gICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwgIm1lbnViYXItdmlzaWJsZSIsICJzdGF0
dXNiYXItdmlzaWJsZSIsICJ0b29sYmFyLXZpc2libGUiLCAic2Nyb2xsYmFycy12aXNpYmxlIgor
ICAgICAgICAibG9jYXRpb25iYXItdmlzaWJsZSJfcywgIm1lbnViYXItdmlzaWJsZSJfcywgInN0
YXR1c2Jhci12aXNpYmxlIl9zLCAidG9vbGJhci12aXNpYmxlIl9zLCAic2Nyb2xsYmFycy12aXNp
YmxlIl9zCiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhw
cm9wZXJ0aWVzQ2hhbmdlZCk7ICsraSkKICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dp
bmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmNvbnRhaW5zKHByb3BlcnRpZXNDaGFuZ2VkW2ldKSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4
dGVuc2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RX
ZWJFeHRlbnNpb25zLmNwcAppbmRleCA0MGVhZWI3YmYyN2E0Yjg0ZDczMGI0MzlmNzFmNjk2YmVk
Y2VmYjExLi5jNTY5MDJhMjI5NzA3MjJkM2NjMTE2YmJhMzEwZGRiNmI0M2RlODliIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lv
bnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0
ZW5zaW9uUGFnZUlEKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFJl
Z2lzdGVyIGEgY3VzdG9tIFVSSSBzY2hlbWUgdG8gdGVzdCBoaXN0b3J5IG5hdmlnYXRpb24uCiAg
ICAgd2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUodGVzdC0+bV93ZWJDb250
ZXh0LmdldCgpLCAiZm9vIiwKICAgICAgICAgW10oV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVx
dWVzdCwgZ3BvaW50ZXIpIHsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBVUkwoeyB9LCB3ZWJraXRf
dXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOworICAgICAgICAgICAgVVJMIHVy
bCA9IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVz
dCkgfSk7CiAgICAgICAgICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBh
ZG9wdEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpKTsKICAgICAgICAgICAgIGNoYXIq
IGh0bWwgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxoZWFkPjx0aXRsZT4lczwvdGl0bGU+PC9o
ZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IiwgdXJsLmhvc3QoKSA9PSAiaG9zdDUiID8gIlRpdGxl
NSIgOiAiVGl0bGU2Iik7CiAgICAgICAgICAgICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRkX2Rh
dGEoR19NRU1PUllfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtLmdldCgpKSwgaHRtbCwgc3RybGVu
KGh0bWwpLCBnX2ZyZWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dl
YktpdEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIv
V2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAppbmRleCBmMGJkODY2NWY3MGEwZDQ1MTRm
MWQxZDA4OTA1ZjVhYzJlYjk0MTI5Li4yODAzNDExNDBmMDJmODRmNzk0OTRlZWM0YjdlMzZiMTFj
MDk5ZDgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9X
ZWJLaXRUZXN0U2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0
R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYktpdFRl
c3RTZXJ2ZXI6OnJ1bihTb3VwU2VydmVyQ2FsbGJhY2sgc2VydmVyQ2FsbGJhY2spCiAKIHZvaWQg
V2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxlcihTb3VwU2VydmVyV2Vic29ja2V0
Q2FsbGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIG1fYmFzZVdlYlNv
Y2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyIpOworICAgIG1fYmFzZVdlYlNv
Y2tldFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyJfcyk7CiAgICAgbV9iYXNlV2Vi
U29ja2V0VVJMLnNldFByb3RvY29sKG1fYmFzZVdlYlNvY2tldFVSTC5wcm90b2NvbElzKCJodHRw
IikgPyAid3MiIDogIndzcyIpOwogCiAgICAgaWYgKG1fcXVldWUpIHsKQEAgLTEwMSwxMiArMTAx
LDEyIEBAIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29ja2V0VVJJRm9yUGF0aChj
b25zdCBjaGFyKiBwYXRoKSBjb25zdAogewogICAgIGdfYXNzZXJ0X2ZhbHNlKG1fYmFzZVdlYlNv
Y2tldFVSTC5pc051bGwoKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShwYXRoICYmICpwYXRoID09ICcv
Jyk7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIHBhdGggKyAxKS5zdHJpbmco
KS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGluZyBzbGFzaC4KKyAgICByZXR1cm4gVVJMKG1f
YmFzZVdlYlNvY2tldFVSTCwgU3RyaW5nIHsgcGF0aCArIDEgfSkuc3RyaW5nKCkudXRmOCgpOyAv
LyBJZ25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCiB9CiAKIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZl
cjo6Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAogewotICAgIHJldHVybiBV
UkwobV9iYXNlVVJMLCBwYXRoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgcmV0dXJuIFVSTChtX2Jh
c2VVUkwsIFN0cmluZyB7IHBhdGggfSkuc3RyaW5nKCkudXRmOCgpOwogfQogCiB1bnNpZ25lZCBX
ZWJLaXRUZXN0U2VydmVyOjpwb3J0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5NDRiNTZmYWY0NWM4
MDUwZDc0NGRiODZhMjlmNC4uOTg1ZDQ5MTVjNmFiOTFmMzNjYTkwNDE3OGMzYzVkNGQ0MTE0MGI5
MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1v
ZGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUu
bW0KQEAgLTE2OSw3ICsxNjksNyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRV
cFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRl
bGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0g
eyAiVGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkp
CitSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9k
ZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50
TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUg
c2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlm
IChkZWZhdWx0Q29udGVudE1vZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdD
bGFzcz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb24KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxS
ZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVn
YXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0
aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQ
SSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0
YWluUHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0
ZT4+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlv
bmFsPFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEki
X3MgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91
dE5hdmlnYXRpb25EZWxlZ2F0ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwpAQCAtMzcyLDcgKzM3Miw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVu
ZGVkQ29udGVudE1vZGVBdFZhcmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJm
YWNlU3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxl
Z2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJW
aWV3Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dl
YlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVz
dGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsK
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0
aXZlQ29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFu
ZGxlcjpuaWxdOwogICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRh
aW5TdHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5p
bF07CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBs
aWNhdGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8v
IE1hbnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUg
ZGVmYXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVs
ZWdhdGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2Vi
Vmlldz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAg
ICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250
ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxl
LzE1RTE0OCJfcyB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1w
bGUiIHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVz
ZXJBZ2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9U
UlVFKFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdHNwaS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKaW5kZXggOGNkMjJlNGQzNzJh
NTljNjg3Mzk2MjhiYmU5ZWI1OGY1ZWMxN2MzNi4uODk1ZjJlNjk5MDM1NzJjNjc4YzdhNjI1NzJk
MjJjNzFlZGE4MTY3OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0c3BpLmNwcApAQCAtMzk4LDE4ICszOTgsMTggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5n
UmUKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmli
dXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09
ICJBWFBsYWNlaG9sZGVyVmFsdWUiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRy
eUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicGxhY2Vob2xkZXItdGV4dCIpKS5sZWFrUmVmKCk7Cisg
ICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJw
bGFjZWhvbGRlci10ZXh0Il9zKSkubGVha1JlZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09
ICJBWEludmFsaWQiKSB7CiAgICAgICAgIGF1dG8gdGV4dEF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQt
PnRleHRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5h
dHRyaWJ1dGVzLmdldCgiaW52YWxpZCIpOworICAgICAgICBhdXRvIHZhbHVlID0gdGV4dEF0dHJp
YnV0ZXMuYXR0cmlidXRlcy5nZXQoImludmFsaWQiX3MpOwogICAgICAgICBpZiAodmFsdWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgdmFsdWUgPSBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQu
Z2V0KCksIFdlYkNvcmU6OkF0c3BpOjpTdGF0ZTo6SW52YWxpZEVudHJ5KSA/ICJ0cnVlIiA6ICJm
YWxzZSI7CisgICAgICAgICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5n
ZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50cnkpID8gInRydWUiX3MgOiAi
ZmFsc2UiX3M7CiAgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHZhbHVl
KS5sZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZl
IikKLSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5n
ZXQoImxpdmUiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRy
eUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSJfcykpLmxlYWtSZWYoKTsKICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNT
dHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVsZXZhbnQiKSkubGVha1JlZigpOwor
ICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgi
cmVsZXZhbnQiX3MpKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycyhudWxscHRyLCAwKTsKIH0KQEAgLTQyMCwyMSArNDIwLDIxIEBAIGRvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRv
IGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgi
c2V0c2l6ZSIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0
c2l6ZSJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9z
SW5TZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInBvc2luc2V0IikudG9Eb3Vi
bGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJwb3NpbnNldCJfcykudG9Eb3Vi
bGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uQ291bnQiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGNvdW50IikudG9Eb3VibGUoKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xjb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBp
ZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93Q291bnQiKQotICAgICAgICByZXR1cm4gYXR0
cmlidXRlcy5nZXQoInJvd2NvdW50IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuZ2V0KCJyb3djb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBQ29sdW1uSW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQo
ImNvbGluZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJj
b2xpbmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklB
Um93SW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2luZGV4IikudG9E
b3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dpbmRleCJfcykudG9E
b3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uU3BhbiIpCi0g
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiIpLnRvRG91YmxlKCk7CisgICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiJfcykudG9Eb3VibGUoKTsKICAgICBp
ZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93U3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzLmdldCgicm93c3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzLmdldCgicm93c3BhbiJfcykudG9Eb3VibGUoKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAt
NDQyLDggKzQ0Miw4IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUoKSBjb25zdAogewog
ICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCIpOwotICAgIHJldHVybiBPcGFxdWVK
U1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZhbHNlIikubGVh
a1JlZigpOworICAgIGF1dG8gdmFsdWUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImN1
cnJlbnQiX3MpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5p
c051bGwoKSA/IHZhbHVlIDogImZhbHNlIl9zKS5sZWFrUmVmKCk7CiB9CiAKIEpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpIGNvbnN0CkBAIC01MTQsNyArNTE0LDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEludGVyZmFjZVRhYmxlQ2VsbCIpCiAgICAg
ICAgIHJldHVybiBtX2VsZW1lbnQtPmludGVyZmFjZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0QXRzcGk6OkludGVyZmFjZTo6VGFibGVDZWxsKTsKICAgICBpZiAoYXR0
cmlidXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+
YXR0cmlidXRlcygpLmdldCgiYXRvbWljIikgPT0gInRydWUiOworICAgICAgICByZXR1cm4gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiX3MpID09ICJ0cnVlIjsKIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmli
dXRlcygpOwotICAgIFN0cmluZyBpc1JlYWRPbmx5ID0gYXR0cmlidXRlcy5nZXQoInJlYWRvbmx5
Iik7CisgICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiX3Mp
OwogICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpc1JlYWRP
bmx5ID09ICJ0cnVlIiA/IGZhbHNlIDogdHJ1ZTsKIApAQCAtNTczLDE3ICs1NzMsMTcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1Jl
ZiBhdHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBh
dXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNv
bnRhaW5zKCJzZXRzaXplIik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJz
ZXRzaXplIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9zSW5TZXQiKQot
ICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicG9zaW5zZXQiKTsKKyAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInBvc2luc2V0Il9zKTsKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhBUklBTGl2ZSIpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0
ZXMuZ2V0KCJsaXZlIik7CisgICAgICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVzLmdldCgibGl2
ZSJfcyk7CiAgICAgICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmIHZhbHVlICE9ICJvZmYi
OwogICAgIH0KICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVsZXZhbnQiKTsKKyAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInJlbGV2YW50Il9zKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFp
bnMoImF0b21pYyIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygiYXRvbWlj
Il9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhFbGVtZW50QnVzeSIpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCkBAIC01OTgsMjcgKzU5OCwyNyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVz
KCkKIHN0YXRpYyBTdHJpbmcgeG1sUm9sZVZhbHVlU3RyaW5nKGNvbnN0IFN0cmluZyYgeG1sUm9s
ZXMpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+PiByZWdpb25Sb2xlcyA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+KHsKLSAgICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMiLAotICAg
ICAgICAiZG9jLWFmdGVyd29yZCIsCi0gICAgICAgICJkb2MtYXBwZW5kaXgiLAotICAgICAgICAi
ZG9jLWJpYmxpb2dyYXBoeSIsCi0gICAgICAgICJkb2MtY2hhcHRlciIsCi0gICAgICAgICJkb2Mt
Y29uY2x1c2lvbiIsCi0gICAgICAgICJkb2MtY3JlZGl0cyIsCi0gICAgICAgICJkb2MtZW5kbm90
ZXMiLAotICAgICAgICAiZG9jLWVwaWxvZ3VlIiwKLSAgICAgICAgImRvYy1lcnJhdGEiLAotICAg
ICAgICAiZG9jLWZvcmV3b3JkIiwKLSAgICAgICAgImRvYy1nbG9zc2FyeSIsCi0gICAgICAgICJk
b2MtZ2xvc3NyZWYiLAotICAgICAgICAiZG9jLWluZGV4IiwKLSAgICAgICAgImRvYy1pbnRyb2R1
Y3Rpb24iLAotICAgICAgICAiZG9jLXBhZ2VsaXN0IiwKLSAgICAgICAgImRvYy1wYXJ0IiwKLSAg
ICAgICAgImRvYy1wcmVmYWNlIiwKLSAgICAgICAgImRvYy1wcm9sb2d1ZSIsCi0gICAgICAgICJk
b2MtdG9jIiwKLSAgICAgICAgInJlZ2lvbiIKKyAgICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMi
X3MsCisgICAgICAgICJkb2MtYWZ0ZXJ3b3JkIl9zLAorICAgICAgICAiZG9jLWFwcGVuZGl4Il9z
LAorICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSJfcywKKyAgICAgICAgImRvYy1jaGFwdGVyIl9z
LAorICAgICAgICAiZG9jLWNvbmNsdXNpb24iX3MsCisgICAgICAgICJkb2MtY3JlZGl0cyJfcywK
KyAgICAgICAgImRvYy1lbmRub3RlcyJfcywKKyAgICAgICAgImRvYy1lcGlsb2d1ZSJfcywKKyAg
ICAgICAgImRvYy1lcnJhdGEiX3MsCisgICAgICAgICJkb2MtZm9yZXdvcmQiX3MsCisgICAgICAg
ICJkb2MtZ2xvc3NhcnkiX3MsCisgICAgICAgICJkb2MtZ2xvc3NyZWYiX3MsCisgICAgICAgICJk
b2MtaW5kZXgiX3MsCisgICAgICAgICJkb2MtaW50cm9kdWN0aW9uIl9zLAorICAgICAgICAiZG9j
LXBhZ2VsaXN0Il9zLAorICAgICAgICAiZG9jLXBhcnQiX3MsCisgICAgICAgICJkb2MtcHJlZmFj
ZSJfcywKKyAgICAgICAgImRvYy1wcm9sb2d1ZSJfcywKKyAgICAgICAgImRvYy10b2MiX3MsCisg
ICAgICAgICJyZWdpb24iX3MKICAgICB9KTsKIAogICAgIGlmIChyZWdpb25Sb2xlcy0+Y29udGFp
bnMoeG1sUm9sZXMpKQpAQCAtNzYyLDcgKzc2Miw3IEBAIHN0YXRpYyBTdHJpbmcgcm9sZVZhbHVl
VG9TdHJpbmcodW5zaWduZWQgcm9sZVZhbHVlKQogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJv
bGU6OlNjcm9sbEJhcjoKICAgICAgICAgcmV0dXJuICJBWFNjcm9sbEJhciJfczsKICAgICBjYXNl
IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpTY3JvbGxQYW5lOgotICAgICAgICByZXR1cm4gIkFYU2Ny
b2xsQXJlYSI7CisgICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIl9zOwogICAgIGNhc2UgV2Vi
Q29yZTo6QXRzcGk6OlJvbGU6OlNlY3Rpb246CiAgICAgICAgIHJldHVybiAiQVhTZWN0aW9uIl9z
OwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlcGFyYXRvcjoKQEAgLTgxNyw3ICs4
MTcsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZSgpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRv
IHJvbGVWYWx1ZSA9IG1fZWxlbWVudC0+cm9sZSgpOwotICAgIGF1dG8gcm9sZVZhbHVlU3RyaW5n
ID0gcm9sZVZhbHVlID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpMYW5kbWFyayA/IHhtbFJvbGVW
YWx1ZVN0cmluZyhtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInhtbC1yb2xlcyIpKSA6IHJv
bGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CisgICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSBy
b2xlVmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVl
U3RyaW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgieG1sLXJvbGVzIl9zKSkgOiByb2xl
VmFsdWVUb1N0cmluZyhyb2xlVmFsdWUpOwogICAgIGlmIChyb2xlVmFsdWVTdHJpbmcuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRy
LCAwKTsKIApAQCAtODMyLDE0ICs4MzIsMTQgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVt
ZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9uIik7CisgICAgYXV0byBy
b2xlRGVzY3JpcHRpb24gPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInJvbGVkZXNjcmlw
dGlvbiJfcyk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWFrZVN0cmlu
ZygiQVhSb2xlRGVzY3JpcHRpb246ICIsIHJvbGVEZXNjcmlwdGlvbikpLmxlYWtSZWYoKTsKIH0K
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1
dGVkUm9sZVN0cmluZygpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsK
LSAgICBhdXRvIGNvbXB1dGVkUm9sZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY29t
cHV0ZWQtcm9sZSIpOworICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIl9zKTsKICAgICBpZiAoY29tcHV0ZWRSb2xlLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0
ciwgMCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW50VmFsdWUoKSBjb25zdAogCiAgICAgLy8gQ29uc2lkZXIgaGVhZGluZ3MgYXMgYW4gc3Bl
Y2lhbCBjYXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBpbnQgdmFsdWUuCiAgICAgaWYgKG1fZWxlbWVu
dC0+cm9sZSgpID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpIZWFkaW5nKQotICAgICAgICByZXR1
cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCIpLnRvRG91YmxlKCk7CisgICAg
ICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIl9zKS50b0RvdWJs
ZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05OTksNyArOTk5LDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQog
ewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1
dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1ha2VTdHJp
bmcoIkFYVmFsdWVEZXNjcmlwdGlvbjogIiwgYXR0cmlidXRlcy5nZXQoInZhbHVldGV4dCIpKTsK
KyAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBhdHRy
aWJ1dGVzLmdldCgidmFsdWV0ZXh0Il9zKSk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0
cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKIH0KIApAQCAtMTA3Niw3ICsxMDc2LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsKICAgICBt
X2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gbGV2ZWwgPSBtX2VsZW1l
bnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIik7CisgICAgYXV0byBsZXZlbCA9IG1fZWxlbWVu
dC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3MpOwogICAgIGlmIChsZXZlbC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDkxLDEzICsxMDkxLDEzIEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKIGJvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0CiB7CiAgICAgbV9lbGVt
ZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJncmFiYmVkIikgPT0gInRydWUiOworICAgIHJldHVybiBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiX3MpID09ICJ0cnVlIjsKIH0KIAogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNv
bnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGRy
b3BFZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Iik7Cisg
ICAgYXV0byBkcm9wRWZmZWN0cyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZHJvcGVm
ZmVjdCJfcyk7CiAgICAgaWYgKGRyb3BFZmZlY3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZHJvcEVmZmVjdHMpLmxlYWtSZWYoKTsKQEAgLTE0Mjks
NyArMTQyOSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdT
dG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+
ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIikpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJFbmNv
ZGluZyJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVS
SSgpCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIs
IDApOwogCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4g
T3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJV
UkkiKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1f
ZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNw
cAppbmRleCAwMzY2NTJlYzM4OTk5ZjVmMTNiYWYwMGU2YzVjOTBhYTk0NjYyNzNhLi4yYTg4NTI3
MTRhZWZmMWEyMTlkMTdkYTUyZjhlNTdlN2ViNjVlOTE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAKQEAgLTE4NSwxMSAr
MTg1LDExIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoR1ZhcmlhbnQq
IHZhcmlhbnQpCiAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoJml0ZXIsICJ7JnN2fSIs
ICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgY29uc3QgR1ZhcmlhbnRUeXBlKiB0eXBlID0gZ192
YXJpYW50X2dldF90eXBlKHZhbHVlKTsKICAgICAgICAgaWYgKHR5cGUgJiYgZ192YXJpYW50X3R5
cGVfZXF1YWwodHlwZSwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCkpCi0gICAgICAgICAgICBqc29u
T2JqZWN0LT5zZXRPYmplY3Qoa2V5LCB0b0pTT05PYmplY3QodmFsdWUpKTsKKyAgICAgICAgICAg
IGpzb25PYmplY3QtPnNldE9iamVjdChTdHJpbmcgeyBrZXkgfSwgdG9KU09OT2JqZWN0KHZhbHVl
KSk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgJiYgZ192YXJpYW50X3R5cGVfZXF1YWwodHlwZSwg
R19WQVJJQU5UX1RZUEVfU1RSSU5HKSkKLSAgICAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmlu
ZyhrZXksIGdfdmFyaWFudF9nZXRfc3RyaW5nKHZhbHVlLCBudWxscHRyKSk7CisgICAgICAgICAg
ICBqc29uT2JqZWN0LT5zZXRTdHJpbmcoU3RyaW5nIHsga2V5IH0sIFN0cmluZyB7IGdfdmFyaWFu
dF9nZXRfc3RyaW5nKHZhbHVlLCBudWxscHRyKSB9KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAm
JiBnX3ZhcmlhbnRfdHlwZV9lcXVhbCh0eXBlLCBHX1ZBUklBTlRfVFlQRV9ET1VCTEUpKQotICAg
ICAgICAgICAganNvbk9iamVjdC0+c2V0RG91YmxlKGtleSwgZ192YXJpYW50X2dldF9kb3VibGUo
dmFsdWUpKTsKKyAgICAgICAgICAgIGpzb25PYmplY3QtPnNldERvdWJsZShTdHJpbmcgeyBrZXkg
fSwgZ192YXJpYW50X2dldF9kb3VibGUodmFsdWUpKTsKICAgICB9CiAgICAgcmV0dXJuIGpzb25P
YmplY3Q7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5j
cHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKaW5kZXggMTIwNGNiNTI4
YmM2YTgzMTBiMmVmYzdiNmVkMjA1YWI4ZjFiMjQwYi4uY2YxMzFhZWJhMGFlMzg2ODkzNzgzODYw
ZWRmYzg0MTUyNGUxNzg4YyAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L21haW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAt
OTMsNyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29t
cGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJU
dXBsZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2lu
dGVyVHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVC
b29sIHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0
dHBzOi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1w
bGUuY29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456592</attachid>
            <date>2022-04-04 11:08:52 -0700</date>
            <delta_ts>2022-04-04 12:32:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238693-20220404110851.patch</filename>
            <type>text/plain</type>
            <size>415128</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWIxYWJhYjQ3OTk1NWExYzIzM2FiMTJlMjMxNjRjODMwNTg3NmM1Li5lNmIxNjU3ODYyNGQ1YWY1
MDA2MjkxNjc2Yzg1YjE3MjJiYzYxYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Njkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkv
Z2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAgKGpzY19jb250ZXh0X2NoZWNrX3N5bnRheCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdGFydEF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyk6CisKIDIwMjItMDQt
MDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGVmYXVs
dCBjb25zdHJ1Y3RvciB0byBBU0NJSUxpdGVyYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZGQ4OWZhYjRlODE4NmM2N2EwZDU4
M2QwZjczN2UyMGYyNzViYzc0MC4uMTlkZTMwYzNjNjViYjY3MTFiYWRkOTU2MDRmOGZkYmU5ZWQ5
NTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wNC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1
Y3RvciBhcyBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1J
bXBsOjpmaWxlc0hhdmVTYW1lVm9sdW1lKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6Rmls
ZVN5c3RlbUltcGw6OmdldEZpbGVEZXZpY2VJZCk6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlRGV2
aWNlSWQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAqIHd0Zi91
bml4L0xvZ2dpbmdVbml4LmNwcDoKKyAgICAgICAgKFdURjo6bG9nTGV2ZWxTdHJpbmcpOgorICAg
ICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaWxlRGV2aWNlSWQpOgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwogMjAyMi0wNC0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgbW9zdGx5IHVudXNl
ZCBTdHJpbmcoY29uc3QgTENoYXIqKSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1N2QzNWJh
MzJmZjFkNzNmMmQxZjJkMjAwMWI5MDBhZjVmMzdjNjEuLjdkM2E2NWMwZWMzOTEwZDA3YWNmZjQ3
MzdlYTE3ZTEzMzkyNmZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTIgQEAKKzIwMjItMDQt
MDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmlu
Zyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZXRj
aERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6
OnN0b3JlUmVtb3RlTUxpbmVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlh
RW5kcG9pbnQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJN
ZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNv
bGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpnc3RyZWFtZXJSdHBDYXBhdGlibGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
clBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1p
ZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyU3Rh
dHNDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJUQ1N0YXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbGxSVENSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9SVENFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0b1JUQ0VuY29kaW5nUGFyYW1ldGVycyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVO
YW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6
cm9sZU5hbWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdFRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1iZWRkZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNjcm9sbDpdKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBl
ZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9y
Q2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKToKKyAgICAgICAgKiBlZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXVEY6OkxvZ0FyZ3VtZW50PFVSTD46OnRvU3RyaW5nKToKKyAgICAgICAgKiBodG1sL09mZnNj
cmVlbkNhbnZhcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAg
ICAqIGxvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6bG9hZEdSZXNvdXJjZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6
OnZhbHVlRm9yU2V0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6bW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRG
b250RmFtaWxpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vVXNlckFnZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5k
YXJkVXNlckFnZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNo
YWRlclNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAocHJpbnRDb2xvcik6
CisgICAgICAgIChwcmludExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZDo6dG9EYXRhVVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9u
RnJvbUNhcHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OkVsZW1lbnRGYWN0b3JpZXM6Omhhc0VsZW1lbnRGb3JNZWRpYVR5cGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmspOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlRG93
bmxvYWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJp
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNl
SW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpnZXRMYW5ndWFnZUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6Z2V0VGFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdzdFRy
YWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9t
Q2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRlcik6
CisgICAgICAgICh3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdCk6CisgICAgICAgIChjb252ZXJ0UGxh
eWJpblVSSSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VE
ZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RT
dXBwb3J0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxp
ZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExh
eWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJGUFNDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJGUFND
b3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0
ZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6ZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXli
b2FyZEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6a2V5SWRlbnRpZmllckZvckdka0tleUNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6bmFtZU9mRHJh
Z1Bhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpvc05hbWVGb3JVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlm
aWVyRm9yV1BFS2V5Q29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvZmlsZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVIZWFk
ZXI6OnBhcnNlSGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxh
enlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZv
Q3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlv
bkVycm9yRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2VhcmNo
Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6ZGVmYXVsdFBhdGhGb3JVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6
OmFwcGVuZFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6cmVt
b3ZlUmVxdWVzdEhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpzZXR1cFBVVCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBTZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyUGF0aCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwOgorICAgICAgICAoT3Bl
blNTTDo6dGxzVmVyc2lvbik6CisgICAgICAgIChPcGVuU1NMOjp0bHNDaXBoZXJOYW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2ll
cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjp0bHNFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2Fu
RGlyZWN0b3J5Rm9yRGljdGlvbmFyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlV2luOjppbml0aWFsaXplTG9j
YWxlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXBsb2FkRmlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWxsRmlsZXNUZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWlt
ZVR5cGVzRm9yRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U3lzdGVtSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvc1ZlcnNpb25Gb3JVQVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXRlY3R1cmVUb2tlbkZvclVBU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oOgorICAgICAgICAo
UGxhdGZvcm1YUjo6YnV0dG9uVHlwZVRvU3RyaW5nKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OmF4
aXNUeXBldG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGls
cy5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6aGFuZGVuZXNzVG9TdHJpbmcpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisKIDIwMjItMDQtMDQgIFbDrWN0b3IgTWFudWVsIErDoXF1
ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIENvbXBp
bGF0aW9uIGVycm9yIGluIGRlYnVnIG1vZGUgYWZ0ZXIgcjI5MjI3OQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggOWI5MzZlMmMyNDRlYzI3Y2VlYjVkYWZkNmJlMjdiYTZmYjU2ZjU5OC4uZDY2NjlmNmVh
MzhiZWUyNGFlOGIwM2NjMjQ2YmRmNjc0ZjExYjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGlj
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcDoKKyAgICAgICAgKFBB
TDo6V2ViR1BVOjphZGFwdGVyTmFtZSk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUlt
cGw6OnBvcEVycm9yU2NvcGUpOgorCiAyMDIyLTA0LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIF9XS0RhdGFUYXNrIGRvZXNuJ3Qgd29yayBpbiBt
YWNDYXRhbHlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA1NmY5Zjg1ZjViNjY1OWRmNDZhYzU2MWI1MGE4
YjAyMGMzNDhmZjkxLi40ZDU0OWY1MTE2MzhjMzExNTA3NmIwODNmYTI0MzQzN2VlZjY0ODQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNv
bnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpD
b21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KToKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMpOgorICAgICAgICAo
V2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRDdXJyZW50VVJMKToKKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbjo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVs
ZW1lbnRJc0ZpbGVVcGxvYWQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVtZW50
SXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRTZW5kS2V5
cyk6CisgICAgICAgIChXZWJEcml2ZXI6OmJ1aWx0QXV0b21hdGlvbkNvb2tpZSk6CisgICAgICAg
IChXZWJEcml2ZXI6OmF1dG9tYXRpb25Tb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkRyaXZlcjo6
YXV0b21hdGlvbk9yaWdpblR5cGUpOgorICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpydW4pOgorICAgICAgICAoV2Vi
RHJpdmVyOjpkZXNlcmlhbGl6ZVByb3h5KToKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVy
U2VydmljZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogc29ja2V0L0NhcGFiaWxpdGllc1Nv
Y2tldC5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OkNhcGFiaWxpdGllc1NvY2tldDo6cGFyc2VD
YXBhYmlsaXRpZXMpOgorICAgICAgICAqIHNvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6SFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKToKKwogMjAy
Mi0wMy0zMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAg
IFtQbGF5U3RhdGlvbl0gRW5hYmxlIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCA3NWI1MzRiNTQ0NGU0
NTE4NTBiMGZkZWY3YzRiMzMxNjY0MzU1NDk2Li4yNjdiZDgwYjgyNjg5YmUyMWE3MTNlZGVlNGY2
YzA5MGZlZTQ1NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3Qg
Y2hhciopIGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAgICAg
ICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAg
ICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAg
IChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisKIDIwMjIt
MDQtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Rv
cCBjb3B5aW5nIFN0YWdlZEZyYW1ld29ya3MgdG8gdGhlIHNlY29uZGFyeSBwYXRoIGJ5IGRlZmF1
bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMDQ1ZWMyZDIyYjJiNzI4NGIxOGVjNjdmNTA4YzY1MDM2ZjE4MDc5My4u
YWRhM2VhYWE5OTIwMmY0MDlhMTY1NDQ1MWQzNGY5MjU2NDVmY2UxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjAgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGlj
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHN0cmlu
Z0ZvclNTTFByb3RvY29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza1NvdXA6OndyaXRlRG93bmxvYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza1NvdXA6OmRpZEZpbmlzaERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZW51bWVyYXRlRmlsZUNoaWxkcmVuQ2FsbGJhY2spOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29h
L1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChXZWJLaXQ6Om1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKToKKyAgICAgICAgKGRlY29kZUludm9jYXRpb24pOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgIChy
ZXBseUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X2ludm9rZU1ldGhvZDpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVx
dWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSk6CisgICAgICAg
ICogU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpwcmludGVy
Tm90Rm91bmRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmludmFsaWRQYWdlUmFuZ2VUb1ByaW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwOgorICAgICAgICAod2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwOgorICAgICAg
ICAod2Via2l0X2NyZWRlbnRpYWxfbmV3X2Zvcl9jZXJ0aWZpY2F0ZV9waW4pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9X
ZWJLaXRTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRTZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZmluaXNoX2Vycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
R3RrNC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdTb3VyY2U6OmJlZ2luKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyb3BUYXJnZXQ6OkRyb3BUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6RHJvcFRhcmdl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjp+UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJnZXRMaXN0
Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF9j
b2xvcl9wYXJzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6bWFsd2FyZURldGFpbHNCYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6cmVwb3J0QW5FcnJvckJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OnJlbW90ZUZpbGVSZXBsYWNlQ29udGVu
dHNDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6ZmlsZVJlcGxh
Y2VDb250ZW50c0NhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6YmluZFN5bWxpbmtzUmVhbFBhdGgpOgorICAgICAgICAoV2ViS2l0OjpidWJi
bGV3cmFwU3Bhd24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpiYWNrZW5kQ29tbWFuZHNQYXRo
KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fZG9j
dW1lbnRfZ2V0X3Zpc2liaWxpdHlfc3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6Omhh
bmRsZUtleVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlS2V5RG93bik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9X
ZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtVXNlckFn
ZW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAg
IChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
cik6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24tUHJlbG9hZCBoZWFkZXIgbm90IGJlaW5n
IHNlbnQgd2hlbiBOYXZpZ2F0aW9uIFByZWxvYWQgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCBlYTM5ODg4MTRkNjQ5NGVlZDIzNTBjZGY4Nzc2OWVjOWZhZmE5ODll
Li4zYTlhM2Q3NTFmZjY3MDIzNTMxY2U4ZGMyZjI5N2E4OGIyOTgyNDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NSFRNTExpbmtFbGVt
ZW50IF9tZWRpYVF1ZXJ5TWF0Y2hlc10pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXRPdmVycmlkZVRleHRFbmNvZGlu
Z05hbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3Jv
dXBOYW1lOl0pOgorCiAyMDIyLTA0LTA0ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNv
bT4KIAogICAgICAgICBbWENCdWlsZF0gV2ViS2l0TGVnYWN5J3MgIk1pZ3JhdGVkIGhlYWRlcnMi
IHNjcmlwdCBkb2VzIG5vdCBlbWl0IHRhc2sgaW5mb3JtYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCA0NTBkZTZiYmE4ZmYyYTFkY2Y3ZGE2ZTdlZjc3NDdlZWM2NjdkYjNiLi4z
ZGU0Mzg2MWRiMjBhZDQ3Y2ZmYTJiOTcyNGQyNDNiYjQ2ODYyZTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDIyLTA0LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNv
bnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAgKEFjY2Vzc2libGVC
YXNlOjpBY2Nlc3NpYmxlQmFzZSk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vzc2li
bGVCYXNlKToKKyAgICAgICAgKiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAg
IChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcpOgorICAg
ICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyk6
CisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRGVmYXVs
dERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKToKKyAgICAgICAgKERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERvd25sb2FkRGVsZWdhdGUpOgorICAgICAg
ICAqIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVs
ZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVs
ZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5j
cHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1v
cnlTdHJlYW06On5NZW1vcnlTdHJlYW0pOgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFn
LmNwcDoKKyAgICAgICAgKFdlYkFjdGlvblByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJh
Zyk6CisgICAgICAgIChXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFn
KToKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkFwcGxp
Y2F0aW9uQ2FjaGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQXBwbGljYXRp
b25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQXBwbGljYXRpb25D
YWNoZTo6c3RvcmFnZSk6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJB
cmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKToK
KyAgICAgICAgKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViQmFja0Zvcndh
cmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQmFja0ZvcndhcmRMaXN0
Ojp+V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKiBXZWJDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDYWNoZTo6V2ViQ2FjaGUpOgorICAgICAgICAoV2ViQ2FjaGU6On5XZWJDYWNoZSk6Cisg
ICAgICAgICogV2ViQ29yZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3Rp
Y3M6OldlYkNvcmVTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjp+V2Vi
Q29yZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQ
cm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpq
YXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6
bWVtb3J5U3RhdGlzdGljcyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJv
bUV2ZW50KToKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFT
b3VyY2U6On5XZWJEYXRhU291cmNlKToKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAg
KiBXZWJEb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJEb2N1bWVudExvYWRlcjo6V2Vi
RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVu
dExvYWRlcik6CisgICAgICAgICogV2ViRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViRG93bmxv
YWQ6OldlYkRvd25sb2FkKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQpOgor
ICAgICAgICAqIFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmNh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6OldlYkRyb3BTb3VyY2UpOgorICAgICAgICAoV2Vi
RHJvcFNvdXJjZTo6fldlYkRyb3BTb3VyY2UpOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9wZXJ0
eUJhZy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9w
ZXJ0eUJhZyk6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJv
cGVydHlCYWcpOgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpX
ZWJFcnJvcik6CisgICAgICAgIChXZWJFcnJvcjo6fldlYkVycm9yKToKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6V2ViRnJhbWUpOgorICAgICAgICAoV2ViRnJh
bWU6On5XZWJGcmFtZSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGljeUxp
c3RlbmVyKToKKyAgICAgICAgKiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIpOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6fldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Q
b3NpdGlvbik6CisgICAgICAgIChXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbik6CisgICAgICAgICogV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KToK
KyAgICAgICAgKFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KToKKyAgICAgICAgKiBXZWJIaXN0b3J5
SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0pOgorICAg
ICAgICAoV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSk6CisgICAgICAgICogV2ViSW5z
cGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rvcik6CisgICAgICAgICogV2ViSmF2YVNjcmlw
dENvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yKToKKyAgICAgICAgKFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJK
YXZhU2NyaXB0Q29sbGVjdG9yKToKKyAgICAgICAgKiBXZWJLaXRDbGFzc0ZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViS2l0Q2xhc3NGYWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KToKKyAgICAgICAgKiBX
ZWJLaXRNZXNzYWdlTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0
TWVzc2FnZUxvb3ApOgorICAgICAgICAoV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdl
TG9vcCk6CisgICAgICAgICogV2ViS2l0U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJLaXRT
dGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdFN0YXRpc3RpY3M6
On5XZWJLaXRTdGF0aXN0aWNzKToKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QpOgor
ICAgICAgICAoV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCk6Cisg
ICAgICAgICogV2ViTmF2aWdhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViTmF2aWdhdGlvbkRh
dGE6OldlYk5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYk5hdmlnYXRpb25EYXRhOjp+V2Vi
TmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAg
IChXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJOb3RpZmlj
YXRpb246On5XZWJOb3RpZmljYXRpb24pOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRl
ci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNl
bnRlcik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25D
ZW50ZXIpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZl
cmVuY2VzOjpXZWJQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6fldlYlBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNv
dXJjZTo6V2ViUmVzb3VyY2UpOgorICAgICAgICAoV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSk6
CisgICAgICAgICogV2ViU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYlNjcmlwdE9iamVj
dDo6V2ViU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlw
dE9iamVjdCk6CisgICAgICAgICogV2ViU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV2ViU2Ny
aXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYlNjcmlwdFdvcmxkOjp+V2Vi
U2NyaXB0V29ybGQpOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBXZWJTZXJpYWxpemVk
SlNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJTZXJpYWxpemVkSlNWYWx1ZTo6V2ViU2VyaWFsaXpl
ZEpTVmFsdWUpOgorICAgICAgICAoV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVk
SlNWYWx1ZSk6CisgICAgICAgICogV2ViVGV4dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYlRl
eHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYlRleHRSZW5kZXJlcjo6
fldlYlRleHRSZW5kZXJlcik6CisgICAgICAgICogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwOgorICAgICAgICAoV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlcik6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKToKKyAgICAgICAgKiBXZWJVUkxDcmVk
ZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwpOgorICAgICAg
ICAqIFdlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHA6CisgICAgICAgIChXZWJVUkxQcm90ZWN0aW9u
U3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxQcm90ZWN0aW9u
U3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSk6CisgICAgICAg
IChXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKToKKyAgICAgICAgKFdlYlVSTFJlc3Bv
bnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcDoKKyAgICAgICAgKFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuKToKKyAgICAgICAgKFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJD
b250ZW50VVJMUGF0dGVybik6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJW
aWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6On5XZWJWaWV3KToKKyAgICAgICAgKFdl
YlZpZXc6OmV4ZWNDb21tYW5kKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6
Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlV
UkwpOgorICAgICAgICAoV2ViVmlldzo6ZGVsZXRlXyk6CisgICAgICAgICogV2ViV29ya2Vyc1By
aXZhdGUuY3BwOgorICAgICAgICAoV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRl
KToKKyAgICAgICAgKFdlYldvcmtlcnNQcml2YXRlOjp+V2ViV29ya2Vyc1ByaXZhdGUpOgorCiAy
MDIyLTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3Ry
aW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBh
IFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IDY1OGUwNGJmNWFkN2ViNjEzNjMwYjdiNzEx
MWE5YmYyYWQyM2NkMzEuLjBkMzU4Mzg1MzJmODk0NmM5NzQ5YTcxYjIxYzQ3NTA0MzFlMzM2NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKQEAg
LTk3MSw3ICs5NzEsNyBAQCBKU0NDaGVja1N5bnRheFJlc3VsdCBqc2NfY29udGV4dF9jaGVja19z
eW50YXgoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogYwogICAgIEpTQzo6Vk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAKLSAgICBVUkwgc291cmNlVVJMID0gdXJpID8gVVJMKHsgfSwgdXJpKSA6IFVSTCgpOworICAg
IFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBVUkwoU3RyaW5nIHsgdXJpIH0pIDogVVJMKCk7CiAgICAg
SlNDOjpTb3VyY2VDb2RlIHNvdXJjZSA9IEpTQzo6bWFrZVNvdXJjZShTdHJpbmc6OmZyb21VVEY4
KGNvZGUsIGxlbmd0aCA8IDAgPyBzdHJsZW4oY29kZSkgOiBsZW5ndGgpLCBKU0M6OlNvdXJjZU9y
aWdpbiB7IHNvdXJjZVVSTCB9LAogICAgICAgICBzb3VyY2VVUkwuc3RyaW5nKCkgLCBUZXh0UG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyKCkpKTsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXggNWUyMzZhMmM0ZTAyNjc4YTE1YjgzZTg3
ZmY3N2ZmZDBlMWEzZGEzYi4uZTdjMDE5ZGZhZjdiYTViZjYyODYyMThlNjM1MDRlMjIzNTk2MWU4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2
Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJp
bGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nlck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBh
YmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAgICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dz
ZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2FwYWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAi
Iik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/
IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1wdHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+
c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJy
b3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmco
Im1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVj
dG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1MGIyZGZmYmMxZjcxYjU4ZmI3NzZmYTQ4
NzE2YzdlZjVmMjZhZmE1Li5hNzQ2NmM5NzI0ZjRkOTA5OTMyNTMxMzBhYmYxMWY4YzExODBhYjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yODc0
LDcgKzI4NzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT05fV0lUSF9BVFRSSUJVVEVTKGZ1
bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUsIFNVUFBSRVNTX0FTQQogCiAjZWxzZSAvLyBub3QgRU5B
QkxFKEFTU0VNQkxFUikKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9y
IHRoaXMgcGxhdGZvcm0iKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgcGxhdGZvcm0iX3MpOwogI2VuZGlm
IC8vIEVOQUJMRShBU1NFTUJMRVIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzFlNGRj
ZmE1Y2Q2OTQxN2RiZWNjY2M5Y2FjYWU4ZjE1NDg1YWQ1ZC4uMzlmMmUyY2EyYTFkOGMyZTZiNDhi
MmM3ZTMzMjViMzNjNzQxMWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTI4NiwxNiArMjg2
LDEzIEBAIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0YXJnCiAKIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVt
ZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcmIGZpbGVCKQogewotICAgIGF1dG8g
ZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQSk7Ci0gICAgYXV0byBm
c1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVCKTsKLQotICAgIGlmIChm
c1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCisgICAgaWYgKGZpbGVB
LmlzTnVsbCgpIHx8IGZpbGVCLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwogCi0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZp
Y2VJZChmc1JlcEZpbGVBKTsKLSAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZz
UmVwRmlsZUIpOworICAgIGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZmlsZUEpOwor
ICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZmlsZUIpOwogCiAgICAgaWYgKGZp
bGVBRGV2ICYmIGZpbGVCRGV2KQogICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJE
ZXYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDIxMTgzYWE3ZWIyZjY3ZTk0N2M0OGM1ZDkxNzMyMDVh
ODYxY2ZhYjkuLmJjYWUxMDZiM2UzNDVlMWRiZjhkZWI1YmQ0Zjc5NzM4ZjA2ODVhOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
cGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25z
dCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpv
cHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIy
NjY0NGE5NjIzYjJiYzYzMWFhNTA5MTAxZTU4ZjcxLi44NTEwMDQwNjNlY2UzMzBhZDhhYzczZTQ2
ZGRlMGRhNWQwOTg0MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApA
QCAtMjQ3LDggKzI0NywxMiBAQCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6
Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUp
CitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgaWYgKGZzRmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRv
cHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FU
VFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUlu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCA3ZjllOGZj
M2QwZmMzZTNjNjg3NGNlNjcyOGUzNmVkMjRjODBmMzhjLi45MzMyNDUwZmZiZTY5ODg1MjNlZDYx
OWFmODNhZGVmMWJiM2I4ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKQEAgLTI0MSw4ICsyNDEsMTIgQEAgZW5kOgogfQogI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkKIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0
cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoc3RhdChm
c0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0xKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYTQzZWEyZTQ2NTBlMDMzZThlZDFiZWZi
NzdjNTAwODA5MTNkNGRiYS4uNjcxYmY4ODIyNmRiMGY2ODZlNzMwZDZiNmRmMGU0YTJhOGMyMDY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC04MCw4ICs4MCwxMSBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJp
bmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKKyAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIGlzIGV4cGxpY2l0IHRvIGVuY291cmFnZSBkZXZlbG9wZXJzIHRv
IHVzZSBBU0NJSUxpdGVyYWwgYW5kIHRoZSAiIl9zIHN1ZmZpeCB3aGVuIHBvc3NpYmxlLAorICAg
IC8vIGFzIHRoZSBTdHJpbmcoQVNDSUlMaXRlcmFsKSBpcyBtb3JlIGVmZmljaWVudC4gQWxzbyBu
b3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3RvciB0cmVhdHMgaW5wdXQgYXMgTGF0aW4tMS4KKyAgICAv
LyBEZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVh
ZC4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSB0aGlzIHRvIGZyb21M
YXRpbjEoKS4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5n
IGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93
dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5YWQ4OTkxZjRmYzRlMDYx
OGUyNzk4NWM4YmI5MS4uOThiZjU2NmNlMjVjYTVlNmNmMWY0MTlkNDMwNzUyMmE5MzUxYzU0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3RyaW5n
IGxvZ0xldmVsU3RyaW5nKCkKICAgICBXVEZMb2dBbHdheXMoIldFQktJVF9ERUJVRyBpcyBub3Qg
ZW1wdHksIGJ1dCB0aGlzIGlzIGEgcmVsZWFzZSBidWlsZC4gTm90aWNlIHRoYXQgbWFueSBsb2cg
bWVzc2FnZXMgd2lsbCBvbmx5IGFwcGVhciBpbiBhIGRlYnVnIGJ1aWxkLiIpOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gbG9nRW52OworICAgIHJldHVybiBTdHJpbmcgeyBsb2dFbnYgfTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXgg
MjhkMWNlNWY2ZWUxOGJkMDY5ZDdmNjc2ZGI1MTI1NGY0YTM1ZWZhOC4uOTc5MTVhMjM4MWZjMjMz
Njc4ZDUyZGMzZjBkMGRhNTczY2NlOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4OTkzMWM0YzJkNTMzMTdlOGM1ZTAxN2UyYWEx
Mi4uYzkyYTc3YThjMTY0MjllMGZkNjI0NDI0MTIwMWIzZTk2NTMzMGRkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZv
cm1MYW5ndWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsK
IAotICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFO
R05BTUUsICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FM
RV9TSVNPNjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9j
YWxlSW5mbyhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNv
dW50cnlOYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRw
b2ludC5jcHAKaW5kZXggMWFlNjIyOTg1OGZlNGU5Y2U2ODNjMzJjMmU2YWI3YjkwMThiODA2Zi4u
MjllMjU1NzY0ZWEzNWYxMjRlMWM5YmRhMTNmOTgzNTkwYTA4MTJiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFF
bmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UlRDU2RwVHlwZSwgU3RyaW5nPj4gZmV0Y2hEZXNj
cmlwdGlvbihHc3RFbGVtZW50KgogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZHBTdHJpbmcoZ3N0
X3NkcF9tZXNzYWdlX2FzX3RleHQoZGVzY3JpcHRpb24tPnNkcCkpOwogICAgIEdTVF9UUkFDRV9P
QkpFQ1Qod2VicnRjQmluLCAiJXMtZGVzY3JpcHRpb24gU0RQOiAlcyIsIG5hbWUsIHNkcFN0cmlu
Zy5nZXQoKSk7Ci0gICAgcmV0dXJuIHsgeyBmcm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVz
Y3JpcHRpb24uZ2V0KCkpLCBzZHBTdHJpbmcuZ2V0KCkgfSB9OworICAgIHJldHVybiB7IHsgZnJv
bVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0aW9uLmdldCgpKSwgU3RyaW5nIHsgc2Rw
U3RyaW5nLmdldCgpIH0gfSB9OwogfQogCiBzdGF0aWMgR3N0V2ViUlRDU2lnbmFsaW5nU3RhdGUg
ZmV0Y2hTaWduYWxpbmdTdGF0ZShHc3RFbGVtZW50KiB3ZWJydGNCaW4pCkBAIC00NTYsNyArNDU2
LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjpzdG9yZVJlbW90ZU1MaW5lSW5mbyhH
c3RTRFBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBtX21lZGlhRm9yTWlkLnNldCh7IG1pZCB9LCBnX3N0cl9lcXVhbChtZWRpYVR5
cGUsICJhdWRpbyIpID8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7CisgICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KFN0
cmluZyB7IG1pZCB9LCBnX3N0cl9lcXVhbChtZWRpYVR5cGUsICJhdWRpbyJfcykgPyBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZp
ZGVvKTsKIAogICAgICAgICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVh
bWVyL2dzdC1wbHVnaW5zLWJhZC8tL21lcmdlX3JlcXVlc3RzLzE5MDcKICAgICAgICAgaWYgKHNk
cE1lZGlhSGFzQXR0cmlidXRlS2V5KG1lZGlhLCAiaWNlLWxpdGUiKSkgewpAQCAtOTI0LDcgKzky
NCw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRlKEdTdHJl
YW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAKICAgICBpZiAoIWNhbmRpZGF0ZS5jYW5k
aWRhdGUuc3RhcnRzV2l0aCgiY2FuZGlkYXRlOiIpKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRkSWNl
Q2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhw
ZWN0IGxpbmU6IGNhbmRpZGF0ZTo8Y2FuZGlkYXRlLXN0cj4iIH0pOworICAgICAgICAgICAgdGFz
ay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNhbmRpZGF0
ZTo8Y2FuZGlkYXRlLXN0cj4iX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRk
SWNlQ2FuZGlkYXRlKEdTdHJlYW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAgICAgYXV0
byBwYXJzZWRDYW5kaWRhdGUgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChjYW5kaWRhdGUuY2FuZGlk
YXRlKTsKICAgICBpZiAoIXBhcnNlZENhbmRpZGF0ZSkgewogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0YXNrID0gY3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZElj
ZUNhbmRpZGF0ZUNhbGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVy
cm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRpZGF0ZSIgfSk7CisgICAgICAgICAgICB0YXNrLT5ydW4o
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFcnJvciBwcm9jZXNzaW5nIElDRSBjYW5kaWRh
dGUiX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA4NSw5
ICsxMDg1LDkgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVz
Y3JpcHRpb25TdWNjZWVkZWQoR1VuaXF1ZVB0cjxHc3RXZWIKIAogICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IHNkcChnc3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAg
ICAgICAgIGlmIChtX2lzSW5pdGlhdG9yKQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQo
KSB9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3JlYXRlQW5zd2VyU3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdldCgpIH0p
OwogICAgIH0pOwogfQogCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlh
RW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChHVW5pcXVlUHRyPEdFcnJv
cj4mJgogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBleGMgPSBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBlcnJv
ci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIiB9OworICAgICAgICBhdXRvIGV4YyA9IEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpIDogIlVua25vd24gRXJyb3IiX3MgfTsKICAgICAgICAgaWYgKG1faXNJbml0aWF0b3Ip
CiAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlckZhaWxlZChX
VEZNb3ZlKGV4YykpOwogICAgICAgICBlbHNlCkBAIC0xMTI1LDcgKzExMjUsNyBAQCB2b2lkIEdT
dHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAo
IXJlY2VpdmVyIHx8ICFtaWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8
R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRp
YUZvck1pZC5nZXQobWlkLmdldCgpKSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
Lm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21lZGlhRm9yTWlkLmdldChTdHJpbmcg
eyBtaWQuZ2V0KCkgfSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjU2NGU5YTQ2NDgwOGJiMDhj
YjQwNjNjYWFjNjEyNDAyYmRmZDVjMi4uMzBmZWYwZTAyMjc4NWIxNWExMTY4YjNkNGZiYzY2Njkx
YmUxNTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rpb25C
YWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVyUGVl
ckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGllcyhj
b25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGll
czsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDovL3d3
dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0ZW5z
aW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsg
Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13aWRl
LWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7CiAg
ICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAgICBj
YXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9P
UFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAwMCwK
ICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
IiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0
cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7
IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgw
MDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsg
Lm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1w
dHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUg
PSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9
IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2Vk
QXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xvY2tS
YXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAuc2Rw
Rm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5n
KCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lv
bnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAgY2Fw
YWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVu
dGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBhY2l0
eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNr
ZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNsb2Nr
UmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAgICAg
IGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVv
L1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOworICAg
ICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2
aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVz
LmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAgICAg
ICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQOSJf
cywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVu
Y2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAgIC5z
ZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAgICAg
ICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAgICAg
ICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2ZWwt
aWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpAQCAt
MjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0Ny
ZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQogewog
ICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFuc3dl
ckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNjcmlw
dGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApp
bmRleCAyNDQ5YWU4NWYxNmRkNDFiMWEzOWEyMDgwYjQ2M2E1ODY3MDA4NDljLi5lNzc4ZjZkNGYw
YzBiNDY3ODIzMGM2MmNkNjYwMmE4ZTljNjEzZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
U3RyaW5nIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6bWlkKCkKIHsKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IG1pZDsKICAgICBnX29iamVjdF9nZXQobV9ydGNUcmFuc2NlaXZlci5n
ZXQoKSwgIm1pZCIsICZtaWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgIHJldHVybiBtaWQuZ2V0
KCk7CisgICAgcmV0dXJuIFN0cmluZyB7IG1pZC5nZXQoKSB9OwogfQogCiB2b2lkIEdTdHJlYW1l
clJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcCgpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR1N0
cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9wcGVkKCkgY29uc3QKIHN0YXRpYyBpbmxp
bmUgV0FSTl9VTlVTRURfUkVUVVJOIEV4Y2VwdGlvbk9yPEdzdENhcHMqPiB0b1J0cENvZGVjQ2Fw
YWJpbGl0eShjb25zdCBSVENSdHBDb2RlY0NhcGFiaWxpdHkmIGNvZGVjKQogewogICAgIGlmICgh
Y29kZWMubWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikgJiYgIWNvZGVjLm1pbWVUeXBlLnN0
YXJ0c1dpdGgoImF1ZGlvLyIpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IGJhZCBtaW1lVHlwZSIgfTsK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJU
Q1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUiX3MgfTsKIAogICAgIGF1dG8gY29tcG9u
ZW50cyA9IGNvZGVjLm1pbWVUeXBlLnNwbGl0KCcvJyk7CiAgICAgYXV0byogY2FwcyA9IGdzdF9j
YXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtcnRwIiwgIm1lZGlhIiwgR19UWVBFX1NUUklO
RywgY29tcG9uZW50c1swXS5hc2NpaSgpLmRhdGEoKSwgImVuY29kaW5nLW5hbWUiLCBHX1RZUEVf
U1RSSU5HLCBjb21wb25lbnRzWzFdLmFzY2lpKCkuZGF0YSgpLCBudWxscHRyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clN0YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAppbmRleCBlM2I4MjMyYWJhMmEz
N2U1OTY1MjFjMDBiZTFiY2ZhYTYzMzhmNjY4Li5kY2Y3YWQxZThjNzA4YWFmY2VlNWM5MGYwNjkw
MzQyMWVjNTFhZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0
b3IuY3BwCkBAIC00MywxNSArNDMsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxSVENTdGF0
cyhSVENTdGF0c1JlcG9ydDo6U3RhdHMmIHN0YXRzLCBjb25zdCBHc3RTdHJ1Y3R1cmUKICAgICBk
b3VibGUgdGltZXN0YW1wOwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUoc3RydWN0
dXJlLCAidGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCiAgICAgICAgIHN0YXRzLnRpbWVzdGFtcCA9
IHRpbWVzdGFtcDsKLSAgICBzdGF0cy5pZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1
Y3R1cmUsICJpZCIpOworICAgIHN0YXRzLmlkID0gU3RyaW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRf
c3RyaW5nKHN0cnVjdHVyZSwgImlkIikgfTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGZpbGxS
VENSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6UnRwU3RyZWFtU3RhdHMmIHN0YXRzLCBj
b25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBmaWxsUlRDU3RhdHMoc3RhdHMs
IHN0cnVjdHVyZSk7CiAKLSAgICBzdGF0cy50cmFuc3BvcnRJZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0
X3N0cmluZyhzdHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKTsKLSAgICBzdGF0cy5jb2RlY0lkID0g
Z3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgImNvZGVjLWlkIik7CisgICAgc3Rh
dHMudHJhbnNwb3J0SWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0
dXJlLCAidHJhbnNwb3J0LWlkIikgfTsKKyAgICBzdGF0cy5jb2RlY0lkID0gU3RyaW5nIHsgZ3N0
X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgImNvZGVjLWlkIikgfTsKIAogICAgIHVu
c2lnbmVkIHZhbHVlOwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91aW50KHN0cnVjdHVyZSwg
InNzcmMiLCAmdmFsdWUpKQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBm
aWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSdHBTdHJl
YW1TCiAgICAgICAgIHN0YXRzLm5hY2tDb3VudCA9IG5hY2tDb3VudDsKIAogICAgIGlmIChjb25z
dCBjaGFyKiByZW1vdGVJZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJy
ZW1vdGUtaWQiKSkKLSAgICAgICAgc3RhdHMucmVtb3RlSWQgPSByZW1vdGVJZDsKKyAgICAgICAg
c3RhdHMucmVtb3RlSWQgPSBTdHJpbmcgeyByZW1vdGVJZCB9OwogCiAgICAgLy8gRklYTUUKICAg
ICAvLyBzdGF0cy50YXJnZXRCaXRyYXRlID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJUQ1V0aWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJU
Q1V0aWxzLmNwcAppbmRleCA1NGI5NzRkM2E3MmQ2YjdhNDlkMzI4YzEyYjNhMTQyYjFhMWVhM2Qx
Li42YTE2MzZjNmRkYjZlNmZiNTk1YThjNWQyZmUyMGJkNzM3NDYxYTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJS
VENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJlZlB0cjxS
VENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0YWlsID0g
dG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0Y0Vycm9y
LT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdlKTsKKyAg
ICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4KHJ0Y0Vy
cm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRDQml0UmF0
ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBz
dGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5nUGFyYW1l
dGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91aW50NjQo
cnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAgICAgICAg
cGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJhbWV0ZXJz
LnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlkIik7Cisg
ICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcocnRj
UGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9uRG93bkJ5
OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywgInNjYWxl
LXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggOTJlMWExOGVhNzg5N2Y2YTQyMmQyZjQ5N2NiNjk0MTJmMDE1OTE1Yi4uNjc2MTAx
OTcxODE2MzE3NGEwMmNmZmYwNzU1ZjczMjA0ZjNhMjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzUsMTIgKzI3NSwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNl
bGlmIFVTRShPUEVOR0xfRVMpCiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmPihnbCkuZ2V0RXh0ZW5zaW9ucygpOwotICAgIGJv
b2wgcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2ls
ICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwor
ICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JT
dGVuY2lsICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCJfcyk7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0
aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9DT01QT05FTlQxNjsK
ICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRFWDg7CiAjZWxzZQogICAg
IGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsKLSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNr
ZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1
cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhG
b3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRf
U1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9
IEdMOjpTVEVOQ0lMX0NPTVBPTkVOVDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJ
bXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWFiYTYzOThlNmZkYzUyMDMyMjA5NzdlZGJkZWIwLi5i
ZTdmYzRiODZlZjlkMjk4ZmRiN2NkOTE4MGViM2E5ZWNiOWVlOTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5nIGFkYXB0
ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7CiAgICAgV0dQVUFkYXB0ZXJQcm9wZXJ0aWVz
IHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKGFkYXB0ZXIsICZwcm9w
ZXJ0aWVzKTsKLSAgICByZXR1cm4gcHJvcGVydGllcy5uYW1lOworICAgIHJldHVybiBTdHJpbmcg
eyBwcm9wZXJ0aWVzLm5hbWUgfTsKIH0KIAogc3RhdGljIFJlZjxTdXBwb3J0ZWRGZWF0dXJlcz4g
c3VwcG9ydGVkRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURl
dmljZUltcGwuY3BwCmluZGV4IDk2OWE3YTJjYTdiOWJhNjJjYTI1Y2VhYzI4ZjNhMzlkYjM0YjA5
OTMuLjhjOTQ3NWFmNTAxZTYzZDZmMmQ5YTYyNDA1Y2I3NTEyODA1YTEwODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNl
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1w
bDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJy
b3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAg
ICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9Owor
ICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsg
bWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJy
b3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlF
cnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGFmMzU0MjViODdiMDBkNjViYzQ0NjczMDFhZGQ2
Li4wZDRkNDZhMGVkOGM4ZTExMDNiNjk3NjFlNWQ1ZTNjN2M5ZjAwYjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMzY4LDcgKzM2OCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1Rl
eHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0
YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uKTsKKyAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpLmNwcAppbmRleCBhNmI1MTE5YmU4MmFjYjA4MWU5NjNmYWZiYjM2NWIwZjExZWMwZjlm
Li5kYTkyZmQ0MTNmMTA3N2M3MTI5MGUxM2EzZTU0ODYyMGJlN2M4OTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGkuY3BwCkBAIC04NjksNzIgKzg2OSw3MiBAQCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogewog
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcDsKICNpZiBQTEFURk9STShHVEspCi0gICAg
bWFwLmFkZCgidG9vbGtpdCIsICJXZWJLaXRHVEsiKTsKKyAgICBtYXAuYWRkKCJ0b29sa2l0Il9z
LCAiV2ViS2l0R1RLIl9zKTsKICNlbGlmIFBMQVRGT1JNKFdQRSkKLSAgICBtYXAuYWRkKCJ0b29s
a2l0IiwgIldQRVdlYktpdCIpOworICAgIG1hcC5hZGQoInRvb2xraXQiX3MsICJXUEVXZWJLaXQi
X3MpOwogI2VuZGlmCiAgICAgaWYgKCFtX2NvcmVPYmplY3QpCiAgICAgICAgIHJldHVybiBtYXA7
CiAKICAgICBTdHJpbmcgdGFnTmFtZSA9IG1fY29yZU9iamVjdC0+dGFnTmFtZSgpOwogICAgIGlm
ICghdGFnTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoInRhZyIsIHRhZ05hbWUpOwor
ICAgICAgICBtYXAuYWRkKCJ0YWciX3MsIHRhZ05hbWUpOwogCiAgICAgaWYgKGF1dG8qIGVsZW1l
bnQgPSBtX2NvcmVPYmplY3QtPmVsZW1lbnQoKSkgewogICAgICAgICBTdHJpbmcgaWQgPSBlbGVt
ZW50LT5nZXRJZEF0dHJpYnV0ZSgpLnN0cmluZygpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImlkIiwgaWQpOworICAgICAgICAgICAgbWFwLmFkZCgi
aWQiX3MsIGlkKTsKICAgICB9CiAKICAgICBpbnQgbGV2ZWwgPSBtX2NvcmVPYmplY3QtPmlzSGVh
ZGluZygpID8gbV9jb3JlT2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA6IG1fY29yZU9iamVjdC0+aGll
cmFyY2hpY2FsTGV2ZWwoKTsKICAgICBpZiAobGV2ZWwpCi0gICAgICAgIG1hcC5hZGQoImxldmVs
IiwgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKKyAgICAgICAgbWFwLmFkZCgibGV2ZWwiX3MsIFN0
cmluZzo6bnVtYmVyKGxldmVsKSk7CiAKICAgICBpbnQgcm93Q291bnQgPSBtX2NvcmVPYmplY3Qt
PmF4Um93Q291bnQoKTsKICAgICBpZiAocm93Q291bnQpCi0gICAgICAgIG1hcC5hZGQoInJvd2Nv
dW50IiwgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKKyAgICAgICAgbWFwLmFkZCgicm93Y291
bnQiX3MsIFN0cmluZzo6bnVtYmVyKHJvd0NvdW50KSk7CiAKICAgICBpbnQgY29sdW1uQ291bnQg
PSBtX2NvcmVPYmplY3QtPmF4Q29sdW1uQ291bnQoKTsKICAgICBpZiAoY29sdW1uQ291bnQpCi0g
ICAgICAgIG1hcC5hZGQoImNvbGNvdW50IiwgU3RyaW5nOjpudW1iZXIoY29sdW1uQ291bnQpKTsK
KyAgICAgICAgbWFwLmFkZCgiY29sY291bnQiX3MsIFN0cmluZzo6bnVtYmVyKGNvbHVtbkNvdW50
KSk7CiAKICAgICBpbnQgcm93SW5kZXggPSBtX2NvcmVPYmplY3QtPmF4Um93SW5kZXgoKTsKICAg
ICBpZiAocm93SW5kZXggIT0gLTEpCi0gICAgICAgIG1hcC5hZGQoInJvd2luZGV4IiwgU3RyaW5n
OjpudW1iZXIocm93SW5kZXgpKTsKKyAgICAgICAgbWFwLmFkZCgicm93aW5kZXgiX3MsIFN0cmlu
Zzo6bnVtYmVyKHJvd0luZGV4KSk7CiAKICAgICBpbnQgY29sdW1uSW5kZXggPSBtX2NvcmVPYmpl
Y3QtPmF4Q29sdW1uSW5kZXgoKTsKICAgICBpZiAoY29sdW1uSW5kZXggIT0gLTEpCi0gICAgICAg
IG1hcC5hZGQoImNvbGluZGV4IiwgU3RyaW5nOjpudW1iZXIoY29sdW1uSW5kZXgpKTsKKyAgICAg
ICAgbWFwLmFkZCgiY29saW5kZXgiX3MsIFN0cmluZzo6bnVtYmVyKGNvbHVtbkluZGV4KSk7CiAK
ICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4obV9jb3JlT2JqZWN0KSkgewogICAg
ICAgICBhdXRvJiBjZWxsID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKm1fY29y
ZU9iamVjdCk7CiAgICAgICAgIGludCByb3dTcGFuID0gY2VsbC5heFJvd1NwYW4oKTsKICAgICAg
ICAgaWYgKHJvd1NwYW4gIT0gLTEpCi0gICAgICAgICAgICBtYXAuYWRkKCJyb3dzcGFuIiwgU3Ry
aW5nOjpudW1iZXIocm93U3BhbikpOworICAgICAgICAgICAgbWFwLmFkZCgicm93c3BhbiJfcywg
U3RyaW5nOjpudW1iZXIocm93U3BhbikpOwogCiAgICAgICAgIGludCBjb2x1bW5TcGFuID0gY2Vs
bC5heENvbHVtblNwYW4oKTsKICAgICAgICAgaWYgKGNvbHVtblNwYW4gIT0gLTEpCi0gICAgICAg
ICAgICBtYXAuYWRkKCJjb2xzcGFuIiwgU3RyaW5nOjpudW1iZXIoY29sdW1uU3BhbikpOworICAg
ICAgICAgICAgbWFwLmFkZCgiY29sc3BhbiJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1uU3Bhbikp
OwogICAgIH0KIAogICAgIFN0cmluZyBwbGFjZWhvbGRlciA9IG1fY29yZU9iamVjdC0+cGxhY2Vo
b2xkZXJWYWx1ZSgpOwogICAgIGlmICghcGxhY2Vob2xkZXIuaXNFbXB0eSgpKQotICAgICAgICBt
YXAuYWRkKCJwbGFjZWhvbGRlci10ZXh0IiwgcGxhY2Vob2xkZXIpOworICAgICAgICBtYXAuYWRk
KCJwbGFjZWhvbGRlci10ZXh0Il9zLCBwbGFjZWhvbGRlcik7CiAKICAgICBpZiAobV9jb3JlT2Jq
ZWN0LT5zdXBwb3J0c0F1dG9Db21wbGV0ZSgpKQotICAgICAgICBtYXAuYWRkKCJhdXRvY29tcGxl
dGUiLCBtX2NvcmVPYmplY3QtPmF1dG9Db21wbGV0ZVZhbHVlKCkpOworICAgICAgICBtYXAuYWRk
KCJhdXRvY29tcGxldGUiX3MsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CiAK
ICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0hhc1BvcHVwKCkpCi0gICAgICAgIG1hcC5h
ZGQoImhhc3BvcHVwIiwgbV9jb3JlT2JqZWN0LT5wb3B1cFZhbHVlKCkpOworICAgICAgICBtYXAu
YWRkKCJoYXNwb3B1cCJfcywgbV9jb3JlT2JqZWN0LT5wb3B1cFZhbHVlKCkpOwogCiAgICAgaWYg
KG1fY29yZU9iamVjdC0+c3VwcG9ydHNDdXJyZW50KCkpCi0gICAgICAgIG1hcC5hZGQoImN1cnJl
bnQiLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKKyAgICAgICAgbWFwLmFkZCgiY3Vy
cmVudCJfcywgbV9jb3JlT2JqZWN0LT5jdXJyZW50VmFsdWUoKSk7CiAKICAgICBpZiAobV9jb3Jl
T2JqZWN0LT5zdXBwb3J0c1Bvc0luU2V0KCkpCi0gICAgICAgIG1hcC5hZGQoInBvc2luc2V0Iiwg
U3RyaW5nOjpudW1iZXIobV9jb3JlT2JqZWN0LT5wb3NJblNldCgpKSk7CisgICAgICAgIG1hcC5h
ZGQoInBvc2luc2V0Il9zLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkp
KTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzU2V0U2l6ZSgpKQotICAgICAgICBt
YXAuYWRkKCJzZXRzaXplIiwgU3RyaW5nOjpudW1iZXIobV9jb3JlT2JqZWN0LT5zZXRTaXplKCkp
KTsKKyAgICAgICAgbWFwLmFkZCgic2V0c2l6ZSJfcywgU3RyaW5nOjpudW1iZXIobV9jb3JlT2Jq
ZWN0LT5zZXRTaXplKCkpKTsKIAogICAgIC8vIFRoZSBDb3JlIEFBTSBzdGF0ZXMgdGhhdCBhbiBl
eHBsaWNpdGx5LXNldCB2YWx1ZSBzaG91bGQgYmUgZXhwb3NlZCwgaW5jbHVkaW5nICJub25lIi4K
ICAgICBpZiAoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KG1fY29yZU9iamVjdCkt
Pmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfc29ydEF0dHIpKSB7CkBAIC05NDIsMjcgKzk0
MiwyNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0
aW9uOjpJbnZhbGlkOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNvcnREaXJlY3Rpb246OkFzY2VuZGluZzoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQi
LCAiYXNjZW5kaW5nIik7CisgICAgICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAiYXNjZW5kaW5n
Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgotICAgICAgICAgICAgbWFwLmFkZCgic29ydCIsICJkZXNj
ZW5kaW5nIik7CisgICAgICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAiZGVzY2VuZGluZyJfcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVj
dGlvbjo6T3RoZXI6Ci0gICAgICAgICAgICBtYXAuYWRkKCJzb3J0IiwgIm90aGVyIik7CisgICAg
ICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAib3RoZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok5vbmU6Ci0gICAgICAg
ICAgICBtYXAuYWRkKCJzb3J0IiwgIm5vbmUiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQi
X3MsICJub25lIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBtX2NvcmVPYmplY3QtPnJlYWRPbmx5VmFsdWUoKTsKICAg
ICBpZiAoIWlzUmVhZE9ubHkuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJyZWFkb25seSIs
IGlzUmVhZE9ubHkpOworICAgICAgICBtYXAuYWRkKCJyZWFkb25seSJfcywgaXNSZWFkT25seSk7
CiAKICAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+dmFsdWVEZXNj
cmlwdGlvbigpOwogICAgIGlmICghdmFsdWVEZXNjcmlwdGlvbi5pc0VtcHR5KCkpCi0gICAgICAg
IG1hcC5hZGQoInZhbHVldGV4dCIsIHZhbHVlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJ2YWx1ZXRleHQiX3MsIHZhbHVlRGVzY3JpcHRpb24pOwogCiAgICAgLy8gQWNjb3JkaW5nIHRv
IHRoZSBXM0MgQ29yZSBBY2Nlc3NpYmlsaXR5IEFQSSBNYXBwaW5ncyAxLjEsIHNlY3Rpb24gNS40
LjEgR2VuZXJhbCBSdWxlczoKICAgICAvLyAiVXNlciBhZ2VudHMgbXVzdCBleHBvc2UgdGhlIFdB
SS1BUklBIHJvbGUgc3RyaW5nIGlmIHRoZSBBUEkgc3VwcG9ydHMgYSBtZWNoYW5pc20gdG8gZG8g
c28uIgpAQCAtOTcxLDU5ICs5NzEsNTkgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICAvLyB3aXRoIEFSSUEg
cm9sZXMsIGFuZCBpdCBtaWdodCBub3QgY29udGFpbiB0aGUgYWN0dWFsIEFSSUEgcm9sZSB2YWx1
ZSAoZS5nLiBEUHViIEFSSUEpLgogICAgIFN0cmluZyByb2xlU3RyaW5nID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eU9iamVjdCo+KG1fY29yZU9iamVjdCktPmdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OnJvbGVBdHRyKTsKICAgICBpZiAoIXJvbGVTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBt
YXAuYWRkKCJ4bWwtcm9sZXMiLCByb2xlU3RyaW5nKTsKKyAgICAgICAgbWFwLmFkZCgieG1sLXJv
bGVzIl9zLCByb2xlU3RyaW5nKTsKIAogICAgIFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcgPSBt
X2NvcmVPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwogICAgIGlmICghY29tcHV0ZWRSb2xl
U3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1yb2xlIiwgY29t
cHV0ZWRSb2xlU3RyaW5nKTsKKyAgICAgICAgbWFwLmFkZCgiY29tcHV0ZWQtcm9sZSJfcywgY29t
cHV0ZWRSb2xlU3RyaW5nKTsKIAogICAgICAgICAvLyBUaGUgSFRNTCBBQU0gbWFwcyBzZXZlcmFs
IGVsZW1lbnRzIHRvIEFSSUEgbGFuZG1hcmsgcm9sZXMuIEluIG9yZGVyIGZvciB0aGUgdHlwZSBv
ZiBsYW5kbWFyawogICAgICAgICAvLyB0byBiZSBvYnRhaW5hYmxlIGluIHRoZSBzYW1lIGZhc2hp
b24gYXMgYW4gQVJJQSBsYW5kbWFyaywgZmFsbCBiYWNrIG9uIHRoZSBjb21wdXRlZFJvbGVTdHJp
bmcuCiAgICAgICAgIC8vIFdlIGFsc28gd2FudCB0byBkbyB0aGlzIGZvciB0aGUgc3R5bGUtZm9y
bWF0LWdyb3VwIGVsZW1lbnQgdHlwZXMgc28gdGhhdCB0aGUgdHlwZSBvZiBmb3JtYXQKICAgICAg
ICAgLy8gZ3JvdXAgaXQgaXMgZG9lc24ndCBnZXQgbG9zdCB0byBhIGdlbmVyaWMgcGxhdGZvcm0g
cm9sZS4KICAgICAgICAgaWYgKG1fY29yZU9iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiAobV9jb3JlT2JqZWN0LT5pc0xhbmRtYXJrKCkg
fHwgbV9jb3JlT2JqZWN0LT5pc1N0eWxlRm9ybWF0R3JvdXAoKSkpCi0gICAgICAgICAgICBtYXAu
c2V0KCJ4bWwtcm9sZXMiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICAgICAgbWFwLnNl
dCgieG1sLXJvbGVzIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogICAgIH0KIAogICAgIFN0cmlu
ZyByb2xlRGVzY3JpcHRpb24gPSBtX2NvcmVPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwogICAg
IGlmICghcm9sZURlc2NyaXB0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgicm9sZWRl
c2NyaXB0aW9uIiwgcm9sZURlc2NyaXB0aW9uKTsKKyAgICAgICAgbWFwLmFkZCgicm9sZWRlc2Ny
aXB0aW9uIl9zLCByb2xlRGVzY3JpcHRpb24pOwogCiAgICAgU3RyaW5nIGRyb3BFZmZlY3QgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6YXJpYV9kcm9wZWZmZWN0QXR0cik7CiAgICAgaWYgKCFkcm9wRWZmZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgiZHJvcGVmZmVjdCIsIGRyb3BFZmZlY3QpOwor
ICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0Il9zLCBkcm9wRWZmZWN0KTsKIAogICAgIGlmICht
X2NvcmVPYmplY3QtPnN1cHBvcnRzRHJhZ2dpbmcoKSkKLSAgICAgICAgbWFwLmFkZCgiZ3JhYmJl
ZCIsIG1fY29yZU9iamVjdC0+aXNHcmFiYmVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAg
ICAgbWFwLmFkZCgiZ3JhYmJlZCJfcywgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVl
Il9zIDogImZhbHNlIl9zKTsKIAogICAgIFN0cmluZyBrZXlTaG9ydGN1dHMgPSBtX2NvcmVPYmpl
Y3QtPmtleVNob3J0Y3V0c1ZhbHVlKCk7CiAgICAgaWYgKCFrZXlTaG9ydGN1dHMuaXNFbXB0eSgp
KQotICAgICAgICBtYXAuYWRkKCJrZXlzaG9ydGN1dHMiLCBrZXlTaG9ydGN1dHMpOworICAgICAg
ICBtYXAuYWRkKCJrZXlzaG9ydGN1dHMiX3MsIGtleVNob3J0Y3V0cyk7CiAKICAgICBpZiAobV9j
b3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0T2JqZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQpIHx8IG1fY29yZU9iamVjdC0+aXNNYXRo
TXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6
OlByZVN1YnNjcmlwdCkpCi0gICAgICAgIG1hcC5hZGQoIm11bHRpc2NyaXB0LXR5cGUiLCAicHJl
Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2NyaXB0LXR5cGUiX3MsICJwcmUiX3MpOwogICAg
IGVsc2UgaWYgKG1fY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdXBlcnNjcmlwdCkgfHwgbV9jb3Jl
T2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0T2JqZWN0VHlwZTo6UG9zdFN1YnNjcmlwdCkpCi0gICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiLCAicG9zdCIpOworICAgICAgICBtYXAuYWRkKCJtdWx0aXNjcmlwdC10eXBlIl9z
LCAicG9zdCJfcyk7CiAKICAgICBpZiAoYXV0byogbGl2ZUNvbnRhaW5lciA9IG1fY29yZU9iamVj
dC0+bGl2ZVJlZ2lvbkFuY2VzdG9yKGZhbHNlKSkgewogICAgICAgICBhdXRvIGxpdmVTdGF0dXMg
PSBsaXZlQ29udGFpbmVyLT5saXZlUmVnaW9uU3RhdHVzKCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1saXZlIiwgbGl2ZVN0YXR1cyk7CisgICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1s
aXZlIl9zLCBsaXZlU3RhdHVzKTsKICAgICAgICAgYXV0byByZWxldmFudCA9IGxpdmVDb250YWlu
ZXItPmxpdmVSZWdpb25SZWxldmFudCgpOwotICAgICAgICBtYXAuYWRkKCJjb250YWluZXItcmVs
ZXZhbnQiLCByZWxldmFudCk7CisgICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1yZWxldmFudCJf
cywgcmVsZXZhbnQpOwogICAgICAgICBib29sIGlzQXRvbWljID0gbGl2ZUNvbnRhaW5lci0+bGl2
ZVJlZ2lvbkF0b21pYygpOwogICAgICAgICBpZiAoaXNBdG9taWMpCi0gICAgICAgICAgICBtYXAu
YWRkKCJjb250YWluZXItYXRvbWljIiwgInRydWUiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1hdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBsaXZl
Um9sZSA9IHJvbGVTdHJpbmcuaXNFbXB0eSgpID8gY29tcHV0ZWRSb2xlU3RyaW5nIDogcm9sZVN0
cmluZzsKICAgICAgICAgaWYgKCFsaXZlUm9sZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtYXAu
YWRkKCJjb250YWluZXItbGl2ZS1yb2xlIiwgbGl2ZVJvbGUpOworICAgICAgICAgICAgbWFwLmFk
ZCgiY29udGFpbmVyLWxpdmUtcm9sZSJfcywgbGl2ZVJvbGUpOwogCiAgICAgICAgIGlmIChsaXZl
Q29udGFpbmVyID09IG1fY29yZU9iamVjdCkgewotICAgICAgICAgICAgbWFwLmFkZCgibGl2ZSIs
IGxpdmVTdGF0dXMpOwotICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiLCByZWxldmFudCk7
CisgICAgICAgICAgICBtYXAuYWRkKCJsaXZlIl9zLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgICAg
IG1hcC5hZGQoInJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgICAgICBpZiAoaXNBdG9t
aWMpCi0gICAgICAgICAgICAgICAgbWFwLmFkZCgiYXRvbWljIiwgInRydWUiKTsKKyAgICAgICAg
ICAgICAgICBtYXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICAgICAgfSBlbHNlIGlm
ICghaXNBdG9taWMgJiYgbV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQXRvbWljKCkpCi0gICAgICAg
ICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAgbWFwLmFkZCgiYXRv
bWljIl9zLCAidHJ1ZSJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hcDsKQEAgLTEyOTEsMzQg
KzEyOTEsMzQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZWZmZWN0aXZlUm9s
ZU5hbWUoKSBjb25zdAogCiAgICAgc3dpdGNoICgqZWZmZWN0aXZlKSB7CiAgICAgY2FzZSBBdHNw
aTo6Um9sZTo6SW1hZ2U6Ci0gICAgICAgIHJldHVybiAiaW1hZ2UiOworICAgICAgICByZXR1cm4g
ImltYWdlIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRleHQ6CiAgICAgY2FzZSBBdHNwaTo6
Um9sZTo6U3RhdGljOgotICAgICAgICByZXR1cm4gInRleHQiOworICAgICAgICByZXR1cm4gInRl
eHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6SW52YWxpZFJvbGU6Ci0gICAgICAgIHJldHVy
biAiaW52YWxpZCI7CisgICAgICAgIHJldHVybiAiaW52YWxpZCJfczsKICAgICBjYXNlIEF0c3Bp
OjpSb2xlOjpQYW5lbDoKLSAgICAgICAgcmV0dXJuICJwYW5lbCI7CisgICAgICAgIHJldHVybiAi
cGFuZWwiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6UGFzc3dvcmRUZXh0OgotICAgICAgICBy
ZXR1cm4gInBhc3N3b3JkIHRleHQiOworICAgICAgICByZXR1cm4gInBhc3N3b3JkIHRleHQiX3M7
CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGU6Ci0gICAgICAgIHJldHVybiAidGFibGUiOwor
ICAgICAgICByZXR1cm4gInRhYmxlIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRhYmxlUm93
OgotICAgICAgICByZXR1cm4gInRhYmxlIHJvdyI7CisgICAgICAgIHJldHVybiAidGFibGUgcm93
Il9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRhYmxlQ2VsbDoKLSAgICAgICAgcmV0dXJuICJ0
YWJsZSBjZWxsIjsKKyAgICAgICAgcmV0dXJuICJ0YWJsZSBjZWxsIl9zOwogICAgIGNhc2UgQXRz
cGk6OlJvbGU6OlNlY3Rpb246Ci0gICAgICAgIHJldHVybiAic2VjdGlvbiI7CisgICAgICAgIHJl
dHVybiAic2VjdGlvbiJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpNYXRoRnJhY3Rpb246Ci0g
ICAgICAgIHJldHVybiAibWF0aCBmcmFjdGlvbiI7CisgICAgICAgIHJldHVybiAibWF0aCBmcmFj
dGlvbiJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpNYXRoUm9vdDoKLSAgICAgICAgcmV0dXJu
ICJtYXRoIHJvb3QiOworICAgICAgICByZXR1cm4gIm1hdGggcm9vdCJfczsKICAgICBjYXNlIEF0
c3BpOjpSb2xlOjpTdWJzY3JpcHQ6Ci0gICAgICAgIHJldHVybiAic3Vic2NyaXB0IjsKKyAgICAg
ICAgcmV0dXJuICJzdWJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6U3VwZXJzY3Jp
cHQ6Ci0gICAgICAgIHJldHVybiAic3VwZXJzY3JpcHQiOworICAgICAgICByZXR1cm4gInN1cGVy
c2NyaXB0Il9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OkxhbmRtYXJrOgotICAgICAgICByZXR1
cm4gImxhbmRtYXJrIjsKKyAgICAgICAgcmV0dXJuICJsYW5kbWFyayJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBTdHJpbmcgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjplZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb2xlTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvcmVPYmplY3QpCi0gICAgICAgIHJldHVybiAiaW52YWxpZCI7CisgICAgICAgIHJldHVybiAi
aW52YWxpZCJfczsKIAogICAgIGF1dG8gZWZmZWN0aXZlID0gZWZmZWN0aXZlUm9sZU5hbWUoKTsK
ICAgICBpZiAoIWVmZmVjdGl2ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4
dEF0c3BpLmNwcAppbmRleCBlNGNmNmMwZGEwZTVkN2QzMGNkN2UyNzljYTdlMDI2ZGQzZGE5Nzc0
Li4xOGI5ZDZkYzk0NWJmMDJmZjg4ZjUwNDZhYjY2NDRkMmY0N2U2ZjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0
QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEyIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
Ojp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJmYW1pbHktbmFt
ZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAgICAgICAgYWRkQXR0
cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3VuZChzdHlsZS5jb21w
dXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJKCkpLCAicHQiKSk7
CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1ha2VTdHJpbmcoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkpKSk7Ci0gICAgICAg
IGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFs
aWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRl
ZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5lKCkgJiBUZXh0RGVj
b3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7Ci0gICAgICAgIGFk
ZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGlu
ZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xlIiA6ICJub25lIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVPYmplY3QtPmNhblNl
dFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAgYWRkQXR0cmli
dXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVj
dGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiX3MgOiAi
bm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0cmlrZXRocm91Z2gi
X3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5l
VGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5lKCkgJiBUZXh0RGVj
b3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJfcyk7CisgICAgICAg
IGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CisgICAgICAgIGFk
ZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0LT5jYW5TZXRWYWx1
ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAgICBhZGRBdHRyaWJ1
dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYgKCFzdHlsZS50ZXh0
SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUudGV4dEluZGVudCgp
LCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBAIC03OTksMTggKzc5
OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1dGVzIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmlj
YXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVz
dGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2Vi
S2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlv
biJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlm
aWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlv
biJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3Rp
ZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVl
ZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRl
SWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4IGVlNmZhZDAyMGJj
M2Y4OGEwODRiNmRmYWYxNmFmYzVkNDIxYzc2ODUuLmQyMDNmNTc0MmE5MTVhOTVmNDEwYTNlOWNk
NDdjNzhmNTdmNjU1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcApAQCAtMTc1LDggKzE3
NSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6c2V0UGF0aChTdHJpbmcmJiBwYXRo
KQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmVtYmVkZGVkKGNvbnN0IGNoYXIqIHBh
cmVudFVuaXF1ZU5hbWUsIGNvbnN0IGNoYXIqIHBhcmVudFBhdGgpCiB7Ci0gICAgbV9wYXJlbnRV
bmlxdWVOYW1lID0gcGFyZW50VW5pcXVlTmFtZTsKLSAgICBtX3BhcmVudFBhdGggPSBwYXJlbnRQ
YXRoOworICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgocGFyZW50VW5p
cXVlTmFtZSk7CisgICAgbV9wYXJlbnRQYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwYXJlbnRQYXRo
KTsKICAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLnBhcmVudENoYW5nZWQoKnRo
aXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWE5OWExZjI4YTBmZjNkYTY3NzU1ZDFi
ODJhNTNmLi43OWI5MTVmYmFjMTFhZDNmMTc0OGY5MzJhNjVjOWNlZDA0YjcwNjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1Mu
bW0KQEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIo
QVhDb3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwog
fQogCi1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90
aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAg
IFN0cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogCiAgICAgc3dpdGNoIChub3Rp
ZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2Fz
ZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFu
Z2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFn
ZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVj
dGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNy
ZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
WEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0No
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhW
YWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhw
YW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVD
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJl
Y3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8v
IGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJp
bGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3
aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwog
ICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNz
aWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNh
dGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBp
ZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlm
aWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndy
YXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNO
b3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAg
IFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5n
ZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRU
ZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3Qt
PndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9u
TmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5n
ZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA3OTE5MGMxOTViNzdlMTY2NGVlMDdmMzI3
MzZiM2RhZDE2MTA1MTNhLi41MzhiNzg1ZDY5ZDkwZmY2MWVlNzc2YWFiMzJmOTU0Y2U1ZTU4Njc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTY3MSwxMiAr
MTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJQWNjZXNzaWJpbGl0eVNj
cm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAogICAgIGlmIChyZXN1bHQp
IHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFn
ZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25O
YW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90
aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBh
Z2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBDR1BvaW50IHNjcm9sbFBv
cyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwogICAgICAgICBOU1N0cmlu
ZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQVhTY3JvbGwgW3Bv
c2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBvcy55XTsKLSAgICAgICAg
W3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lIHVz
ZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAgICAgIFtzZWxmIGFjY2Vz
c2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQoKSB1c2VySW5m
bzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAogICAgIC8vIFRoaXMgbWVh
bnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5kIG5vIG90aGVyIGFuY2Vz
dG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFmNDQyOTcxZDFjMDI1Zjg3
ODNmZGY4MjNmM2I5OGQxMC4uNjRiOGNhZTc2NDNkMTIzMDY1NDlmOGI3OGY2NGJiZWY1NDk0ZDI1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTU2OSw3ICs1NjksNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNo
b3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBw
IGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3Jp
bmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwog
ICAgICAgICBTQ1JJUFRDT05UUk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVj
dXRlU2NyaXB0SW5Xb3JsZDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24g
YXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAg
Ym91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxZjg0ODZhMzE3
YWI5ZjllZDgzYTk4ODViZTJiYS4uODJmYTc1Zjk2NzMxZmI0MTVkYTM1Yzk0ZGM1ZmNjM2Q5N2Ew
NDc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBQcmVzZW50YXRpb25TaXplLCBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG1hcmt1cCA9IHVybFRvTWFya3VwKFVSTCh7
IH0sIHBhdGgpLCBwYXRoKTsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cCwgImZpbGU6Ly8iLCBEaXNhbGxvd1NjcmlwdGlu
Z0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cCwgImZpbGU6Ly8iX3MsIERpc2FsbG93U2Ny
aXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5MzFhNjlmZmNh
YjgwYWU1ZTNkYTIxYzVmNjRkYi4uNjM2MjkzNjU3M2JhZWM2OGEyNTZlNWNhNmNlYjgxNzZmNDMz
ODMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtOTAsNyAr
OTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghdmFsdWUpCiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9
ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdu
bWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgog
ICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdy
aXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVm
dCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgIG5ld1ZhbHVlID0g
InJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0
OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5ld1ZhbHVlKQorICAgIGlmIChu
ZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNl
ZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgYXV0byBkZWZh
dWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAg
ICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlW
aWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCi0gICAg
ZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJn
YmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiX3Mp
OwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlm
eSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1vdmUgZm9udC1mYW1pbHksIHBl
ciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRp
dG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQ
RS5jcHAKaW5kZXggYjk3OGUyZThmOGU4ODJiYmM3ZDBmOTFjYWQ3NmMzODI1MDhlOWEzZi4uNDkx
NDkwNTc5ZTZiOTExNDk4NDQ5Y2E4MjlmYzkxNTg4NTFhYjhkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0
YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2Fy
ZERhdGEoUGFzdGVib2FyZCYgcGFzCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpICYmIGZyYW1lLmRvY3Vt
ZW50KCkpIHsKLSAgICAgICAgU3RyaW5nIG1hcmt1cCA9IHBhc3RlYm9hcmQucmVhZFN0cmluZygi
dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiKTsKKyAgICAgICAgU3RyaW5nIG1hcmt1cCA9IHBhc3Rl
Ym9hcmQucmVhZFN0cmluZygidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiX3MpOwogICAgICAgICBy
ZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXAs
IGVtcHR5U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CiAgICAg
fQogCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoUGFzdGVib2FyZCYgcGFzCiAKICAgICBpZiAo
dHlwZXMuY29udGFpbnMoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIpKSB7CiAgICAgICAgIGNo
b3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRl
eHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04
IikpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChyYW5nZSwgcGFzdGVi
b2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDM4NGE2MDhiYTMzZDRkMzFiYTE5ZjU3MzAxZmY4ZWM5Y2YyMTZhZTIuLmI3Yjkw
M2ViZjcwZGZhYjYzNzQwNThmNjFkNTUwZDg5YzU4YmM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4
aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAgICBVTlVTRURf
UEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJldHVybiAiW3Vy
bF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmgKaW5kZXggNDU3YjVhMTFhZDhjMGMwMTI1OWE4OGMyODQ0OWEyMTA1Zjg2MjZhMy4uM2QyN2U4
NjY0OTg5Y2Y0NzVkZGFjMzI0YzA4ODI3NjgzZDViZjY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgT2Zmc2NyZWVuQ2FudmFz
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVuQ2FudmFzPiwgcHVibGljIENhbnZh
c0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29kZU9wdGlvbnMgewotICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9w
bmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4wOwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggNGRmZGU2NjNlOGJi
ODMzMjlmNTYyMDUxMzM0OTVhN2FiYjMyYmNkMC4uNTBhZDVjYmM5NjVkZTAwMGI4ODE2ODk3YmFl
OTgxN2EzZWRjOWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHAKQEAgLTExNzIsNyArMTE3Miw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4
Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogCiAgICAgICAgICAgICBpZiAob2Zm
c2NyZWVuQ2FudmFzLT5vcmlnaW5DbGVhbigpICYmIG9mZnNjcmVlbkNhbnZhcy0+aGFzQ3JlYXRl
ZEltYWdlQnVmZmVyKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byAqYnVmZmVyID0gb2Zm
c2NyZWVuQ2FudmFzLT5idWZmZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGJ1
ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IGJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShkYXRhVVJMKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCmluZGV4IDEyNjMyZDZl
NjdkMzgzN2ExZWQ2ODQxNWQwNDI5MTA4MWQ2NTI2ZDguLmFhMjRmNTMzNTgzODM2Mzg2ZDdkNTY1
MzRjYjg5OTQ4NTM1NTRlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3Vw
L1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAv
UmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoc3RhdGljX2Nhc3Q8
R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJvci5vdXRQdHIoKSkp
KTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVyLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2Rl
LCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICBs
b2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTY0LDEw
ICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAg
Y29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+KGdfYnl0ZXNfZ2V0
X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250ZW50X3R5cGVfZ3Vl
c3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7Ci0gICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwg
ZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgpKSB9OworICAgICAg
ICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQoKSB9OworICAgICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihkYXRhU2l6
ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0cmluZykgfTsKICAg
ICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5cGUuZ2V0KCkpOwor
ICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBsb2FkZXItPmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdl
dCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4Y2U5YTE0ZmFiZmVl
ZWZkNDkwOWVkZDFjMGRiOWE0Y2ZmMmM2Li5kNzFjM2Y3ODRiMmVmY2IzYTFlMjc2NDZhNGVkYWQy
OTA3ZTQ3NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY28KICAgICAg
ICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
UGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
QXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5k
KCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVy
Zm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNv
CiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoemVyb1dpZHRoTm9uSm9pbmVyLCAqZnJh
bWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFs
bDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0
ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0luc2VydEVt
b2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9qaSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQxZGM0NzY5NzNj
ZjAwMjhlYjkzMjM5ZmE0N2M4Li4yNTljNzIyNTM2NzFiNWEwYWUwODViYzA3MTJhNGIxNWViMjc5
NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMjUy
LDE0ICsyNTIsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkm
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIEZsb2F0UmVjdCByZWN0
Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQpOwotICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNv
bnN0IFN0cmluZyYpOworICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAg
ICAgICAgIAogICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lv
bigpOwogCiAgICAgc3RydWN0IFNldHRpbmcgewotICAgICAgICBTdHJpbmcga2V5OwotICAgICAg
ICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFs
IGtleTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7CisgICAgICAgIGJvb2wgdmFsdWUgeyBm
YWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5n
cyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJv
b2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5n
JiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhB
U0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3Nl
dHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQy
Niw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVj
dChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7Cisg
ICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29s
b3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
IAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8
ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFs
dWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRh
ID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRh
IGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNl
TG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9v
bCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkg
ewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShn
cmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChy
ZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlw
IikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9z
KSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBo
YSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBo
YXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAu
MDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAg
ICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0
dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0
dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAg
ICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxv
YXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZv
clNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAg
ICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9u
KCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFk
aWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2gi
X3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRV
c2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAg
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAg
ICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxT
aXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6
IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0
YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAg
ICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6
YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tk
cm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JX
aXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNl
OwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0
aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdy
YWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAg
ICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAg
ICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZv
clNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNp
emUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxv
YXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBw
YXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7
CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhh
c0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5
IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5
JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4g
Y3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAg
aWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0g
bm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisg
ICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRp
bmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkp
OwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3Vz
ZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRl
czsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZh
bHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5n
KCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXgg
NDc3NGNlMDhhNWI4YjUwZjY0YTE2MjAyZjUzOGI0ZjRmN2VmMmU0OC4uZTAxNmY5MjFkNWViNWFj
MTBmMThkNmZjYTc3NjE3MTY1NjdkZmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1NldHRpbmdzQmFzZUNvY29hLm1tCkBAIC02MywxNSArNjMsMTUgQEAgYm9vbCBTZXR0aW5n
c0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKIHZvaWQgU2V0dGlu
Z3NCYXNlOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiB7Ci0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIiwgVVNDUklQVF9TSU1QTElGSUVE
X0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIs
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250
RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWls
eSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgi
SGVsdmV0aWNhIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
UGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIl9zLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIl9zLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJUFRfSEFOR1VMKTsKKworICAgIHNldFN0YW5kYXJkRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1p
bHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHko
IlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgi
SGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NPTU1PTik7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
aW5kZXggMjU2ZjQ0NTQyOTAzMmJiNDJmMzEzZDkyMGFmYmZmZDFiMDIzYTc3YS4uZDIzN2UxODhj
OTMxMzIzMTcwMjg1M2VkZjkzMGU5ZGEyYjViMmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRl
cmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0
ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1
cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNl
bmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQw
ODEyNGZiZWJmNTM2ODdjMjk4YTg3ZjFlYTY1MWE0NS4uNWE5NDg5MDA5NDlkMTk3N2NlNzIzYTg3
NjExOGE5ZGUwNDQ3NTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBl
IHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNl
ckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNpb24gPSBlbXB0eVN0cmluZygpLCBVc2VyQWdl
bnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVsdCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNPUkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05h
bWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdW
ZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAjZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTQ1ZmMwNjQzMzk0ZjBmMmYwNDU2NGZmYzVhZjAx
MjAwOWE3MjQ3OS4uOGI3ZTc0MWI3YzhjOTcyNWVhZDIzMmMxY2MxOGIwYTUwZTcxNDRjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NBU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxlUmF0
ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0aGlz
LCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRyKSk7
CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVk
aW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3Jl
YXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJs
ZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYwMDAx
MGFhYzg4M2YyNDBhZWE1ZThmOGVhNWQ1MzIwMDRhYzBjNi4uMGQyOWQ1ZjNkNTdiZmUzOTRmNWUy
MTE1YmU4YmUyYjYxMjBmNDU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcg
cGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNo
YXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lzVHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4g
Imxpa2UgQW5kcm9pZCA0LjQiOworICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7
CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3
ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAg
ICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFs
QXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBz
dGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsg
ZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThm
NDZiOWVhNDIwNzc2ZmM1MGQwNjA1MzZiMGM1OTExMTI0ZS4uYzVkZTFiNjhiNWNjY2E0YjhjOTg1
M2IzMzhiNDk4MjE4ZTE0Mzg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApAQCAtMTg2LDEzICsxODYsMTMgQEAg
Ym9vbCBBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBz
aGFkZXJTb3VyY2UsIEFOR0xFU2hhZGUKICAgICBpZiAoIXZhbGlkYXRlU3VjY2VzcykgewogICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbG9nID0gc2g6OkdldEluZm9Mb2coY29tcGlsZXIpOwog
ICAgICAgICBpZiAobG9nLmxlbmd0aCgpKQotICAgICAgICAgICAgc2hhZGVyVmFsaWRhdGlvbkxv
ZyA9IGxvZy5jX3N0cigpOworICAgICAgICAgICAgc2hhZGVyVmFsaWRhdGlvbkxvZyA9IFN0cmlu
ZyB7IGxvZy5jX3N0cigpIH07CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgb2JqZWN0Q29kZSA9IHNoOjpHZXRPYmplY3RDb2RlKGNvbXBpbGVy
KTsKICAgICBpZiAob2JqZWN0Q29kZS5sZW5ndGgoKSkKLSAgICAgICAgdHJhbnNsYXRlZFNoYWRl
clNvdXJjZSA9IG9iamVjdENvZGUuY19zdHIoKTsKKyAgICAgICAgdHJhbnNsYXRlZFNoYWRlclNv
dXJjZSA9IFN0cmluZyB7IG9iamVjdENvZGUuY19zdHIoKSB9OwogICAgIAogICAgIGlmICghZ2V0
U3ltYm9sSW5mbyhjb21waWxlciwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgc3ltYm9s
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKaW5kZXggMWE1YmU2ZTFiNDgwNTAwYTM2M2Y2MzBjMzJlZjY3MjIyNTg3MDQzYi4uZTYyY2Zk
NzVkZjU5MmM3MWFlYjkzNzYxZDM3NDkyYjg0OGYzMzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBAIC01MDUs
NyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9m
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xF
LgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9y
cyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlz
IGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0
aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2ls
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOTk1MmZhNDQz
YTc3NDZmMjRjM2RiYTJhM2UwNzkuLmZjZDU2M2E2NzMwODc2MTZmNjI0MzNlM2Q2NjhkNzgyZGI2
NGY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMs
IGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3Jl
ZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1l
bnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChB
U0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlk
YXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9v
bCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3Bw
CmluZGV4IDdlNjM0NmZmYTE4MTdiYTE0MTc1ODdhODg4YWRlYjllNDRkZWJmMzMuLjNmMzU0OGRh
MGZmZjRmZmRmODU0M2NiMWVhN2FmZTljNzhjN2IxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRUcmFuc2Zvcm0oU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ0FUcmFuc2Zvcm0zRCYgdHJhbnNmb3IKICAgICBi
dWlsZGVyLmFwcGVuZCgnWycsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTEyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCksICI7
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMSksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIyKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjMpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yNCksICI7ICIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMSksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0zNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tNDMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm00NCksICddJyk7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgaW50IGluZGVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ0dDb2xvclJlZiBj
b2xvcikKK3N0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50
IGluZGVudCwgQVNDSUlMaXRlcmFsIGxhYmVsLCBDR0NvbG9yUmVmIGNvbG9yKQogewogICAgIENv
bG9yIGxheWVyQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvcikpOwogICAgIGlm
ICghbGF5ZXJDb2xvci5pc1ZhbGlkKCkpCkBAIC03NjIsMTAgKzc2MiwxMCBAQCBzdGF0aWMgdm9p
ZCBwcmludExheWVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFBsYXRmb3JtQ0FMYXll
ciogbGF5ZXIsIGludAogICAgIH0KIAogICAgIC8vIFByaW50IGJhY2tncm91bmRDb2xvciBpZiBu
ZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29s
b3IiLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkp
OworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xvciJf
cywgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsK
IAogICAgIC8vIFByaW50IGJvcmRlckNvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVp
bGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIiwgQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3Io
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50
ICsgMSwgImJvcmRlckNvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihsYXllci0+cGxh
dGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBtYXNrc1RvQm91bmRzIGlmIG5lZWRlZAog
ICAgIGlmIChib29sIGxheWVyTWFza3NUb0JvdW5kcyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBjOGU1Njc4MjQyMzE1
YWMzOTM1MWUwMjA4ZmY4YTBlZGVlMTNkOWI1Li4zYjdhNzVkYzc4YWY3OTJhMDA1OWZmYzcyNjMw
NzE4NjI1YjliMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC0x
MjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAo
ZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwiOworICAgICAg
ICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJkYXRhOiIsIG1p
bWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5kYXRhKCksIGVu
Y29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRl
eCBiOTNiYzM0Y2M0ZDRhMzQ0Y2I0MTJlYzcxZWYzYzgxZGRlNzUwOWQyLi4xZjUxNjkxZWY5Zjkw
OGZiZmNkZTU5NDMzZWFlZDRhOGY4NmI2MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUu
Y3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJp
bmdGcm9tRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5
OwogCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAg
ICAgICByZXR1cm4gInNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRh
LT5hdChGYW1pbHlOYW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4g
InNhbnMtc2VyaWYiOworICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZh
bWlseSkpCi0gICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25v
c3BhY2UiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5h
bWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAg
ICAgICByZXR1cm4gImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4g
ImZhbnRhc3kiOworICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQog
ICAgICAgICByZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8
IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAxZDZhZTJlMTJlN2RkNGZkNmMwMDc1MTg5MGIyNWQ5NWNiYzkwN2RkLi5mZDlmNzhlN2Qy
MTRlODk5MDhhMDY1OGFiZGY2ZTk1NzA2OTdmYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lm
IEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMo
Z3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNv
bmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVj
ID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVh
ZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIy
NTQxZDhlYzRlZGExZWRmNTBjNDczNWVhYTZhZjY0NC4uMTIwN2MzNWExMTNjMzdiNTA1NmJmNjQ4
OThiOTIzNjQyZmEzZTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTYxMyw3
ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZShHUXVhcmsg
ZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlmIChhdXRvIGpzb25W
YWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAgICAgICBhdXRvKiBv
YmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJEYXRhKTsKLSAgICAg
ICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSwganNvblZhbHVl
LT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShTdHJpbmcgeyBn
X3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4NDA2ZTZlMGZkYTU5N2NlMzVmOTNm
ZTNjODAyZi4uYmQ2YmU2ZjdhNjMwZTM2Y2M3YmYxNTg1MmI2MGUyMjFiMTY3MjQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYs
NyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJl
Q2xhc3NpZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZv
ciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0g
Z19saXN0X25leHQoZmFjdG9yaWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAg
ICAgICAgICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRh
dGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3Ry
aW5nIG1ldGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwg
R1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVu
dHMgPSBtZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29u
dGFpbnMoIkhhcmR3YXJlIikpIHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0
cnVlOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpp
bml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQog
CiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1h
djEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAg
ICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25m
aWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxl
KSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVy
QXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJh
djAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAt
NDA5LDcgKzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXpl
RGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAg
YXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0
aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBp
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9t
cDQiX3MpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4Zjcz
YzQyYjhkNDJkY2JhN2JkMjNmMDcxN2Q2OGZmZWNhNGYuLjdlYmJhNDMyMmU4NTM5MjUyMWFkNTU5
OGVjYzhlYTcxNGJkMzRmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5l
dHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1
ZGlvU2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxh
eWVyKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+aXNW
aWRlb1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQqIGF1
ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0VfQVNT
RVJUKGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAm
ZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVycm9y
ICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVzc2Fn
ZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsKIAog
ICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAg
ICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NU
UkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwg
Imh0dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRf
c3RyaW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IHVy
aSB9OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgICAg
ICAgICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAog
ICAgICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7
CiAgICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0
aXRsZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50
KHRpdGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4KHRp
dGxlKSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZp
Z3VyZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0
KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVs
bHB0cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVkIGZp
bGUgZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBuZXdE
b3dubG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0cmlu
ZyBuZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07CiAg
ICAgcHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNlKCJY
WFhYWFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlh
UGxheWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdfb2Jq
ZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwg
JmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5M
SUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZEZp
bGUuZ2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBtZWRp
YSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgLy8g
dGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAog
ICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAgICAg
ICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDog
bV91cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwor
ICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9uIH0p
OwogCiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAgICAg
IGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJpblVy
bFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxheWJp
blVybFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBsYXli
aW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1VybCkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBhbHJl
YWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVy
bCkKIAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAgIGlm
IChlbGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVy
IjsKKyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0IGNo
YXIqIHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygibWVk
aWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBA
IEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Q
cm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEgPSBu
dWxscHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0
KCksICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIGlu
aXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAgaW5p
dERhdGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwogICAg
ICAgICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShl
dmVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChHc3RF
dmVudCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0
cjsKICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRfcGFy
c2VfcHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBudWxs
cHRyKTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1V
VUlELCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsgU3Ry
aW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3M2Jj
MzRmNTQ0OTI1OTE1NDlmYjlhNTlkZTE0Mi4uMzJlZDNhZThiMjljMDBmZTg4MTRiZGQwNmU2NDk2
ODU1YTdhZGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzVGFibGVP
ZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHNF
bnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBTdHJpbmcgZW5naW5lRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIl9zOyB9CiAgICAg
Ym9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBj
YW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2MzBhNDI3NTIwNGI1NDU1
ZTdjNGQyOTQ3MmM1YTZmLi4wM2VkYWM4YzhlOTdiYjFlYWE0YjMzYjNmNDQ1OWFjZGFkZmI5NDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFn
ZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFu
Z3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1
YWdlKSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNv
XzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmlu
ZyB7IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5k
YXRhKCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3Vh
Z2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgaWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdl
OwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0
VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1
ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5n
KHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVH
KCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkp
OwotICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmlu
Z1R5cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0
cmVhbWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDlhMTg4NDNjMTI3NTEyNThlNDY1MmRiNmE2NWUw
Li5kN2JlODA1MThlZDY5ZWNlY2Q3MTZmYWIyMzIzMGY4Yzc2MGI5NmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFk
YXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVu
dCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBwcm9iZVR5
cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEp
IC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRCdWZmZXIsIG1l
dGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5GT19CVUZGRVIo
aW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9IG1vZGlmaWVk
QnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3Rp
bWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1ldGEtPnByaXYtPnBy
b2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRh
dGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NL
X1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9LCBn
c3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVu
dCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQogICAgICAgICAgICAgcmV0dXJuIEdTVF9Q
QURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9OwogICAgICAgICBhdXRvIHZhbHVlID0gbWV0
YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVtZW50TmFtZSk7CiAgICAgICAgIG1ldGEt
PnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6bWFrZV9wYWlyKHZh
bHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCkpKTsKICAgICAgICAgcmV0dXJuIEdT
VF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUzMGFjNjNmMzdkYThjMTk0ZTk0MzM0ZTNmMWNhLi5k
NjQwNGMxMjBjYThhZGUxMGY3NWViN2I5YjNhZGMyZDVjM2QzOTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2
b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTBkNWZmMzM2ZDkwOWFjNTVjMDY1ODk3ZGQy
ZDgxLi5kMGFkNjcyZDcxMDk3Y2Y5MTJhMTczMjI3MDVkZjBlZWQzYzIwOGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBA
IHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRy
YSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0
Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUs
IGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0
cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5z
dG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sg
dG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAi
IHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVy
LCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBt
ZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5k
YXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgp
IH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5z
ZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2Vi
S2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxX
ZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7
CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhU
VFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShT
T1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVk
IGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNz
IHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAo
Im1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8
ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRm
OCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1l
LzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcu
Ni42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJz
LT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3Ry
ZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVl
c3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVx
dWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsK
KyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdl
LCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVt
YmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAg
IEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMi
LCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXBy
aXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAg
IGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChw
cml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMs
ICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0
IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyAr
ODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5
cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5n
KQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3Ry
aW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRV
cmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKaW5kZXggZmU0NzlkNmJiNTI3NGYxZTY5NjNhMzUyYmI2NmU5NWE2ZmQ5ZTg5Ny4uMWFmMGU1
NTRkODJiYWU1ODE5M2NhYzY5NzVhYTVhNzMxZTBhMzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGQ6OnR1cGxlPEdSZWZQdHI8R3N0
Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBlLCBGbG9hdFNpemU+IEFwcGVuZFBpcGVs
aQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBjYXBzTWVkaWFUeXBlKGRl
bXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNjYW5uZXIgPSBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigpOwotICAgIGlmICghZ3N0UmVnaXN0cnlT
Y2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1
cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5cGUpKSB7CisgICAgaWYgKCFnc3RSZWdp
c3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNv
bmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBvcmlnaW5hbE1lZGlhVHlwZSB9KSkgewog
ICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6SW52YWxpZDsKICAgICB9IGVsc2UgaWYg
KGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzLCBHU1RfVklERU9fQ0FQU19UWVBFX1BS
RUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6ZSA9IGdldFZpZGVvUmVzb2x1dGlvbkZy
b21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
aW5kZXggODMxYzJiMmM2ZWZiMjI0NzU5YjQzYmZlNjdmYjczYjE0ZmUwYTYzNi4uMmNlYzY4NDY2
ZmZjM2Q5MTk3NmMyOTA0YmQ3NTBiYmE2Yjg2OWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0
cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFz
b3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iIDogdXJsLnN0cmluZygp
KTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVybC5zdHJpbmcoKSk7CiAgICAgR1NU
X0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9t
ZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmlu
ZGV4IDczZTI0ODQ1Y2IzM2U1MGQ1NDU3YTYyMDYxODQ0NDI2OTUxN2Q2OGUuLjkxOTYzZDMyOTA5
M2UzNmUwNGEyZDlmYWIxYzNmZGFjMzQ2ZjBhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJl
ICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNp
b25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxp
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJh
eXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAg
ICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNl
ZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2lu
c3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAg
IGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJl
X3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFt
ZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdf
ZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFs
d2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VT
X3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8v
IElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWls
YWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdM
X09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9h
dCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xf
T0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAg
ICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNf
dmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9v
YmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVj
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0
ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAg
ICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1
ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZv
ciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEs
NyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1Zl
cnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBw
b3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9
IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1
cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKaW5kZXggY2QxYWViMDU2NjYzM2EzMDQwZDY5ZTVmMGU3YWFlMDZm
ZWQ3YWZiYy4uNjcyMzU1NTY5MjllZjcxMWRjMTc5MDNhOTI3ZTU5NGZiZWNmYzFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3NCwxMiArMTc0LDEyIEBA
IFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xzaGFkZXJUeXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5cGUgPSBT
SEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAiIjsgLy8gSW52
YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIEludmFs
aWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xPYmplY3QsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1f
Y29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogCiAgICAgaWYgKHJlc3Vs
dCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CiAKQEAg
LTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIH0KIAogICAgIGlm
ICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9w
ZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zR0xPcGVuR0xFUy5jcHAKaW5kZXggNTRiMTcwMDE1MDk1MGUxZGI2NDcyY2NjYWIxYWE5
Yzk1NjhlMmE3My4uYjkxMTEwMjU5ODM1ODkwZDY1MTNmYTAzM2MzMmY5NTFlN2VmZGJkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lv
bnNHTE9wZW5HTEVTLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBF
eHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgICAgICAgICBtX2dsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gcmVp
bnRlcnByZXRfY2FzdDxQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBt
X2dsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJB
V0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DID4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUiKSk7CiAgICAgICAgICAgICBtX3N1cHBvcnRzQU5HTEVpbnN0
YW5jZWRBcnJheXMgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49
IDMgfHwgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9h
cnJheXMiKSAmJiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2lu
c3RhbmNlZCIpKSkgeworICAgICAgICB9IGVsc2UgaWYgKG1ham9yVmVyc2lvbigpID49IDMgfHwg
KG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMi
X3MpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFu
Y2VkIl9zKSkpIHsKICAgICAgICAgICAgIG1fZ2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSA6
OmdsVmVydGV4QXR0cmliRGl2aXNvcjsKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUgPSA6OmdsRHJhd0FycmF5c0luc3RhbmNlZDsKICAgICAgICAgICAgIG1fZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3RWxlbWVudHNJbnN0YW5jZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcAppbmRleCBjYWFhYjZmYzU5OGIzOTBlYTU0
NTM0YWFlMDk4YzQ4YzljOTI0Njk0Li4wYTZhODhjZjFhZDRjODRkMTAwMTQ0ZDM1OTc1OWI5NWFl
N2IyM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKQEAgLTM1Miwx
MyArMzUyLDE0IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjpyZWFkQ29tcG9zaXRlZFJlc3VsdHMoKQogICAgIHJldHVybiByZWFkUmVuZGVyaW5n
UmVzdWx0cygpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURl
cHRoU3RlbmNpbChjb25zdCBjaGFyKiBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCit2b2lk
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVy
YWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKQogewogICAgIGF1dG8gYXR0cnMgPSBjb250
ZXh0QXR0cmlidXRlcygpOwogCiAgICAgaWYgKGF0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgaWYg
KHN1cHBvcnRzRXh0ZW5zaW9uKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikpIHsKLSAgICAg
ICAgICAgIGVuc3VyZUV4dGVuc2lvbkVuYWJsZWQocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KTsKKyAgICAgICAgU3RyaW5nIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyB7IHBh
Y2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbiB9OworICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNp
b24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nKSkgeworICAgICAgICAgICAgZW5z
dXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpOwog
ICAgICAgICAgICAgLy8gRm9yY2UgZGVwdGggaWYgc3RlbmNpbCBpcyB0cnVlLgogICAgICAgICAg
ICAgYXR0cnMuZGVwdGggPSB0cnVlOwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmgKaW5kZXggODQ5YTdmNWEzOTEyZDJlNWEwMjNmZDQ4OTNjY2Y2NmQ3NmVi
NTY1OS4uYWY3NWUwZDA5OTk2MTZiZjYzMWI1NmY1ZTUzNzc5YmRhZjJkNzE1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKQEAgLTQzMyw3ICs0MzMsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1p
bmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0
aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAg
ICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNp
bEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwg
cGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRl
cygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdD
R0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51
bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSog
Y29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9Q
aXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xCYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJh
c2UuY3BwCmluZGV4IGMzNWIyZjBmMTVkOWNkMDliOWIyOGJlMGJmNDQ3Nzg4NzQzMDU3MzguLjdi
NTRhMDFmM2U5NjNjMTg3OTE3MzRlYzRhM2M0ZWE4YzhmMzhhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxzRm9y
UGFpbnRSZXN1bHRzKCkKIAogdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVB
dHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9k
ZXB0aF9zdGVuY2lsIik7CisgICAgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoIkdMX0VYVF9wYWNrZWRf
ZGVwdGhfc3RlbmNpbCJfcyk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
c2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0xMDgsNyArMTA4LDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IAogICAgICAgICBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIGV4dGVuc2lvbnMgPSBnZXRFeHRl
bnNpb25zKCk7CiAgICAgICAgIC8vIFVzZSBhIDI0IGJpdCBkZXB0aCBidWZmZXIgd2hlcmUgd2Ug
a25vdyB3ZSBoYXZlIGl0LgotICAgICAgICBpZiAoZXh0ZW5zaW9ucy5zdXBwb3J0cygiR0xfRVhU
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIikpCisgICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpKQogICAgICAgICAgICAgaW50ZXJuYWxE
ZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0X1NURU5DSUw4X0VYVDsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSF9DT01Q
T05FTlQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKaW5kZXggODNi
OWI4NmM1MzI3MmZjNTQxNTdjOTBmNDY2NWFmODExOThkYTRmOC4uM2FlNjJiZjZlZWIxMzc2Zjcz
MTRmYTMwYzZjNGFkZTk4OGEzODBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9w
ZW5HTEVTLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAKICAgICAvLyBXZSBkb24ndCBh
bGxvdyB0aGUgbG9naWMgd2hlcmUgc3RlbmNpbCBpcyByZXF1aXJlZCBhbmQgZGVwdGggaXMgbm90
LgogICAgIC8vIFNlZSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVz
LgotICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3RlbmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVz
LnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYgc3VwcG9ydHNFeHRlbnNpb24oIkdMX09F
U19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgc3VwcG9ydFBhY2tlZERlcHRoU3Rl
bmNpbEJ1ZmZlciA9IChhdHRyaWJ1dGVzLnN0ZW5jaWwgfHwgYXR0cmlidXRlcy5kZXB0aCkgJiYg
c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAg
ICAvLyBSZXNpemUgcmVndWxhciBGQk8uCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9IGZhbHNl
OwpAQCAtMjQwLDExICsyNDAsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dGV4
SW1hZ2UyRChHQ0dMZW51bSB0YXJnZXQsIEdDR0xpbnQgbGV2ZWwsIEdDR0xlbnUKIAogdm9pZCBH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKCkKIHsKLSAgICB2YWxp
ZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgdmFs
aWRhdGVEZXB0aFN0ZW5jaWwoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAKICAg
ICBhdXRvIGF0dHJpYnV0ZXMgPSBjb250ZXh0QXR0cmlidXRlcygpOwogCi0gICAgaWYgKGF0dHJp
YnV0ZXMuYW50aWFsaWFzICYmICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxl
ZF9yZW5kZXJfdG9fdGV4dHVyZSIpKSB7CisgICAgaWYgKGF0dHJpYnV0ZXMuYW50aWFsaWFzICYm
ICFzdXBwb3J0c0V4dGVuc2lvbigiR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVy
ZSJfcykpIHsKICAgICAgICAgYXR0cmlidXRlcy5hbnRpYWxpYXMgPSBmYWxzZTsKICAgICAgICAg
c2V0Q29udGV4dEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKaW5kZXggMzMwMTA4
YzY2ZGFhN2YyMGM2YzMyM2JkNTQwYzkzN2EwYzI4YjdmNi4uYjFmNGM2NDdhNzYzMmZjMDk5ZDZh
NDY2MTZkMDBkYmU1NGY3ZDYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC0zNTAsNyArMzUwLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAg
ICBBU1NFUlRfVU5VU0VEKHN1Y2Nlc3MsIHN1Y2Nlc3MpOwogCiAgICAgLy8gV2UgcmVxdWlyZSB0
aGlzIGV4dGVuc2lvbiB0byByZW5kZXIgaW50byB0aGUgZG1hYnVmLWJhY2tlZCBFR0xJbWFnZS4K
LSAgICBSRUxFQVNFX0FTU0VSVChzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZSIp
KTsKKyAgICBSRUxFQVNFX0FTU0VSVChzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFn
ZSJfcykpOwogICAgIEdMX1JlcXVlc3RFeHRlbnNpb25BTkdMRSgiR0xfT0VTX0VHTF9pbWFnZSIp
OwogCiAgICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcAppbmRleCA5ZTBmOWQwY2Y2MGU3MzE4NmVlZmRlNTQxOWI2MmZmNmZm
ZmY3ZmU2Li5iY2I2NzUxZWRiM2U2ZDM1ZTE4ZTE0OWZhMDgyYTk5ODJlZTc1ZGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTUxOCw3ICs1MTgsNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQog
ICAgICAgICBtX2xheWVyLnNldEFuaW1hdGlvbnMobV9hbmltYXRpb25zKTsKIAogICAgIGlmICht
X2NoYW5nZU1hc2sgJiBBbmltYXRpb25TdGFydGVkKQotICAgICAgICBjbGllbnQoKS5ub3RpZnlB
bmltYXRpb25TdGFydGVkKHRoaXMsICIiLCBtX2FuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgICAg
IGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgZW1wdHlTdHJpbmcoKSwgbV9h
bmltYXRpb25TdGFydFRpbWUpOwogCiAgICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJGUFNDb3VudGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKaW5kZXggYzhjYWM0OGM2YzA1ZWNi
NDUyMTU3ZmIyMzFlYjY0YjY5OGNhNmYyNy4uYzdhMWMyNzI1ZDNkMmUyZWY5YmU5NzNkOWNmYzhj
ZmFiOThiODhkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC0z
NCw3ICszNCw3IEBAIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291
bnRlcigpCiAgICAgLCBtX2xhc3RGUFMoMCkKICAgICAsIG1fZnJhbWVDb3VudCgwKQogewotICAg
IFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgPSBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIpOwor
ICAgIFN0cmluZyBzaG93RlBTRW52aXJvbm1lbnQgeyBnZXRlbnYoIldFQktJVF9TSE9XX0ZQUyIp
IH07CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIG1fZnBzSW50ZXJ2YWwgPSBTZWNvbmRzKHNo
b3dGUFNFbnZpcm9ubWVudC50b0RvdWJsZSgmb2spKTsKICAgICBpZiAob2sgJiYgbV9mcHNJbnRl
cnZhbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmNwcAppbmRleCAwZGI5ODAyMTgwNTViZjVhMTQ1YzMxNzg3M2JhOGI5NTZiOTNh
N2E5Li43NjY5YTExZGJhMjdhNTdhZGU4NTJkYTFmOGI4ZjI3OGIyMzg5OTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApA
QCAtMTQ1Myw3ICsxNDUzLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlc3Vt
ZUFuaW1hdGlvbnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9u
U3RhcnRlZFRpbWVyRmlyZWQoKQogewotICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQodGhpcywgIiIsIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CisgICAgY2xpZW50KCkubm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2xhc3RBbmltYXRpb25T
dGFydFRpbWUpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVxdWVzdFBl
bmRpbmdUaWxlQ3JlYXRpb25UaW1lckZpcmVkKCkKQEAgLTE0OTAsNyArMTQ5MCw3IEBAIHN0YXRp
YyB2b2lkIGR1bXBJbm5lckxheWVyKFRleHRTdHJlYW0mIHRleHRTdHJlYW0sIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIENvb3JkaW5hCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZHVtcEFk
ZGl0aW9uYWxQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRleHRTdHJlYW0sIE9wdGlvblNldDxMYXll
clRyZWVBc1RleHRPcHRpb25zPiBvcHRpb25zKSBjb25zdAogewogICAgIGlmIChvcHRpb25zICYg
TGF5ZXJUcmVlQXNUZXh0T3B0aW9uczo6SW5jbHVkZUNvbnRlbnRMYXllcnMpCi0gICAgICAgIGR1
bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJiYWNrZHJvcCBsYXllciIsIG1fYmFja2Ryb3BMYXll
ci5nZXQoKSwgb3B0aW9ucyk7CisgICAgICAgIGR1bXBJbm5lckxheWVyKHRleHRTdHJlYW0sICJi
YWNrZHJvcCBsYXllciJfcywgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwCmluZGV4IDFmNWNhM2IyYWMzOWZlMjUyNGRlNWUwN2EyNWRhNmI1M2E4
Y2Y5ZWQuLmM4YWIyNjQ3ZjdmOWEwYmUzMmMxODJlNDJhNjUxYTc3YTg5MTViYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTQ0LDEyICs0
NCwxMiBAQCBlbnVtIENsaXBib2FyZERhdGFUeXBlIHsKIAogc3RkOjp1bmlxdWVfcHRyPFBhc3Rl
Ym9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZShzdGQ6OnVuaXF1ZV9wdHI8
UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQ
YXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIik7CisgICAgcmV0dXJuIG1h
a2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwgIkNMSVBCT0FSRCJfcyk7CiB9
CiAKIHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9i
YWxTZWxlY3Rpb24oc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmRDb250ZXh0PiYmIGNvbnRleHQp
CiB7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWU8UGFzdGVib2FyZD4oV1RGTW92ZShjb250ZXh0KSwg
IlBSSU1BUlkiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNv
bnRleHQpLCAiUFJJTUFSWSJfcyk7CiB9CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2
ZW50R3RrLmNwcAppbmRleCA0NGRmZGVjYjMxYjA3MTUzNjIyNTE2NzY3NWE1ZGVmNTNmNzIxYWY4
Li5jMDE3ZjIxZmJkODRmMmI4NDJlMDFmMjQ4Y2M0NDA3MjNjYjFhYWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3Rr
LmNwcApAQCAtNzc5LDEwMSArNzc5LDEwMSBAQCBTdHJpbmcgUGxhdGZvcm1LZXlib2FyZEV2ZW50
OjprZXlJZGVudGlmaWVyRm9yR2RrS2V5Q29kZSh1bnNpZ25lZCBrZXlDb2RlKQogICAgIGNhc2Ug
R0RLX0tFWV9NZW51OgogICAgIGNhc2UgR0RLX0tFWV9BbHRfTDoKICAgICBjYXNlIEdES19LRVlf
QWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAgICAgcmV0dXJuICJBbHQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX0NsZWFyOgotICAgICAgICByZXR1cm4gIkNsZWFyIjsKKyAgICAgICAg
cmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIEdES19LRVlfRG93bjoKLSAgICAgICAgcmV0dXJu
ICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAg
IGNhc2UgR0RLX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgcmV0dXJu
ICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBjYXNlIEdES19LRVlfSVNPX0VudGVy
OgogICAgIGNhc2UgR0RLX0tFWV9LUF9FbnRlcjoKICAgICBjYXNlIEdES19LRVlfUmV0dXJuOgot
ICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0dXJuICJFbnRlciJfczsKICAgICBj
YXNlIEdES19LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJuICJFeGVjdXRlIjsKKyAgICAgICAg
cmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMToKLSAgICAgICAgcmV0dXJu
ICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyOgotICAg
ICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICBjYXNlIEdES19L
RVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAgICByZXR1cm4gIkYzIl9zOwogICAg
IGNhc2UgR0RLX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgIHJldHVybiAi
RjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y1OgotICAgICAgICByZXR1cm4gIkY1IjsKKyAgICAg
ICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIEdES19LRVlfRjY6Ci0gICAgICAgIHJldHVybiAi
RjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNzoKLSAgICAg
ICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjciX3M7CiAgICAgY2FzZSBHREtfS0VZ
X0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAgcmV0dXJuICJGOCJfczsKICAgICBj
YXNlIEdES19LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjkiOworICAgICAgICByZXR1cm4gIkY5
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTA6Ci0gICAgICAgIHJldHVybiAiRjEwIjsKKyAgICAg
ICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMToKLSAgICAgICAgcmV0dXJu
ICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAgICBjYXNlIEdES19LRVlfRjEyOgot
ICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgIGNhc2Ug
R0RLX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgcmV0dXJuICJGMTMi
X3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNDoKLSAgICAgICAgcmV0dXJuICJGMTQiOworICAgICAg
ICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIEdES19LRVlfRjE1OgotICAgICAgICByZXR1cm4g
IkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTY6Ci0g
ICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJuICJGMTYiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOworICAgICAgICByZXR1cm4gIkYxNyJf
czsKICAgICBjYXNlIEdES19LRVlfRjE4OgotICAgICAgICByZXR1cm4gIkYxOCI7CisgICAgICAg
IHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTk6Ci0gICAgICAgIHJldHVybiAi
RjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMDoKLSAg
ICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4gIkYyMCJfczsKICAgICBjYXNlIEdE
S19LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7CisgICAgICAgIHJldHVybiAiRjIxIl9z
OwogICAgIGNhc2UgR0RLX0tFWV9GMjI6Ci0gICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAg
cmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMzoKLSAgICAgICAgcmV0dXJuICJG
MjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBjYXNlIEdES19LRVlfRjI0OgotICAg
ICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgIGNhc2UgR0RL
X0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICByZXR1cm4gIkhlbHAi
X3M7CiAgICAgY2FzZSBHREtfS0VZX0hvbWU6Ci0gICAgICAgIHJldHVybiAiSG9tZSI7CisgICAg
ICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIEdES19LRVlfSW5zZXJ0OgotICAgICAgICBy
ZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAgIGNhc2UgR0RL
X0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICByZXR1cm4gIkxlZnQi
X3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2VfRG93bjoKLSAgICAgICAgcmV0dXJuICJQYWdlRG93
biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAgY2FzZSBHREtfS0VZX1BhZ2Vf
VXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAgICAgcmV0dXJuICJQYWdlVXAiX3M7
CiAgICAgY2FzZSBHREtfS0VZX1BhdXNlOgotICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAg
ICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIEdES19LRVlfMzI3MF9QcmludFNjcmVlbjoK
ICAgICBjYXNlIEdES19LRVlfUHJpbnQ6Ci0gICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOwor
ICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAgIGNhc2UgR0RLX0tFWV9SaWdodDoK
LSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJldHVybiAiUmlnaHQiX3M7CiAgICAg
Y2FzZSBHREtfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAgICBy
ZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIEdES19LRVlfVXA6Ci0gICAgICAgIHJldHVybiAi
VXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAgICAvLyBTdGFuZGFyZCBzYXlzIHRo
YXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgR0RLX0tFWV9EZWxldGU6Ci0gICAgICAg
IHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgICAgICByZXR1
cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIEdES19LRVlfSVNPX0xlZnRfVGFiOgogICAgIGNhc2Ug
R0RLX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBHREtfS0VZX1RhYjoKLSAgICAgICAgcmV0
dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAwOSJfczsKICAgICBkZWZhdWx0Ogog
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiVSsiLCBoZXgoZ2RrX2tleXZhbF90b191bmljb2Rl
KGdka19rZXl2YWxfdG9fdXBwZXIoa2V5Q29kZSkpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCAzNjg3MjJhMzZmNThjYzBl
NzJhZjg3NjU1ZWJhZTZjYTVkNGI5NzhjLi5lOTU3ODI5MmIxZTAwZWY3NjY2NzE2ZjljYWJmMTQy
NzE4OGY4ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVi
b2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnNldERyYWdJbWFnZShEcmFn
SW1hZ2UsIGNvbnN0IEludFBvaW50JikKIAogU3RyaW5nIFBhc3RlYm9hcmQ6Om5hbWVPZkRyYWdQ
YXN0ZWJvYXJkKCkKIHsKLSAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCI7Cisg
ICAgcmV0dXJuICJkcmFnIGFuZCBkcm9wIHBhc3RlYm9hcmQiX3M7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJvcChzdGQ6OnVu
aXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDYwMTFmYTJjOWFjNzY3M2FjOTE1MWQ1
ZmYzNTJjN2U1ZTRhZWUyMzIuLjhkNWM0M2RlODM5NTU5OGMyMzk5YTM4YTgzZGVhMzhjMTRkMjk2
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAt
NTQsMTEgKzU0LDExIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NsYXNzaWNQaG9uZSgpCiAgICAg
cmV0dXJuIGlzQ2xhc3NpYygpICYmIFtQQUw6OmdldFVJQXBwbGljYXRpb25DbGFzcygpIF9jbGFz
c2ljTW9kZV0gIT0gVUlBcHBsaWNhdGlvblNjZW5lQ2xhc3NpY01vZGVPcmlnaW5hbFBhZDsKIH0K
IAotU3RyaW5nIG9zTmFtZUZvclVzZXJBZ2VudCgpCitBU0NJSUxpdGVyYWwgb3NOYW1lRm9yVXNl
ckFnZW50KCkKIHsKICAgICBpZiAoZGV2aWNlSGFzSVBhZENhcGFiaWxpdHkoKSAmJiAhaXNDbGFz
c2ljUGhvbmUoKSkKLSAgICAgICAgcmV0dXJuICJPUyI7Ci0gICAgcmV0dXJuICJpUGhvbmUgT1Mi
OworICAgICAgICByZXR1cm4gIk9TIl9zOworICAgIHJldHVybiAiaVBob25lIE9TIl9zOwogfQog
CiBzdGF0aWMgU3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdC5tbQppbmRleCA0NzU3NGZjNDVjODA3ZDNmZmQzNTA3YmU3NjIyYjJjNDgxNmM5ODZm
Li5iZTQ2ZTFlMGVjNzRhMjY5NWQxMTFkMDlhMjA4YWNhYWUxNWRlYmViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Lm1tCkBAIC04MzgsNyArODM4LDcgQEAgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCgpCiB7CiAgICAgV2ViQVZQbGF5
ZXJDb250cm9sbGVyKiBwbGF5ZXJDb250cm9sbGVyID0gdGhpcy0+cGxheWVyQ29udHJvbGxlcigp
OwogICAgIGlmIChwbGF5ZXJDb250cm9sbGVyICYmIHBsYXllckNvbnRyb2xsZXIuZXh0ZXJuYWxQ
bGF5YmFja0FjdGl2ZSkKLSAgICAgICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQoZmFsc2UsIFBs
YXliYWNrU2Vzc2lvbk1vZGVsOjpUYXJnZXRUeXBlTm9uZSwgIiIpOworICAgICAgICBleHRlcm5h
bFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVO
b25lLCBlbXB0eVN0cmluZygpKTsKICAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKICAg
ICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BF
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNw
cAppbmRleCAxODg3ZDhjNmYyNDcxNDQ0ZWVkM2NmMDZmMzQ1YTM4OTNjOWU2ZTczLi5hZTQzOWUz
MGYxZmIyMzlkMThlMTE2NGU4ODk2ZGZiMjcyYzc1NjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQsIFBsYWluVGV4dFVSTFJlYWRpbmdQ
b2xpY3ksIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIHsKLSAgICB0ZXh0LnRleHQgPSBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVi
b2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgbmFtZSgpLCBjb250ZXh0KCkpOwor
ICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgi
X3MsIG5hbWUoKSwgY29udGV4dCgpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIHN0ZDo6b3B0
aW9uYWw8c2l6ZV90PikKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZEZpbGVSZWFkZXImLCBzdGQ6Om9wdGlvbmFsPHNpemVfdD4pCiAKIHZvaWQgUGFz
dGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYgdXJsKQogewotICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoInRl
eHQvcGxhaW47Y2hhcnNldD11dGYtOCIsIHVybC51cmwuc3RyaW5nKCkpOworICAgIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoInRl
eHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgdXJsLnVybC5zdHJpbmcoKSk7CiB9CiAKIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGVUcnVzdHdvcnRoeVdlYlVSTHNQYm9hcmRUeXBlKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVNYXJr
dXAoY29uc3QgU3RyaW5nJikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25z
dCBTdHJpbmcmIHRleHQsIFNtYXJ0UmVwbGFjZU9wdGlvbikKIHsKLSAgICB3cml0ZVN0cmluZygi
dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdGV4dCk7CisgICAgd3JpdGVTdHJpbmcoInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCJfcywgdGV4dCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVDdXN0b21EYXRhKGNvbnN0IFZlY3RvcjxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4mKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dExpYldQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1LZXli
b2FyZEV2ZW50TGliV1BFLmNwcAppbmRleCBhMzRkYzIyMGJiYjlhOTJiNDBkZmI0NjNlODcyNGU4
MWFjNzQ1YjJjLi44NDMyMzFkM2I1OGEwMmZkOWQ5M2QzYTM3Yjg2OTk3YmU1NmQwZjMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1LZXlib2FyZEV2
ZW50TGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZv
cm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcApAQCAtNzczLDEwMSArNzczLDEwMSBAQCBTdHJpbmcg
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVyRm9yV1BFS2V5Q29kZSh1bnNpZ25l
ZCBrZXlDb2RlKQogICAgIGNhc2UgV1BFX0tFWV9NZW51OgogICAgIGNhc2UgV1BFX0tFWV9BbHRf
TDoKICAgICBjYXNlIFdQRV9LRVlfQWx0X1I6Ci0gICAgICAgIHJldHVybiAiQWx0IjsKKyAgICAg
ICAgcmV0dXJuICJBbHQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0NsZWFyOgotICAgICAgICByZXR1
cm4gIkNsZWFyIjsKKyAgICAgICAgcmV0dXJuICJDbGVhciJfczsKICAgICBjYXNlIFdQRV9LRVlf
RG93bjoKLSAgICAgICAgcmV0dXJuICJEb3duIjsKKyAgICAgICAgcmV0dXJuICJEb3duIl9zOwog
ICAgICAgICAvLyAiRW5kIgogICAgIGNhc2UgV1BFX0tFWV9FbmQ6Ci0gICAgICAgIHJldHVybiAi
RW5kIjsKKyAgICAgICAgcmV0dXJuICJFbmQiX3M7CiAgICAgICAgIC8vICJFbnRlciIKICAgICBj
YXNlIFdQRV9LRVlfSVNPX0VudGVyOgogICAgIGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKICAgICBj
YXNlIFdQRV9LRVlfUmV0dXJuOgotICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICAgICAgcmV0
dXJuICJFbnRlciJfczsKICAgICBjYXNlIFdQRV9LRVlfRXhlY3V0ZToKLSAgICAgICAgcmV0dXJu
ICJFeGVjdXRlIjsKKyAgICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMToKLSAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgIHJldHVybiAiRjEiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0YyOgotICAgICAgICByZXR1cm4gIkYyIjsKKyAgICAgICAgcmV0dXJuICJG
MiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjM6Ci0gICAgICAgIHJldHVybiAiRjMiOworICAgICAg
ICByZXR1cm4gIkYzIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GNDoKLSAgICAgICAgcmV0dXJuICJG
NCI7CisgICAgICAgIHJldHVybiAiRjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y1OgotICAgICAg
ICByZXR1cm4gIkY1IjsKKyAgICAgICAgcmV0dXJuICJGNSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjY6Ci0gICAgICAgIHJldHVybiAiRjYiOworICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9GNzoKLSAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgIHJldHVybiAiRjci
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y4OgotICAgICAgICByZXR1cm4gIkY4IjsKKyAgICAgICAg
cmV0dXJuICJGOCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjk6Ci0gICAgICAgIHJldHVybiAiRjki
OworICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTA6Ci0gICAgICAg
IHJldHVybiAiRjEwIjsKKyAgICAgICAgcmV0dXJuICJGMTAiX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxMToKLSAgICAgICAgcmV0dXJuICJGMTEiOworICAgICAgICByZXR1cm4gIkYxMSJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjEyOgotICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAgIHJldHVy
biAiRjEyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTM6Ci0gICAgICAgIHJldHVybiAiRjEzIjsK
KyAgICAgICAgcmV0dXJuICJGMTMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNDoKLSAgICAgICAg
cmV0dXJuICJGMTQiOworICAgICAgICByZXR1cm4gIkYxNCJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjE1OgotICAgICAgICByZXR1cm4gIkYxNSI7CisgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMTY6Ci0gICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgcmV0dXJu
ICJGMTYiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNzoKLSAgICAgICAgcmV0dXJuICJGMTciOwor
ICAgICAgICByZXR1cm4gIkYxNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE4OgotICAgICAgICBy
ZXR1cm4gIkYxOCI7CisgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9G
MTk6Ci0gICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgcmV0dXJuICJGMTkiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0YyMDoKLSAgICAgICAgcmV0dXJuICJGMjAiOworICAgICAgICByZXR1cm4g
IkYyMCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjIxOgotICAgICAgICByZXR1cm4gIkYyMSI7Cisg
ICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjI6Ci0gICAgICAgIHJl
dHVybiAiRjIyIjsKKyAgICAgICAgcmV0dXJuICJGMjIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Yy
MzoKLSAgICAgICAgcmV0dXJuICJGMjMiOworICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICBj
YXNlIFdQRV9LRVlfRjI0OgotICAgICAgICByZXR1cm4gIkYyNCI7CisgICAgICAgIHJldHVybiAi
RjI0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9IZWxwOgotICAgICAgICByZXR1cm4gIkhlbHAiOwor
ICAgICAgICByZXR1cm4gIkhlbHAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hvbWU6Ci0gICAgICAg
IHJldHVybiAiSG9tZSI7CisgICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICBjYXNlIFdQRV9L
RVlfSW5zZXJ0OgotICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgICAgIHJldHVybiAiSW5z
ZXJ0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9MZWZ0OgotICAgICAgICByZXR1cm4gIkxlZnQiOwor
ICAgICAgICByZXR1cm4gIkxlZnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX1BhZ2VfRG93bjoKLSAg
ICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX1BhZ2VfVXA6Ci0gICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICAg
ICAgcmV0dXJuICJQYWdlVXAiX3M7CiAgICAgY2FzZSBXUEVfS0VZX1BhdXNlOgotICAgICAgICBy
ZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICBjYXNlIFdQRV9L
RVlfMzI3MF9QcmludFNjcmVlbjoKICAgICBjYXNlIFdQRV9LRVlfUHJpbnQ6Ci0gICAgICAgIHJl
dHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICByZXR1cm4gIlByaW50U2NyZWVuIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9SaWdodDoKLSAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgICAgIHJl
dHVybiAiUmlnaHQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX1NlbGVjdDoKLSAgICAgICAgcmV0dXJu
ICJTZWxlY3QiOworICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICBjYXNlIFdQRV9LRVlf
VXA6Ci0gICAgICAgIHJldHVybiAiVXAiOworICAgICAgICByZXR1cm4gIlVwIl9zOwogICAgICAg
ICAvLyBTdGFuZGFyZCBzYXlzIHRoYXQgREVMIGJlY29tZXMgVSswMDdGLgogICAgIGNhc2UgV1BF
X0tFWV9EZWxldGU6Ci0gICAgICAgIHJldHVybiAiVSswMDdGIjsKKyAgICAgICAgcmV0dXJuICJV
KzAwN0YiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0JhY2tTcGFjZToKLSAgICAgICAgcmV0dXJuICJV
KzAwMDgiOworICAgICAgICByZXR1cm4gIlUrMDAwOCJfczsKICAgICBjYXNlIFdQRV9LRVlfSVNP
X0xlZnRfVGFiOgogICAgIGNhc2UgV1BFX0tFWV8zMjcwX0JhY2tUYWI6CiAgICAgY2FzZSBXUEVf
S0VZX1RhYjoKLSAgICAgICAgcmV0dXJuICJVKzAwMDkiOworICAgICAgICByZXR1cm4gIlUrMDAw
OSJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDYwN2YzNjZiZjcyZmM4ZWI1Y2Nj
M2Q4MDUzZTYwMGNlNzAyOTdiYWIuLjRmYTgyYmJkZTE2MjRmZmZjMjc2MzgxYjU4N2ZkNjI1MGZh
NDgyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBA
IC0xNjMsNyArMTYzLDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1l
ZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICBhdXRvIHNlbGVj
dGVkVHJhY2tzID0gTWVkaWFSZWNvcmRlclByaXZhdGU6OnNlbGVjdFRyYWNrcyhtX3N0cmVhbSk7
CiAgICAgYXV0byBtaW1lVHlwZSA9IHRoaXMtPm1pbWVUeXBlKCk7CiAgICAgaWYgKCFtaW1lVHlw
ZSkKLSAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrID8gInZpZGVv
L21wNCIgOiAiYXVkaW8vbXA0IjsKKyAgICAgICAgbWltZVR5cGUgPSBzZWxlY3RlZFRyYWNrcy52
aWRlb1RyYWNrID8gInZpZGVvL21wNCJfcyA6ICJhdWRpby9tcDQiX3M7CiAKICAgICBHU1RfREVC
VUcoIkNyZWF0aW5nIHZpZGVvIHByb2ZpbGUgZm9yIG1pbWUtdHlwZSAlcyIsIG1pbWVUeXBlLmFz
Y2lpKCkuZGF0YSgpKTsKICAgICBhdXRvIGNvbnRlbnRUeXBlID0gQ29udGVudFR5cGUobWltZVR5
cGUpOwpAQCAtMjE3LDcgKzIxNyw3IEBAIEdSZWZQdHI8R3N0RW5jb2RpbmdDb250YWluZXJQcm9m
aWxlPiBNZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvCiAgICAgICAg
IGlmIChjb2RlY3MuY29udGFpbnMoInZvcmJpcyJfcykpCiAgICAgICAgICAgICBhdWRpb0NhcHNO
YW1lID0gImF1ZGlvL3gtdm9yYmlzIl9zOwogICAgICAgICBlbHNlIGlmIChjb2RlY3MuY29udGFp
bnMoIm9wdXMiX3MpKQotICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMi
OworICAgICAgICAgICAgYXVkaW9DYXBzTmFtZSA9ICJhdWRpby94LW9wdXMiX3M7CiAgICAgICAg
IGVsc2UgaWYgKGNvZGVjcy5maW5kSWYoW10oYXV0byYgY29kZWMpIHsgcmV0dXJuIGNvZGVjLnN0
YXJ0c1dpdGgoIm1wNGEiKTsgfSkgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICBhdWRpb0NhcHNO
YW1lID0gImF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPTQiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNv
bnRhaW5lclR5cGUuZW5kc1dpdGgoIndlYm0iKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCmluZGV4IGUxNDNjZDRmNGE1ZTQwZjZkNWI5NjVkYzNj
YTU0NDM3MDNjMDE4NTEuLmI0MjM3OWYzM2IzNWJmMmU1ZDcyYjEyN2MyZTAzYjY0MGFjZmNiNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApA
QCAtODUsMTQgKzg1LDE0IEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVyOjpwYXJzZUhl
YWRlcihTaGFyZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQogewogICAgIGF1dG8gbWltZUhl
YWRlciA9IGFkb3B0UmVmKCpuZXcgTUlNRUhlYWRlcik7CiAgICAgS2V5VmFsdWVNYXAga2V5VmFs
dWVQYWlycyA9IHJldHJpZXZlS2V5VmFsdWVQYWlycyhidWZmZXIpOwotICAgIEtleVZhbHVlTWFw
OjppdGVyYXRvciBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJj
b250ZW50LXR5cGUiKTsKKyAgICBLZXlWYWx1ZU1hcDo6aXRlcmF0b3IgbWltZVBhcmFtZXRlcnNJ
dGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10eXBlIl9zKTsKICAgICBpZiAo
bWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVuZCgpKSB7CiAgICAgICAg
IFN0cmluZyBjb250ZW50VHlwZSwgY2hhcnNldCwgbXVsdGlwYXJ0VHlwZSwgZW5kT2ZQYXJ0Qm91
bmRhcnk7CiAgICAgICAgIGlmIChhdXRvIHBhcnNlZENvbnRlbnRUeXBlID0gUGFyc2VkQ29udGVu
dFR5cGU6OmNyZWF0ZShtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yLT52YWx1ZSkpIHsKICAgICAgICAg
ICAgIGNvbnRlbnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPm1pbWVUeXBlKCk7CiAgICAgICAg
ICAgICBjaGFyc2V0ID0gcGFyc2VkQ29udGVudFR5cGUtPmNoYXJzZXQoKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICAgICAgICAgIG11bHRpcGFydFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFy
YW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIik7Ci0gICAgICAgICAgICBlbmRPZlBhcnRCb3VuZGFy
eSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImJvdW5kYXJ5Iik7
CisgICAgICAgICAgICBtdWx0aXBhcnRUeXBlID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRl
clZhbHVlRm9yTmFtZSgidHlwZSJfcyk7CisgICAgICAgICAgICBlbmRPZlBhcnRCb3VuZGFyeSA9
IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoImJvdW5kYXJ5Il9zKTsK
ICAgICAgICAgfQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRUeXBlID0gY29udGVudFR5
cGU7CiAgICAgICAgIGlmICghbWltZUhlYWRlci0+aXNNdWx0aXBhcnQoKSkKQEAgLTEwOSwxMSAr
MTA5LDExIEBAIFJlZlB0cjxNSU1FSGVhZGVyPiBNSU1FSGVhZGVyOjpwYXJzZUhlYWRlcihTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlciYgYnVmZmVyKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbWlt
ZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10cmFuc2Zl
ci1lbmNvZGluZyIpOworICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJz
LmZpbmQoImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmciX3MpOwogICAgIGlmIChtaW1lUGFyYW1l
dGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpCiAgICAgICAgIG1pbWVIZWFkZXIt
Pm1fY29udGVudFRyYW5zZmVyRW5jb2RpbmcgPSBwYXJzZUNvbnRlbnRUcmFuc2ZlckVuY29kaW5n
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKTsKIAotICAgIG1pbWVQYXJhbWV0ZXJzSXRl
cmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtbG9jYXRpb24iKTsKKyAgICBtaW1l
UGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LWxvY2F0aW9u
Il9zKTsKICAgICBpZiAobWltZVBhcmFtZXRlcnNJdGVyYXRvciAhPSBrZXlWYWx1ZVBhaXJzLmVu
ZCgpKQogICAgICAgICBtaW1lSGVhZGVyLT5tX2NvbnRlbnRMb2NhdGlvbiA9IG1pbWVQYXJhbWV0
ZXJzSXRlcmF0b3ItPnZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNTE2OTA0NWM3MDVmMDg5OGU4
MzE3NGUzMTY2ZTNhNjBlZGE5NGI4My4uMmRjMjcxNjYzYTMxMWZkNGIxZTY4MmY5MDhjZTYzNjRk
NmZlYTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTAyLDE1ICsxMDIsMTUgQEAgdm9pZCBSZXNvdXJj
ZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKIAogICAgIENGU3RyaW5nUmVmIGRvbWFpbiA9IENG
RXJyb3JHZXREb21haW4obV9wbGF0Zm9ybUVycm9yLmdldCgpKTsKICAgICBpZiAoZG9tYWluID09
IGtDRkVycm9yRG9tYWluTWFjaCB8fCBkb21haW4gPT0ga0NGRXJyb3JEb21haW5Db2NvYSkKLSAg
ICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4g
PSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJv
ckRvbWFpbkNGTmV0d29yaykKLSAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiI7
CisgICAgICAgIG1fZG9tYWluID0gIkNGVVJMRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAo
ZG9tYWluID09IGtDRkVycm9yRG9tYWluUE9TSVgpCi0gICAgICAgIG1fZG9tYWluID0gIk5TUE9T
SVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiJf
czsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5PU1N0YXR1cykKLSAgICAg
ICAgbV9kb21haW4gPSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4g
PSAiTlNPU1N0YXR1c0Vycm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZF
cnJvckRvbWFpbldpblNvY2spCi0gICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9tYWluV2lu
U29jayI7CisgICAgICAgIG1fZG9tYWluID0gImtDRkVycm9yRG9tYWluV2luU29jayJfczsKICAg
ICBlbHNlCiAgICAgICAgIG1fZG9tYWluID0gZG9tYWluOwogCkBAIC0xOTAsMTMgKzE5MCwxMyBA
QCBSZXNvdXJjZUVycm9yOjpSZXNvdXJjZUVycm9yKENGU3RyZWFtRXJyb3IgZXJyb3IpCiAKICAg
ICBzd2l0Y2goZXJyb3IuZG9tYWluKSB7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbkN1
c3RvbToKLSAgICAgICAgbV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIjsKKyAgICAgICAg
bV9kb21haW4gPSJOU0N1c3RvbUVycm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIGtDRlN0cmVhbUVycm9yRG9tYWluUE9TSVg6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TUE9T
SVhFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0gIk5TUE9TSVhFcnJvckRvbWFpbiJf
czsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0ZTdHJlYW1FcnJvckRvbWFpbk1hY09TU3Rh
dHVzOgotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCmluZGV4IDQ1OWJmMmE0MmY5ZTIwMGU5
MzVjMjE2Mzg5NDM2OWU0ZjQ1MWJkMDUuLjZjZjA0OTE4MTVlYWVlOTAwYzNkNGNlOThhYmQ2Yzkx
MDJhODEzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQpAQCAtMjM1LDkgKzIzNSw5IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgaWYgKG1fdXJsLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgYXV0
byBmc1JlcEZpbGUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24obV91cmwu
ZmlsZVN5c3RlbVBhdGgoKSk7Ci0gICAgICAgIGlmICghZnNSZXBGaWxlLmlzTnVsbCgpKSB7Ci0g
ICAgICAgICAgICBhdXRvIGZpbGVEZXZpY2UgPSBGaWxlU3lzdGVtOjpnZXRGaWxlRGV2aWNlSWQo
ZnNSZXBGaWxlKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IG1fdXJsLmZpbGVTeXN0ZW1QYXRo
KCk7CisgICAgICAgIGlmICghZmlsZVBhdGguaXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGF1dG8g
ZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmaWxlUGF0aCk7CiAgICAg
ICAgICAgICBpZiAoZmlsZURldmljZSAmJiBmaWxlRGV2aWNlLnZhbHVlKCkpCiAgICAgICAgICAg
ICAgICAgW25zUmVxdWVzdCBfc2V0UHJvcGVydHk6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2Vy
OmZpbGVEZXZpY2UudmFsdWUoKV0gZm9yS2V5OkAiTlNVUkxSZXF1ZXN0RmlsZVByb3RvY29sRXhw
ZWN0ZWREZXZpY2UiXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCmluZGV4IGUw
ZWVmNjg4MGYyYjY3ZTA5ZTIzM2RlYzc0NWJkMDgzNDg3OWFhY2QuLjA3MWJiMWE0N2JlMDc4MDQ2
MDQyMDVmZTIyMGQ4YTczZDNkZTY5YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgQ2VydGlmaWNhdGVJbmZvIENlcnRpZmljYXRlSW5mbzo6aXNvbGF0ZWRDb3B5
KCkgY29uc3QKIAogU3RyaW5nIENlcnRpZmljYXRlSW5mbzo6dmVyaWZpY2F0aW9uRXJyb3JEZXNj
cmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3Ry
aW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpOworICAgIHJldHVybiBTdHJpbmcgeyBYNTA5X3Zlcmlm
eV9jZXJ0X2Vycm9yX3N0cmluZyhtX3ZlcmlmaWNhdGlvbkVycm9yKSB9OwogfQogCiBDZXJ0aWZp
Y2F0ZUluZm86OkNlcnRpZmljYXRlIENlcnRpZmljYXRlSW5mbzo6bWFrZUNlcnRpZmljYXRlKGNv
bnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcAppbmRleCA2MTM2NTMxYjVi
MWM0YzdmYWJiNDQ5MTAzMDM1NmU1ZjQ2ZjcxYzVjLi42YjE2ZmMzNGRlN2ExOWEwZGRkZTBlNDUw
ZDkwODU0ZTM5ODQwOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAgLTM4Miw3ICszODIsNyBAQCBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxDb29raWU+PiBDb29raWVKYXJEQjo6c2VhcmNoQ29va2llcyhjb25zdCBVUkwm
IGZpcnN0UGFydHksCiAKICAgICBTdHJpbmcgcmVxdWVzdFBhdGggPSByZXF1ZXN0VXJsLnBhdGgo
KS50b1N0cmluZygpOwogICAgIGlmIChyZXF1ZXN0UGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
cXVlc3RQYXRoID0gIi8iOworICAgICAgICByZXF1ZXN0UGF0aCA9ICIvIl9zOwogCiAgICAgUmVn
aXN0cmFibGVEb21haW4gcmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0VXJsIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcApp
bmRleCA2ZDM0NjhlNDIyMjVmMmVmYzRkMDE5YTA5ZjQ0OGM0MDQ5YmI2ZDAzLi4wNGU2NGNkMmM3
YTkwZDljZTNkYzI5ZjhiMmQxNjc4MjQwZmEwMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC0xODcsMTEgKzE4Nywx
MSBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICBTdHJp
bmcgcGF0aCA9IHVybC5wYXRoKCkudG9TdHJpbmcoKTsKICAgICBpZiAocGF0aC5pc0VtcHR5KCkg
fHwgIXBhdGguc3RhcnRzV2l0aCgnLycpKQotICAgICAgICByZXR1cm4gIi8iOworICAgICAgICBy
ZXR1cm4gIi8iX3M7CiAKICAgICBhdXRvIGxhc3RTbGFzaFBvc2l0aW9uID0gcGF0aC5yZXZlcnNl
RmluZCgnLycpOwogICAgIGlmICghbGFzdFNsYXNoUG9zaXRpb24pCi0gICAgICAgIHJldHVybiAi
LyI7CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIHJldHVybiBwYXRoLnN1YnN0cmluZygw
LCBsYXN0U2xhc2hQb3NpdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcAppbmRleCA3YjQ2ODU1YTA1MTU3
NDdmNGRkZmJkZTVjOTA5YWFiOTg3MDYwM2Y4Li5hN2ExNTI3Yzg2YWEzYzVmMGQyZTViYTBkMWRi
MDMwNDUyYWY1ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKQEAgLTYxLDEwICs2MSwxMCBAQCBDdXJsQ2Fj
aGVFbnRyeTo6Q3VybENhY2hlRW50cnkoY29uc3QgU3RyaW5nJiB1cmwsIFJlc291cmNlSGFuZGxl
KiBqb2IsIGNvbnN0IFN0cgogICAgIGdlbmVyYXRlQmFzZUZpbGVuYW1lKHVybC5sYXRpbjEoKSk7
CiAKICAgICBtX2hlYWRlckZpbGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1lKTsKLSAgICBtX2hlYWRl
ckZpbGVuYW1lLmFwcGVuZCgiLmhlYWRlciIpOworICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5k
KCIuaGVhZGVyIl9zKTsKIAogICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZChtX2Jhc2VuYW1l
KTsKLSAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50Iik7CisgICAgbV9jb250
ZW50RmlsZW5hbWUuYXBwZW5kKCIuY29udGVudCJfcyk7CiB9CiAKIEN1cmxDYWNoZUVudHJ5Ojp+
Q3VybENhY2hlRW50cnkoKQpAQCAtMTM5LDkgKzEzOSw5IEBAIGJvb2wgQ3VybENhY2hlRW50cnk6
OnNhdmVSZXNwb25zZUhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAg
ICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkcygpLmVuZCgpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgU3RyaW5n
IGhlYWRlckZpZWxkID0gaXQtPmtleTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCI6ICIp
OworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIl9zKTsKICAgICAgICAgaGVhZGVyRmll
bGQuYXBwZW5kKGl0LT52YWx1ZSk7Ci0gICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiXG4iKTsK
KyAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiJfcyk7CiAgICAgICAgIENTdHJpbmcgaGVh
ZGVyRmllbGRMYXRpbjEgPSBoZWFkZXJGaWVsZC5sYXRpbjEoKTsKICAgICAgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoaGVhZGVyRmlsZSwgaGVhZGVyRmllbGRMYXRpbjEuZGF0YSgpLCBoZWFk
ZXJGaWVsZExhdGluMS5sZW5ndGgoKSk7CiAgICAgICAgIG1fY2FjaGVkUmVzcG9uc2Uuc2V0SFRU
UEhlYWRlckZpZWxkKGl0LT5rZXksIGl0LT52YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKaW5kZXgg
M2JkMmNjNzQyODZlYzQ2Nzg2NDAyNDhjNWUxY2ZlY2M1YTAyNjdiZC4uNzAyYzViMzFhMDFlZTI0
NmM3Yzc1ZDdiNTU1ODRhZWFkNmZiMDUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcApAQCAtODUsNyAr
ODUsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jYWNoZURpci5hcHBl
bmQoIi8iKTsKKyAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyJfcyk7CiAKICAgICBtX2Rpc2FibGVk
ID0gZmFsc2U7CiAgICAgbG9hZEluZGV4KCk7CkBAIC0xMzgsOCArMTM4LDcgQEAgdm9pZCBDdXJs
Q2FjaGVNYW5hZ2VyOjpzYXZlSW5kZXgoKQogICAgIGlmIChtX2Rpc2FibGVkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgaW5kZXhGaWxlUGF0aChtX2NhY2hlRGlyKTsKLSAgICBpbmRl
eEZpbGVQYXRoLmFwcGVuZCgiaW5kZXguZGF0Iik7CisgICAgYXV0byBpbmRleEZpbGVQYXRoID0g
bWFrZVN0cmluZyhtX2NhY2hlRGlyLCAiaW5kZXguZGF0Il9zKTsKIAogICAgIEZpbGVTeXN0ZW06
OmRlbGV0ZUZpbGUoaW5kZXhGaWxlUGF0aCk7CiAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGluZGV4RmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGluZGV4RmlsZVBhdGgsIEZp
bGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKaW5kZXggNzI4Y2I4OGJmYjA1
NTAyOWFhZjZmNTkzNDcxNTM5Y2U3NDc5MjRjZC4uM2U1ZDZmMWM5MGY2MThlZmQxZTVjYWQxMGQ0
YTA2YWVlNTk5NjNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC00MjksMjYgKzQyOSwyMyBAQCB2b2lkIEN1cmxI
YW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMp
CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU3RyaW5nIGhlYWRlcihuYW1lKTsKKyAg
ICBTdHJpbmcgaGVhZGVyOwogCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAv
LyBJbnNlcnQgdGhlIDsgdG8gdGVsbCBjdXJsIHRoYXQgdGhpcyBoZWFkZXIgaGFzIGFuIGVtcHR5
IHZhbHVlLgotICAgICAgICBoZWFkZXIuYXBwZW5kKCI7Iik7CisgICAgICAgIGhlYWRlciA9IG1h
a2VTdHJpbmcobmFtZSwgJzsnKTsKICAgICB9IGVsc2UgewotICAgICAgICBoZWFkZXIuYXBwZW5k
KCI6ICIpOwotICAgICAgICBoZWFkZXIuYXBwZW5kKHZhbHVlKTsKKyAgICAgICAgaGVhZGVyID0g
bWFrZVN0cmluZyhuYW1lLCAiOiAiLCB2YWx1ZSk7CiAgICAgfQogCi0gICAgYXBwZW5kUmVxdWVz
dEhlYWRlcihoZWFkZXIpOworICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoV1RGTW92ZShoZWFkZXIp
KTsKIH0KIAogdm9pZCBDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKICAgICAvLyBBZGQgYSBoZWFkZXIgd2l0aCBubyBjb250ZW50LCB0aGUgaW50
ZXJuYWxseSB1c2VkIGhlYWRlciB3aWxsIGdldCBkaXNhYmxlZC4gCi0gICAgU3RyaW5nIGhlYWRl
cihuYW1lKTsKLSAgICBoZWFkZXIuYXBwZW5kKCI6Iik7Ci0KLSAgICBhcHBlbmRSZXF1ZXN0SGVh
ZGVyKGhlYWRlcik7CisgICAgYXV0byBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICc6Jyk7Cisg
ICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxI
YW5kbGU6OmFwcGVuZFJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3Bw
CmluZGV4IGFhZjBjOGQ5NDA3MDU1ZDY4YTA1NWZiMzUwNzk2N2RlNGMwMDg2ZWQuLmIwOTI1NmIx
OTgzZTg2YjFmZmU1N2NkYTI4Zjc0YzZiM2Y1YTMxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC0xODQsNyAr
MTg0LDcgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OndpbGxTZW5kUmVxdWVzdCgpCiAgICAgbmV3UmVx
dWVzdC5zZXRVUkwobmV3VVJMKTsKIAogICAgIGlmIChzaG91bGRSZWRpcmVjdEFzR0VUKG5ld1Jl
cXVlc3QsIGNyb3NzT3JpZ2luKSkgewotICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2Qo
IkdFVCIpOworICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAg
ICAgIG5ld1JlcXVlc3Quc2V0SFRUUEJvZHkobnVsbHB0cik7CiAgICAgICAgIG5ld1JlcXVlc3Qu
Y2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCAyYmFmOTQyZGJjOTYz
ZDNmZmIzZGNiMTVmYzFiM2JlZGQwZWVlZWI0Li43ZWIwODcwZDc5NzRjNWJiMTBiNWM0NjEzODlj
NThmY2FkZTM4MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIEN1cmxSZXF1
ZXN0OjpzZXR1cFBVVCgpCiAgICAgbV9jdXJsSGFuZGxlLT5lbmFibGVIdHRwUHV0UmVxdWVzdCgp
OwogCiAgICAgLy8gRGlzYWJsZSB0aGUgRXhwZWN0OiAxMDAgY29udGludWUgaGVhZGVyCi0gICAg
bV9jdXJsSGFuZGxlLT5yZW1vdmVSZXF1ZXN0SGVhZGVyKCJFeHBlY3QiKTsKKyAgICBtX2N1cmxI
YW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCJfcyk7CiAKICAgICBhdXRvIGVsZW1l
bnRTaXplID0gbV9mb3JtRGF0YVN0cmVhbS5lbGVtZW50U2l6ZSgpOwogICAgIGlmICghZWxlbWVu
dFNpemUpCkBAIC01OTMsNyArNTkzLDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6c2V0dXBTZW5kRGF0
YShib29sIGZvclB1dE1ldGhvZCkKIHsKICAgICAvLyBjdXJsIGd1ZXNzZXMgdGhhdCB3ZSB3YW50
IGNodW5rZWQgZW5jb2RpbmcgYXMgbG9uZyBhcyB3ZSBzcGVjaWZ5IHRoZSBoZWFkZXIKICAgICBp
ZiAobV9mb3JtRGF0YVN0cmVhbS5zaG91bGRVc2VDaHVua1RyYW5zZmVyKCkpCi0gICAgICAgIG1f
Y3VybEhhbmRsZS0+YXBwZW5kUmVxdWVzdEhlYWRlcigiVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5r
ZWQiKTsKKyAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zl
ci1FbmNvZGluZzogY2h1bmtlZCJfcyk7CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChmb3JQdXRN
ZXRob2QpCiAgICAgICAgICAgICBtX2N1cmxIYW5kbGUtPnNldEluRmlsZVNpemVMYXJnZShzdGF0
aWNfY2FzdDxjdXJsX29mZl90PihtX2Zvcm1EYXRhU3RyZWFtLnRvdGFsU2l6ZSgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAppbmRleCAzODk3ZTAxYzZkMDc2NmRhY2Yz
ZTE5YjIzNzMzNmY1YjU1Y2U1MjY5Li5iM2FiOGQxY2I2MmQzZGQwOWYwZmEwODg4YTIxOTA0NmJk
YjFlMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKQEAgLTEzMCw3
ICsxMzAsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2
ZVJlc3BvbnNlKEN1cmxSZXF1ZXN0JiByZXF1ZXN0LCBDdQogICAgICAgICBpZiAoQ3VybENhY2hl
TWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5nKCks
IG1fcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0
aW9uSGVhZGVycykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0Nv
ZGUoMjAwKTsKLSAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJP
SyIpOworICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9z
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DdXJsLmNwcAppbmRleCBlN2I4ZWJjZTA3MzUzNmMxNDhlYWZhY2E5ZDc1MWVjOGZiMjQ0
MjMyLi40Zjg5ZDk3M2VjOTExYTVkOTA5ZGRkN2UyZWJhOTdhNWQ0ZmJjYjBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC00MywxMyArNDMsMTMgQEAgc3RhdGljIFN0
cmluZyBkZWZhdWx0Q29va2llSmFyUGF0aCgpCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlZmF1
bHRGaWxlTmFtZSA9ICJjb29raWUuamFyLmRiIjsKICAgICBjaGFyKiBjb29raWVKYXJQYXRoID0g
Z2V0ZW52KCJDVVJMX0NPT0tJRV9KQVJfUEFUSCIpOwogICAgIGlmIChjb29raWVKYXJQYXRoKQot
ICAgICAgICByZXR1cm4gY29va2llSmFyUGF0aDsKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6ZnJv
bVVURjgoY29va2llSmFyUGF0aCk7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgcmV0dXJuIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChGaWxlU3lzdGVtOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKSwgZGVmYXVsdEZpbGVOYW1lKTsKICNlbHNlCiAgICAg
Ly8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI0MTcK
LSAgICByZXR1cm4gZGVmYXVsdEZpbGVOYW1lOworICAgIHJldHVybiBTdHJpbmcgeyBkZWZhdWx0
RmlsZU5hbWUgfTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKaW5kZXggMzYxNTA5ZDc0ZGM5NTEy
ZjUxZjQxYjkyZDY5N2FiYzgxZDk1YmI1ZS4uZDM5YjY1YjQ0MGU4ZjJiYjE5NTRlNmM2MGEzZTg5
MjNiM2Y0NmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL09wZW5TU0xIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcApAQCAtMzQwLDEyICszNDAsMTIgQEAgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpDZXJ0aWZpY2F0ZVN1bW1hcnk+IGNyZWF0ZVN1bW1hcnlJbmZvKGNvbnN0
IFZlY3Rvcjx1aW50OF8KIAogU3RyaW5nIHRsc1ZlcnNpb24oY29uc3QgU1NMKiBzc2wpCiB7Ci0g
ICAgcmV0dXJuIFNTTF9nZXRfdmVyc2lvbihzc2wpOworICAgIHJldHVybiBTdHJpbmcgeyBTU0xf
Z2V0X3ZlcnNpb24oc3NsKSB9OwogfQogCiBTdHJpbmcgdGxzQ2lwaGVyTmFtZShjb25zdCBTU0wq
IHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX0NJUEhFUl9nZXRfbmFtZShTU0xfZ2V0X2N1cnJlbnRf
Y2lwaGVyKHNzbCkpOworICAgIHJldHVybiBTdHJpbmcgeyBTU0xfQ0lQSEVSX2dldF9uYW1lKFNT
TF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSkgfTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1YmxpY1N1ZmZpeEN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1YmxpY1N1ZmZpeEN1cmwuY3BwCmlu
ZGV4IGI3OWE0NzMxNWVjODAyNDI4OWJmNGE2NWY5MGQyZTM4YWMxZDQ3N2UuLmY5YjAwZTE4NDUw
OWJmN2I4YzVjMGFjMzFkZTEyYzMyYjJlNTJmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgc3RhdGljIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50
ZXJuYWwoY29uc3QgcHNsX2N0eF90KiBwc2wsIGNvbnN0IGMKIHsKICAgICAvLyBwc2xfcmVnaXN0
ZXJhYmxlX2RvbWFpbiByZXR1cm5zIGEgcG9pbnRlciB0byBkb21haW4ncyBkYXRhIG9yIG51bGwg
aWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBkb21haW4KICAgICBpZiAoY29uc3QgY2hhciogdG9wUHJp
dmF0ZURvbWFpbiA9IHBzbF9yZWdpc3RyYWJsZV9kb21haW4ocHNsLCBkb21haW4pKQotICAgICAg
ICByZXR1cm4gdG9wUHJpdmF0ZURvbWFpbjsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHRvcFBy
aXZhdGVEb21haW4gfTsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCmluZGV4IGQx
ZDdiNjZlYWE3OGMxMDMxZmJhYjRiNzQxY2Y4MzFjMmZjMGIxM2IuLjE0NWZmNjhkNTg4OGZhNGE0
NjRjNjdiMGI0YWY1NjQ2NWIxYzRmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApAQCAtNTgsNyArNTgsNyBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIHZvaWQgZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNv
dXJjZUVycm9yJik7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgY3VybEVycm9yRG9t
YWluOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VybEVycm9yRG9tYWluOwogCiAgICAgdW5z
aWduZWQgbV9zc2xFcnJvcnMgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKaW5kZXggOWUz
ZTE1NjFiNTI5MTAwMmVlZGU4OWFlYzdkNGJjYmRiZDI1MmMyMy4uOTlkMDZhMjdhMDJlMDEzNDMx
MjZmMzg0NDIwYmI3Y2I0ZjcyZDYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCkBAIC0zMiw3ICsz
Miw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY29uc3QgY2hhciogY29uc3QgUmVzb3Vy
Y2VFcnJvcjo6Y3VybEVycm9yRG9tYWluID0gIkN1cmxFcnJvckRvbWFpbiI7CitBU0NJSUxpdGVy
YWwgUmVzb3VyY2VFcnJvcjo6Y3VybEVycm9yRG9tYWluID0gIkN1cmxFcnJvckRvbWFpbiJfczsK
IAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoaW50IGVycm9yQ29kZSwg
Y29uc3QgVVJMJiBmYWlsaW5nVVJMLCBUeXBlIHR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CmluZGV4IDllZGJkMmU4MWE3ZjFlNDU2NzVkMDIxOTUzY2VmNTk5NWM2NDY1OTcuLmRlYTBkYWM0
YmQwMDJkZTg5ZGM4MjAzYjgwNGM3NjJhNWJmMTQ3YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0
KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGly
ZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Qu
c2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgi
R0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAg
ICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNw
b25zZUN1cmwuY3BwCmluZGV4IDNkMWJkMTI0OWI3ZDc2ZWVlYTQ2Y2M1ODVlOGUzYzhlOWYwZGU4
YWUuLjViZjhkNjgwMTFjMjgzMDQ3OGMwNzYzMTgzZGQ2ODkyMzI3NWZkNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3Vy
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVzcG9uc2VDdXJsLmNwcApAQCAtODksMTMgKzg5LDEzIEBAIFJlc291cmNlUmVzcG9uc2U6OlJl
c291cmNlUmVzcG9uc2UoY29uc3QgQ3VybFJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIHN3aXRj
aCAocmVzcG9uc2UuaHR0cFZlcnNpb24pIHsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzFf
MDoKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4wIik7CisgICAgICAgIHNldEhUVFBW
ZXJzaW9uKCJIVFRQLzEuMCJfcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1VSTF9IVFRQ
X1ZFUlNJT05fMV8xOgotICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjEiKTsKKyAgICAg
ICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4xIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzIi
KTsKKyAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMiJfcyk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fTk9ORToKICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJl
dmlld0xvYWRlckNsaWVudC5oCmluZGV4IDBmZTY1YTI5ZTYzNjE2ZGI0MmY3YzllYTFkMTg1MjIx
YzIwMDQwYzMuLmMyMGVjOGU3MjExY2UxZWZlNjdiNTQxYmM4MWI5NjU1YzZlNTdkMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9M
ZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZEZhaWwoKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNQYXNzd29yZEVudHJ5KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3Jk
KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29t
cGxldGlvbkhhbmRsZXIoIiIpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlcXVlc3RQYXNzd29y
ZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKGVtcHR5U3RyaW5nKCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKaW5kZXggZmFiNTc0MjMz
ZmUwMGY0YjBiZjIyZTBiYWVjMDlkYjExNmE0ZDNjZS4uYThkMjM3MDY0OGQyNDY4ODEyY2U1YjZm
OTUzOWFhYjA5NjJlODZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApA
QCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4sIENvbXBsZXRpCiAgICAgR1VuaXF1ZVB0
cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZVN0b3Jh
Z2UoKSkpOwogICAgIGZvciAoYXV0byogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0g
PSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxTb3VwQ29va2llPiBj
b29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpKTsKLSAgICAgICAgaWYg
KFJlZ2lzdHJhYmxlRG9tYWluOjp1bmNoZWNrZWRDcmVhdGVGcm9tSG9zdChzb3VwX2Nvb2tpZV9n
ZXRfZG9tYWluKGNvb2tpZS5nZXQoKSkpID09IGRvbWFpbikgeworICAgICAgICBpZiAoUmVnaXN0
cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KFN0cmluZyB7IHNvdXBfY29va2ll
X2dldF9kb21haW4oY29va2llLmdldCgpKSB9KSA9PSBkb21haW4pIHsKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VF
cnJvclNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlRXJyb3JTb3VwLmNwcAppbmRleCAyY2U4YTAzZmRmMDIyZGUzZjJmY2U5ZGYzYThhYTk1NTZm
OGMwMGI3Li4zNGE1N2U1YzJjMmViNjk4OTdhNTczYWU0MDMyYjIzMWI5OTkzYzFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNv
dXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUVycm9yU291cC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBS
ZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKGNvbnN0IFVSTCYgZmFp
bGluZ1VSTCwgaW50IHN0YXR1c0NvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uUGhyYXNlKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJP
Ul9ET01BSU4pLCBzdGF0dXNDb2RlLCBmYWlsaW5nVVJMLCByZWFzb25QaHJhc2UpOworICAgIHJl
dHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9F
UlJPUl9ET01BSU4pIH0sIHN0YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFzZSk7CiB9
CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6aHR0cEVycm9yKFNvdXBNZXNzYWdlKiBt
ZXNzYWdlLCBHRXJyb3IqIGVycm9yKQpAQCAtNjEsMjIgKzYxLDIyIEBAIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6YXV0aGVudGljYXRpb25FcnJvcihTb3VwTWVzc2FnZSogbWVzc2FnZSkK
IHsKICAgICBBU1NFUlQobWVzc2FnZSk7CiAjaWYgVVNFKFNPVVAyKQotICAgIHJldHVybiBSZXNv
dXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pLCBtZXNz
YWdlLT5zdGF0dXNfY29kZSwKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1
YXJrX3RvX3N0cmluZyhTT1VQX0hUVFBfRVJST1JfRE9NQUlOKSB9LCBtZXNzYWdlLT5zdGF0dXNf
Y29kZSwKICAgICAgICAgc291cFVSSVRvVVJMKHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1lc3NhZ2Up
KSwgU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlLT5yZWFzb25fcGhyYXNlKSk7CiAjZWxzZQotICAg
IHJldHVybiBSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJP
UiksIHNvdXBfbWVzc2FnZV9nZXRfc3RhdHVzKG1lc3NhZ2UpLAorICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUikgfSwg
c291cF9tZXNzYWdlX2dldF9zdGF0dXMobWVzc2FnZSksCiAgICAgICAgIHNvdXBfbWVzc2FnZV9n
ZXRfdXJpKG1lc3NhZ2UpLCBTdHJpbmc6OmZyb21VVEY4KHNvdXBfbWVzc2FnZV9nZXRfcmVhc29u
X3BocmFzZShtZXNzYWdlKSkpOwogI2VuZGlmCiB9CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VF
cnJvcjo6Z2VuZXJpY0dFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIEdFcnJvciogZXJyb3Ip
CiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRv
bWFpbiksIGVycm9yLT5jb2RlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5t
ZXNzYWdlKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19z
dHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVy
cm9yOjp0bHNFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIHVuc2lnbmVkIHRsc0Vycm9ycywg
R1Rsc0NlcnRpZmljYXRlKiBjZXJ0aWZpY2F0ZSkKIHsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoR19UTFNfRVJST1IpLCBHX1RMU19FUlJPUl9CQURf
Q0VSVElGSUNBVEUsIGZhaWxpbmdVUkwsIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOwor
ICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmlu
ZyhHX1RMU19FUlJPUikgfSwgR19UTFNfRVJST1JfQkFEX0NFUlRJRklDQVRFLCBmYWlsaW5nVVJM
LCB1bmFjY2VwdGFibGVUTFNDZXJ0aWZpY2F0ZSgpKTsKICAgICByZXNvdXJjZUVycm9yLnNldFRM
U0Vycm9ycyh0bHNFcnJvcnMpOwogICAgIHJlc291cmNlRXJyb3Iuc2V0Q2VydGlmaWNhdGUoY2Vy
dGlmaWNhdGUpOwogICAgIHJldHVybiByZXNvdXJjZUVycm9yOwpAQCAtODgsOSArODgsOSBAQCBS
ZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRFcnJvcihjb25zdCBVUkwmIGZhaWxp
bmdVUkwpCiAgICAgLy8gbmV0d29ya2luZyBlcnJvcnMgZnJvbSB0aGF0IGZpbGUgc2hvdWxkIGJl
IG1vdmVkIGhlcmUuCiAKICAgICAvLyBVc2UgdGhlIHNhbWUgdmFsdWUgYXMgaW4gTlNVUkxFcnJv
ci5oCi0gICAgc3RhdGljIGNvbnN0IGludCB0aW1lb3V0RXJyb3IgPSAtMTAwMTsKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3QgIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciI7
Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW4sIHRpbWVvdXRFcnJvciwgZmFp
bGluZ1VSTCwgIlJlcXVlc3QgdGltZWQgb3V0IiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91
dCk7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQgdGltZW91dEVycm9yID0gLTEwMDE7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBhdXRvIGVycm9yRG9tYWluID0gIldlYktpdE5ldHdvcmtFcnJvciJf
czsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBm
YWlsaW5nVVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OlRp
bWVvdXQpOwogfQogCiB2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VFcnJvciYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcAppbmRl
eCA5YjdiNGIzMmQ3NTdiMWJjMmE2Y2IyNTk0MTA4MDRiODk1MmNlMTFiLi44ODhkYjdkOGYzMzky
OGRmNmY2Y2Y5OTc2OTFkZGYyOGY1YzI2MDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3Vw
TWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICB9CiAKICAgICBt
X2h0dHBTdGF0dXNDb2RlID0gc291cF9tZXNzYWdlX2dldF9zdGF0dXMoc291cE1lc3NhZ2UpOwot
ICAgIHNldEhUVFBTdGF0dXNUZXh0KHNvdXBfbWVzc2FnZV9nZXRfcmVhc29uX3BocmFzZShzb3Vw
TWVzc2FnZSkpOworICAgIHNldEhUVFBTdGF0dXNUZXh0KFN0cmluZyB7IHNvdXBfbWVzc2FnZV9n
ZXRfcmVhc29uX3BocmFzZShzb3VwTWVzc2FnZSkgfSk7CiAKICAgICBtX2NlcnRpZmljYXRlID0g
c291cF9tZXNzYWdlX2dldF90bHNfcGVlcl9jZXJ0aWZpY2F0ZShzb3VwTWVzc2FnZSk7CiAgICAg
bV90bHNFcnJvcnMgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVyX2NlcnRpZmljYXRlX2Vycm9y
cyhzb3VwTWVzc2FnZSk7CkBAIC02Niw5ICs2Niw5IEBAIFJlc291cmNlUmVzcG9uc2U6OlJlc291
cmNlUmVzcG9uc2UoU291cE1lc3NhZ2UqIHNvdXBNZXNzYWdlLCBjb25zdCBDU3RyaW5nJiBzbmlm
CiAgICAgU3RyaW5nIGNvbnRlbnRUeXBlOwogICAgIGNvbnN0IGNoYXIqIG9mZmljaWFsVHlwZSA9
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUocmVzcG9uc2VIZWFkZXJzLCAiQ29udGVudC1U
eXBlIik7CiAgICAgaWYgKCFzbmlmZmVkQ29udGVudFR5cGUuaXNOdWxsKCkgJiYgbV9odHRwU3Rh
dHVzQ29kZSAhPSBTT1VQX1NUQVRVU19OT1RfTU9ESUZJRUQgJiYgc25pZmZlZENvbnRlbnRUeXBl
ICE9IG9mZmljaWFsVHlwZSkKLSAgICAgICAgY29udGVudFR5cGUgPSBzbmlmZmVkQ29udGVudFR5
cGUuZGF0YSgpOworICAgICAgICBjb250ZW50VHlwZSA9IFN0cmluZyB7IHNuaWZmZWRDb250ZW50
VHlwZS5kYXRhKCkgfTsKICAgICBlbHNlCi0gICAgICAgIGNvbnRlbnRUeXBlID0gb2ZmaWNpYWxU
eXBlOworICAgICAgICBjb250ZW50VHlwZSA9IFN0cmluZyB7IG9mZmljaWFsVHlwZSB9OwogICAg
IHNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICBpZiAobV9taW1lVHlwZS5pc0VtcHR5KCkgJiYgbV9odHRwU3RhdHVzQ29kZSAhPSBTT1VQ
X1NUQVRVU19OT1RfTU9ESUZJRUQpCiAgICAgICAgIHNldE1pbWVUeXBlKE1JTUVUeXBlUmVnaXN0
cnk6Om1pbWVUeXBlRm9yUGF0aChtX3VybC5wYXRoKCkudG9TdHJpbmcoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBo
ZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25M
aWJIeXBoZW4uY3BwCmluZGV4IGE1NGI2NWM1MTE4MjA2YjcxNzExYjQ5NzczY2EyMWQ2NmMyMDkx
YTUuLmEyZjBjOTU0NzI4YzllNmQ2YjM2MDg2Yjk2NThkYzM5NDRjYzJhYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlv
bkxpYkh5cGhlbi5jcHAKQEAgLTY1LDEyICs2NSwxMyBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RM
b2NhbGVGcm9tRGljdGlvbmFyeUZpbGVOYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAKIHN0
YXRpYyB2b2lkIHNjYW5EaXJlY3RvcnlGb3JEaWN0aW9uYXJpZXMoY29uc3QgY2hhciogZGlyZWN0
b3J5UGF0aCwgSGFzaE1hcDxBdG9tU3RyaW5nLCBWZWN0b3I8U3RyaW5nPj4mIGF2YWlsYWJsZUxv
Y2FsZXMpCiB7Ci0gICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJl
Y3RvcnkoZGlyZWN0b3J5UGF0aCkpIHsKKyAgICBhdXRvIGRpcmVjdG9yeVBhdGhTdHJpbmcgPSBT
dHJpbmc6OmZyb21VVEY4KGRpcmVjdG9yeVBhdGgpOworICAgIGZvciAoYXV0byYgZmlsZU5hbWUg
OiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGRpcmVjdG9yeVBhdGhTdHJpbmcpKSB7CiAgICAg
ICAgIFN0cmluZyBsb2NhbGUgPSBleHRyYWN0TG9jYWxlRnJvbURpY3Rpb25hcnlGaWxlTmFtZShm
aWxlTmFtZSk7CiAgICAgICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7CisgICAgICAgIGF1dG8gZmls
ZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoZGlyZWN0b3J5UGF0
aFN0cmluZywgZmlsZU5hbWUpOwogICAgICAgICBjaGFyIG5vcm1hbGl6ZWRQYXRoW1BBVEhfTUFY
XTsKICAgICAgICAgaWYgKCFyZWFscGF0aChGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oZmlsZVBhdGgpLmRhdGEoKSwgbm9ybWFsaXplZFBhdGgpKQogICAgICAgICAgICAgY29u
dGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2Nh
bGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNw
cAppbmRleCBhYTAwYTRhZDZmNWI1OTk4MmI2YjQ3NzMxNzFjOGJjN2MwMzM5MDA4Li5hNDRlNDM2
YjY1ZWMzMzRmZTc0ODhhZDNkZDdjZWNjODlhN2I0MDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKQEAgLTQzNCw4ICs0MzQsOCBAQCB2b2lk
IExvY2FsZVdpbjo6aW5pdGlhbGl6ZUxvY2FsZURhdGEoKQogICAgIFN0cmluZyBuZWdhdGl2ZVN1
ZmZpeCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgc3dpdGNoIChuZWdhdGl2ZUZvcm1hdCkgewogICAg
IGNhc2UgTmVnYXRpdmVGb3JtYXRQYXJlbnRoZXNpczoKLSAgICAgICAgbmVnYXRpdmVQcmVmaXgg
PSAiKCI7Ci0gICAgICAgIG5lZ2F0aXZlU3VmZml4ID0gIikiOworICAgICAgICBuZWdhdGl2ZVBy
ZWZpeCA9ICIoIl9zOworICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9ICIpIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIE5lZ2F0aXZlRm9ybWF0U2lnblNwYWNlUHJlZml4OgogICAgICAgICBu
ZWdhdGl2ZVByZWZpeCA9IG5lZ2F0aXZlU2lnbiArICIgIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCmluZGV4IGFhZTZjOTlkZDA1Mjk4NWE0MzcxODg0NmI2
ODUzNjQ1NDA1MGMyMzQuLjA1YTBkMTI1NmExMzY5ODI1MDdiNzMyYzc4NTJiYmVjZTIwMWI1MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcApAQCAtNDYs
MTAxICs0NiwxMDEgQEAgc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yV2luZG93c0tleUNv
ZGUodW5zaWduZWQgc2hvcnQga2V5Q29kZSkKIHsKICAgICBzd2l0Y2ggKGtleUNvZGUpIHsKICAg
ICAgICAgY2FzZSBWS19NRU5VOgotICAgICAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAgICAg
ICAgcmV0dXJuICJBbHQiX3M7CiAgICAgICAgIGNhc2UgVktfQ09OVFJPTDoKLSAgICAgICAgICAg
IHJldHVybiAiQ29udHJvbCI7CisgICAgICAgICAgICByZXR1cm4gIkNvbnRyb2wiX3M7CiAgICAg
ICAgIGNhc2UgVktfU0hJRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIlNoaWZ0IjsKKyAgICAgICAg
ICAgIHJldHVybiAiU2hpZnQiX3M7CiAgICAgICAgIGNhc2UgVktfQ0FQSVRBTDoKLSAgICAgICAg
ICAgIHJldHVybiAiQ2Fwc0xvY2siOworICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayJfczsK
ICAgICAgICAgY2FzZSBWS19MV0lOOgogICAgICAgICBjYXNlIFZLX1JXSU46Ci0gICAgICAgICAg
ICByZXR1cm4gIldpbiI7CisgICAgICAgICAgICByZXR1cm4gIldpbiJfczsKICAgICAgICAgY2Fz
ZSBWS19DTEVBUjoKLSAgICAgICAgICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICAgICAgcmV0
dXJuICJDbGVhciJfczsKICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgcmV0dXJu
ICJEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiRG93biJfczsKICAgICAgICAgLy8gIkVuZCIK
ICAgICAgICAgY2FzZSBWS19FTkQ6Ci0gICAgICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgICAg
ICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgICAgICBjYXNlIFZL
X1JFVFVSTjoKLSAgICAgICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICAgICAgcmV0dXJu
ICJFbnRlciJfczsKICAgICAgICAgY2FzZSBWS19FWEVDVVRFOgotICAgICAgICAgICAgcmV0dXJu
ICJFeGVjdXRlIjsKKyAgICAgICAgICAgIHJldHVybiAiRXhlY3V0ZSJfczsKICAgICAgICAgY2Fz
ZSBWS19GMToKLSAgICAgICAgICAgIHJldHVybiAiRjEiOworICAgICAgICAgICAgcmV0dXJuICJG
MSJfczsKICAgICAgICAgY2FzZSBWS19GMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIiOworICAg
ICAgICAgICAgcmV0dXJuICJGMiJfczsKICAgICAgICAgY2FzZSBWS19GMzoKLSAgICAgICAgICAg
IHJldHVybiAiRjMiOworICAgICAgICAgICAgcmV0dXJuICJGMyJfczsKICAgICAgICAgY2FzZSBW
S19GNDoKLSAgICAgICAgICAgIHJldHVybiAiRjQiOworICAgICAgICAgICAgcmV0dXJuICJGNCJf
czsKICAgICAgICAgY2FzZSBWS19GNToKLSAgICAgICAgICAgIHJldHVybiAiRjUiOworICAgICAg
ICAgICAgcmV0dXJuICJGNSJfczsKICAgICAgICAgY2FzZSBWS19GNjoKLSAgICAgICAgICAgIHJl
dHVybiAiRjYiOworICAgICAgICAgICAgcmV0dXJuICJGNiJfczsKICAgICAgICAgY2FzZSBWS19G
NzoKLSAgICAgICAgICAgIHJldHVybiAiRjciOworICAgICAgICAgICAgcmV0dXJuICJGNyJfczsK
ICAgICAgICAgY2FzZSBWS19GODoKLSAgICAgICAgICAgIHJldHVybiAiRjgiOworICAgICAgICAg
ICAgcmV0dXJuICJGOCJfczsKICAgICAgICAgY2FzZSBWS19GOToKLSAgICAgICAgICAgIHJldHVy
biAiRjkiOworICAgICAgICAgICAgcmV0dXJuICJGOSJfczsKICAgICAgICAgY2FzZSBWS19GMTA6
Ci0gICAgICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxMSJfczsK
ICAgICAgICAgY2FzZSBWS19GMTI6Ci0gICAgICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgICAg
ICAgICByZXR1cm4gIkYxMiJfczsKICAgICAgICAgY2FzZSBWS19GMTM6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkYxMyI7CisgICAgICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICAgICAgY2FzZSBW
S19GMTQ6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgICAgICByZXR1cm4gIkYx
NCJfczsKICAgICAgICAgY2FzZSBWS19GMTU6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNSI7Cisg
ICAgICAgICAgICByZXR1cm4gIkYxNSJfczsKICAgICAgICAgY2FzZSBWS19GMTY6Ci0gICAgICAg
ICAgICByZXR1cm4gIkYxNiI7CisgICAgICAgICAgICByZXR1cm4gIkYxNiJfczsKICAgICAgICAg
Y2FzZSBWS19GMTc6Ci0gICAgICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgICAgICByZXR1
cm4gIkYxNyJfczsKICAgICAgICAgY2FzZSBWS19GMTg6Ci0gICAgICAgICAgICByZXR1cm4gIkYx
OCI7CisgICAgICAgICAgICByZXR1cm4gIkYxOCJfczsKICAgICAgICAgY2FzZSBWS19GMTk6Ci0g
ICAgICAgICAgICByZXR1cm4gIkYxOSI7CisgICAgICAgICAgICByZXR1cm4gIkYxOSJfczsKICAg
ICAgICAgY2FzZSBWS19GMjA6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgICAg
ICByZXR1cm4gIkYyMCJfczsKICAgICAgICAgY2FzZSBWS19GMjE6Ci0gICAgICAgICAgICByZXR1
cm4gIkYyMSI7CisgICAgICAgICAgICByZXR1cm4gIkYyMSJfczsKICAgICAgICAgY2FzZSBWS19G
MjI6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyMiJf
czsKICAgICAgICAgY2FzZSBWS19GMjM6Ci0gICAgICAgICAgICByZXR1cm4gIkYyMyI7CisgICAg
ICAgICAgICByZXR1cm4gIkYyMyJfczsKICAgICAgICAgY2FzZSBWS19GMjQ6Ci0gICAgICAgICAg
ICByZXR1cm4gIkYyNCI7CisgICAgICAgICAgICByZXR1cm4gIkYyNCJfczsKICAgICAgICAgY2Fz
ZSBWS19IRUxQOgotICAgICAgICAgICAgcmV0dXJuICJIZWxwIjsKKyAgICAgICAgICAgIHJldHVy
biAiSGVscCJfczsKICAgICAgICAgY2FzZSBWS19IT01FOgotICAgICAgICAgICAgcmV0dXJuICJI
b21lIjsKKyAgICAgICAgICAgIHJldHVybiAiSG9tZSJfczsKICAgICAgICAgY2FzZSBWS19JTlNF
UlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgICAgICAgICByZXR1cm4gIklu
c2VydCJfczsKICAgICAgICAgY2FzZSBWS19MRUZUOgotICAgICAgICAgICAgcmV0dXJuICJMZWZ0
IjsKKyAgICAgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICAgICAgY2FzZSBWS19ORVhUOgot
ICAgICAgICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VE
b3duIl9zOwogICAgICAgICBjYXNlIFZLX1BSSU9SOgotICAgICAgICAgICAgcmV0dXJuICJQYWdl
VXAiOworICAgICAgICAgICAgcmV0dXJuICJQYWdlVXAiX3M7CiAgICAgICAgIGNhc2UgVktfUEFV
U0U6Ci0gICAgICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICAgICAgICAgIHJldHVybiAiUGF1
c2UiX3M7CiAgICAgICAgIGNhc2UgVktfU05BUFNIT1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlBy
aW50U2NyZWVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAgICAgICAg
IGNhc2UgVktfUklHSFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgICAg
IHJldHVybiAiUmlnaHQiX3M7CiAgICAgICAgIGNhc2UgVktfU0NST0xMOgotICAgICAgICAgICAg
cmV0dXJuICJTY3JvbGwiOworICAgICAgICAgICAgcmV0dXJuICJTY3JvbGwiX3M7CiAgICAgICAg
IGNhc2UgVktfU0VMRUNUOgotICAgICAgICAgICAgcmV0dXJuICJTZWxlY3QiOworICAgICAgICAg
ICAgcmV0dXJuICJTZWxlY3QiX3M7CiAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlVwIjsKKyAgICAgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5k
YXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgICAgIGNhc2UgVktfREVMRVRF
OgotICAgICAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICAgICAgcmV0dXJuICJVKzAw
N0YiX3M7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygi
VSsiLCBoZXgodG9BU0NJSVVwcGVyKGtleUNvZGUpLCA0KSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCmluZGV4IGI5
Mzg3MTQ2NjUzYWFkM2Q5MmMwNmIwYjQ0M2U3YTRjOGJkMDA4ZWUuLjgwN2Q1NzIzNDMwYjFhYjg5
YjliYzliMjg1MGUyMTFmMjIwMmJlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBTdHJpbmcgdXBsb2FkRmlsZVRleHQoKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgcmV0dXJuICJ1cGxvYWQiOworICAgIHJldHVybiAidXBsb2FkIl9zOwog
fQogCiBTdHJpbmcgYWxsRmlsZXNUZXh0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiAiYWxsIGZpbGVzIjsKKyAgICByZXR1cm4gImFsbCBmaWxlcyJfczsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCmluZGV4IGI2YjA3NjM3Y2Q1NjY1NzBmYzIzOTc3ZDk0
NGJhYTdmM2Q0YTY2MmYuLjI4YjU0ZWY0N2ExYzNiNzllYjc1ZmY3NWI4YzYzYWJiMWU1NDkwYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3Ry
eVdpbi5jcHAKQEAgLTc0LDM0ICs3NCwzNCBAQCBTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6bWlt
ZVR5cGVGb3JFeHRlbnNpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgc3RhdGljIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IG1pbWV0eXBlTWFwOwogICAgIGlmIChtaW1ldHlwZU1hcC5pc0VtcHR5
KCkpIHsKICAgICAgICAgLy9maWxsIHdpdGggaW5pdGlhbCB2YWx1ZXMKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ0eHQiLCAidGV4dC9wbGFpbiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InBkZiIsICJhcHBsaWNhdGlvbi9wZGYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyIs
ICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3Nz
IiwgInRleHQvY3NzIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaHRtbCIsICJ0ZXh0L2h0
bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0iLCAidGV4dC9odG1sIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgieG1sIiwgInRleHQveG1sIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieHNsIiwgInRleHQveHNsIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMi
LCAiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0Iik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
eGh0IiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFk
ZCgid2ViYXJjaGl2ZSIsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJzdmciLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInN2Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
ImpwZyIsICJpbWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBlZyIsICJp
bWFnZS9qcGVnIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIiwgImltYWdlL3BuZyIp
OwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInRpZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgidGlmZiIsICJpbWFnZS90aWZmIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiaWNvIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImN1
ciIsICJpbWFnZS9pY28iKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiLCAiaW1hZ2Uv
Ym1wIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIiwgInRleHQvdm5kLndhcC53bWwi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWxjIiwgImFwcGxpY2F0aW9uL3ZuZC53YXAu
d21sYyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSIsICJhdWRpby94LW00YSIpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCJfcywgInRleHQvcGxhaW4iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoInBkZiJfcywgImFwcGxpY2F0aW9uL3BkZiJfcyk7CisgICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgicHMiX3MsICJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0Il9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiX3MsICJ0ZXh0L2NzcyJfcyk7CisgICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgiaHRtbCJfcywgInRleHQvaHRtbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiaHRtIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJ4bWwiX3MsICJ0ZXh0L3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieHNsIl9z
LCAidGV4dC94c2wiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImpzIl9zLCAiYXBwbGlj
YXRpb24veC1qYXZhc2NyaXB0Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiX3Ms
ICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInho
dG1sIl9zLCAiYXBwbGljYXRpb24veGh0bWwreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJyc3MiX3MsICJhcHBsaWNhdGlvbi9yc3MreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ3ZWJhcmNoaXZlIl9zLCAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJzdmciX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJzdmd6Il9zLCAiaW1hZ2Uvc3ZnK3htbCJfcyk7CisgICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgianBnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgianBlZyJfcywgImltYWdlL2pwZWciX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInBuZyJfcywgImltYWdlL3BuZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
dGlmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmZiJf
cywgImltYWdlL3RpZmYiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImljbyJfcywgImlt
YWdlL2ljbyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIl9zLCAiaW1hZ2UvaWNv
Il9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJibXAiX3MsICJpbWFnZS9ibXAiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbCJfcywgInRleHQvdm5kLndhcC53bWwiX3MpOwor
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMiX3MsICJhcHBsaWNhdGlvbi92bmQud2FwLndt
bGMiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIm00YSJfcywgImF1ZGlvL3gtbTRhIl9z
KTsKICNpZiBVU0UoSlBFR1hMKQotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCIsICJpbWFn
ZS9qeGwiKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqeGwiX3MsICJpbWFnZS9qeGwiX3Mp
OwogI2VuZGlmCiAgICAgfQogICAgIFN0cmluZyByZXN1bHQgPSBtaW1ldHlwZU1hcC5nZXQoZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRl
eCAwYjI1ZmY2YzM4Yzg2MzRmMzdlZWEyYWZkMDI0YThkNDJhNGY0MmM1Li42Njg1ZWQ5OTM2NDY5
ZmQwYTQzZmJlMjQxMmJiYzM4YmNmZjhkNTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0yNDAsOSArMjQwLDkgQEAgYm9vbCBQYXN0ZWJv
YXJkOjpoYXNEYXRhKCkKIHN0YXRpYyB2b2lkIGFkZE1pbWVUeXBlc0ZvckZvcm1hdChMaXN0SGFz
aFNldDxTdHJpbmc+JiByZXN1bHRzLCBjb25zdCBGT1JNQVRFVEMmIGZvcm1hdCkKIHsKICAgICBp
ZiAoZm9ybWF0LmNmRm9ybWF0ID09IHVybEZvcm1hdCgpLT5jZkZvcm1hdCB8fCBmb3JtYXQuY2ZG
b3JtYXQgPT0gdXJsV0Zvcm1hdCgpLT5jZkZvcm1hdCkKLSAgICAgICAgcmVzdWx0cy5hZGQoInRl
eHQvdXJpLWxpc3QiKTsKKyAgICAgICAgcmVzdWx0cy5hZGQoInRleHQvdXJpLWxpc3QiX3MpOwog
ICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gcGxhaW5UZXh0V0Zvcm1hdCgpLT5jZkZvcm1hdCB8
fCBmb3JtYXQuY2ZGb3JtYXQgPT0gcGxhaW5UZXh0Rm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAg
ICByZXN1bHRzLmFkZCgidGV4dC9wbGFpbiIpOworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC9w
bGFpbiJfcyk7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8UGFzdGVib2FyZEN1c3RvbURhdGE+IFBhc3Rl
Ym9hcmQ6OnJlYWRQYXN0ZWJvYXJkQ3VzdG9tRGF0YSgpCkBAIC0yNzUsOSArMjc1LDkgQEAgVmVj
dG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MoY29uc3QgU3RyaW5n
JiBvcmlnaW4pCiAgICAgICAgICAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKHR5cGUpOwogICAg
IH0KIAotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvcGxhaW4iKTsKLSAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7Ci0gICAgZG9tUGFzdGVib2FyZFR5
cGVzLmFkZCgidGV4dC9odG1sIik7CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9w
bGFpbiJfcyk7CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7
CisgICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9odG1sIl9zKTsKIAogICAgIHJldHVy
biBjb3B5VG9WZWN0b3IoZG9tUGFzdGVib2FyZFR5cGVzKTsKIH0KQEAgLTMyNyw3ICszMjcsNyBA
QCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZE9yaWdpbigpCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKCFtX2RhdGFPYmplY3QgJiYg
bV9kcmFnRGF0YU1hcC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiAKICAgICBDbGlwYm9hcmREYXRhVHlwZSBkYXRhVHlwZSA9IGNs
aXBib2FyZFR5cGVGcm9tTUlNRVR5cGUodHlwZSk7CiAgICAgaWYgKGRhdGFUeXBlID09IENsaXBi
b2FyZERhdGFUeXBlVGV4dCkKQEAgLTM0MSw3ICszNDEsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6
cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgICAgIHJldHVybiBtX2RhdGFPYmpl
Y3QgPyBnZXRDRkhUTUwobV9kYXRhT2JqZWN0LmdldCgpKSA6IGdldENGSFRNTCgmbV9kcmFnRGF0
YU1hcCk7CiAgICAgfQogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCiBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZ0luQ3VzdG9tRGF0YShjb25zdCBT
dHJpbmcmIHR5cGUpCkBAIC00MjUsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgd3JpdGVVUkwoV0NE
YXRhT2JqZWN0ICpkYXRhLCBjb25zdCBVUkwmIHVybCwgU3RyaW5nIHRpdGxlLCBib29sIHdpdGgK
IAogICAgIGlmICh3aXRoSFRNTCkgewogICAgICAgICBWZWN0b3I8Y2hhcj4gY2ZodG1sRGF0YTsK
LSAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSksICIiLCBjZmh0
bWxEYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAodXJsLCB0aXRsZSks
IGVtcHR5U3RyaW5nKCksIGNmaHRtbERhdGEpOwogICAgICAgICBtZWRpdW0uaEdsb2JhbCA9IGNy
ZWF0ZUdsb2JhbERhdGEoY2ZodG1sRGF0YSk7CiAgICAgICAgIGlmIChtZWRpdW0uaEdsb2JhbCAm
JiBGQUlMRUQoZGF0YS0+U2V0RGF0YShodG1sRm9ybWF0KCksICZtZWRpdW0sIFRSVUUpKSkKICAg
ICAgICAgICAgIDo6R2xvYmFsRnJlZShtZWRpdW0uaEdsb2JhbCk7CkBAIC02OTIsNyArNjkyLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgU3RyaW5nIHVybCA9IGt1cmwuc3RyaW5nKCk7
CiAgICAgQVNTRVJUKHVybC5pc0FsbEFTQ0lJKCkpOyAvLyBVUkw6OnN0cmluZygpIGlzIFVSTCBl
bmNvZGVkLgogCi0gICAgU3RyaW5nIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0
bGUodXJsLCB0aXRsZVN0ciwgIi5VUkwiLCB0cnVlKTsKKyAgICBTdHJpbmcgZnNQYXRoID0gZmls
ZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCJfcywgdHJ1ZSk7
CiAgICAgU3RyaW5nIGNvbnRlbnRTdHJpbmcoIltJbnRlcm5ldFNob3J0Y3V0XVxyXG5VUkw9IiAr
IHVybCArICJcclxuIik7CiAgICAgQ1N0cmluZyBjb250ZW50ID0gY29udGVudFN0cmluZy5sYXRp
bjEoKTsKIApAQCAtNzYwLDcgKzc2MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKICAgICAvLyB3cml0ZSB0byBjbGlwYm9hcmQg
aW4gZm9ybWF0IENGX0hUTUwgdG8gYmUgYWJsZSB0byBwYXN0ZSBpbnRvIGNvbnRlbnRlZGl0YWJs
ZSBhcmVhcyBhcyBhIGxpbmsKICAgICBpZiAoOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAg
ICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01h
cmt1cChwYXN0ZWJvYXJkVVJMLnVybCwgdGl0bGUpLCAiIiwgZGF0YSk7CisgICAgICAgIG1hcmt1
cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksIGVtcHR5U3Ry
aW5nKCksIGRhdGEpOwogICAgICAgICBIR0xPQkFMIGNiRGF0YSA9IGNyZWF0ZUdsb2JhbERhdGEo
ZGF0YSk7CiAgICAgICAgIGlmICghOjpTZXRDbGlwYm9hcmREYXRhKEhUTUxDbGlwYm9hcmRGb3Jt
YXQsIGNiRGF0YSkpCiAgICAgICAgICAgICA6Okdsb2JhbEZyZWUoY2JEYXRhKTsKQEAgLTg0MCw3
ICs4NDAsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4
dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgc3RkOgogICAgIGlmICg6OklzQ2xpcGJvYXJk
Rm9ybWF0QXZhaWxhYmxlKENGX1RFWFQpICYmIDo6T3BlbkNsaXBib2FyZChtX293bmVyKSkgewog
ICAgICAgICBpZiAoSEFORExFIGNiRGF0YSA9IDo6R2V0Q2xpcGJvYXJkRGF0YShDRl9URVhUKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgdHJlYXRzIHRoZSBjaGFyYWN0ZXJzIGFzIExh
dGluLTEsIG5vdCBVVEYtOCBvciBldmVuIFdpbmRvd3MgTGF0aW4tMS4gSXMgdGhhdCB0aGUgcmln
aHQgZW5jb2Rpbmc/Ci0gICAgICAgICAgICB0ZXh0LnRleHQgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
R2xvYmFsTG9jayhjYkRhdGEpKTsKKyAgICAgICAgICAgIHRleHQudGV4dCA9IFN0cmluZyB7IHN0
YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpIH07CiAgICAgICAgICAgICBHbG9i
YWxVbmxvY2soY2JEYXRhKTsKICAgICAgICAgICAgIDo6Q2xvc2VDbGlwYm9hcmQoKTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTk1MCw3ICs5NTAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVH
bG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
CiAgICAgICAgIEdsb2JhbEZyZWUobWVtT2JqKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQot
ICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iLCAwKTsKKyAgICBleHRlbnNpb24uaW5zZXJ0KCIuIl9z
LCAwKTsKICAgICBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgcHJl
ZmVycmVkVGl0bGUsIGV4dGVuc2lvbiwgZmFsc2UpOwogCiAgICAgaWYgKGZzUGF0aC5sZW5ndGgo
KSA8PSAwKSB7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJM
VG9Xcml0YWJsZURhdGFPYmplY3QoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bAog
dm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmIG1hcmt1cCkKIHsKICAg
ICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBtYXJrdXBUb0NGSFRNTChtYXJrdXAsICIiLCBkYXRh
KTsKKyAgICBtYXJrdXBUb0NGSFRNTChtYXJrdXAsIGVtcHR5U3RyaW5nKCksIGRhdGEpOwogCiAg
ICAgU1RHTUVESVVNIG1lZGl1bSB7IH07CiAgICAgbWVkaXVtLnR5bWVkID0gVFlNRURfSEdMT0JB
TDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAppbmRleCA3MGY2
YzFkY2RlYmQ2ZTRkYjgwNTJmMmE5MTFmNzA2MjFhYjI0N2Q0Li5lMTY1MzNiZTJkYjgyZDJlY2E2
YjNiYzhiZjdjMGE1MzgwYmI1NWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU3lzdGVtSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5
c3RlbUluZm8uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5mby5oIgog
CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVu
YXRlTnVtYmVycy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04NCwyNSArODUsMjUgQEAgc3RhdGljIFN0cmluZyBvc1ZlcnNpb25G
b3JVQVN0cmluZygpCiAgICAgY2FzZSBXaW5kb3dzQ0UxOgogICAgIGNhc2UgV2luZG93c0NFMjoK
ICAgICBjYXNlIFdpbmRvd3NDRTM6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyBDRSI7CisgICAg
ICAgIHJldHVybiAiV2luZG93cyBDRSJfczsKICAgICBjYXNlIFdpbmRvd3NDRTQ6Ci0gICAgICAg
IHJldHVybiAiV2luZG93cyBDRSAuTkVUIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5O
RVQiX3M7CiAgICAgY2FzZSBXaW5kb3dzM18xOgotICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4x
IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDMuMSJfczsKICAgICBjYXNlIFdpbmRvd3M5NToK
LSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1IjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk1
Il9zOwogICAgIGNhc2UgV2luZG93czk4OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiOwor
ICAgICAgICByZXR1cm4gIldpbmRvd3MgOTgiX3M7CiAgICAgY2FzZSBXaW5kb3dzTUU6Ci0gICAg
ICAgIHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgOTg7IFdpbiA5eCA0LjkwIl9zOwogICAgIGNhc2UgV2luZG93c05UNDoKLSAgICAgICAg
cmV0dXJuICJXaW5OVDQuMCI7CisgICAgICAgIHJldHVybiAiV2luTlQ0LjAiX3M7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgY29uc3QgY2hhciogZmFtaWx5TmFt
ZSA9ICh2ZXJzaW9uID49IFdpbmRvd3NOVDMpID8gIldpbmRvd3MgTlQgIiA6ICJXaW5kb3dzIENF
ICI7Ci0gICAgcmV0dXJuIGZhbWlseU5hbWUgKyBTdHJpbmc6Om51bWJlcihtYWpvcikgKyAnLicg
KyBTdHJpbmc6Om51bWJlcihtaW5vcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoZmFtaWx5TmFt
ZSwgbWFqb3IsICcuJywgbWlub3IpOwogfQogCiBzdGF0aWMgYm9vbCBpc1dPVzY0KCkKQEAgLTE1
MiwxMSArMTUzLDExIEBAIHN0YXRpYyBXT1JEIHByb2Nlc3NvckFyY2hpdGVjdHVyZSgpCiBzdGF0
aWMgU3RyaW5nIGFyY2hpdGVjdHVyZVRva2VuRm9yVUFTdHJpbmcoKQogewogICAgIGlmIChpc1dP
VzY0KCkpCi0gICAgICAgIHJldHVybiAiOyBXT1c2NCI7CisgICAgICAgIHJldHVybiAiOyBXT1c2
NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkgPT0gUFJPQ0VTU09SX0FSQ0hJ
VEVDVFVSRV9BTUQ2NCkKLSAgICAgICAgcmV0dXJuICI7IFdpbjY0OyB4NjQiOworICAgICAgICBy
ZXR1cm4gIjsgV2luNjQ7IHg2NCJfczsKICAgICBpZiAocHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkg
PT0gUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRV9JQTY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7
IElBNjQiOworICAgICAgICByZXR1cm4gIjsgV2luNjQ7IElBNjQiX3M7CiAgICAgcmV0dXJuIFN0
cmluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVu
eHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUklucHV0TWFwcGluZ3MuaAppbmRleCBjZmJmZDU0YjYyOWE0ZDYyYTJiMDI0Mjk5
MjQzOTIyMDc3ZDY5YzhkLi41ZDc1NDg5NzZjNDFlN2YwYTgwZGYxMjcwYzg0M2JjOGZjN2M0MDNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5w
dXRNYXBwaW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVu
WFJJbnB1dE1hcHBpbmdzLmgKQEAgLTQ3LDE3ICs0NywxNyBAQCBjb25zdGV4cHIgc3RkOjphcnJh
eTxPcGVuWFJCdXR0b25UeXBlLCA3PiBvcGVuWFJCdXR0b25UeXBlcyB7CiBpbmxpbmUgU3RyaW5n
IGJ1dHRvblR5cGVUb1N0cmluZyhPcGVuWFJCdXR0b25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUcmlnZ2VyOiByZXR1cm4gInRy
aWdnZXIiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6U3F1ZWV6ZTogcmV0dXJuICJzcXVl
ZXplIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNo
cGFkIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1
bWJzdGljayI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUaHVtYnJlc3Q6IHJldHVybiAi
dGh1bWJyZXN0IjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkE6IHJldHVybiAi
YnV0dG9uYSI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25COiByZXR1cm4gImJ1
dHRvbmIiOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VHJpZ2dlcjogcmV0dXJuICJ0cmln
Z2VyIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6U3F1ZWV6ZTogcmV0dXJuICJzcXVl
ZXplIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91
Y2hwYWQiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4g
InRodW1ic3RpY2siX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUaHVtYnJlc3Q6IHJl
dHVybiAidGh1bWJyZXN0Il9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQTog
cmV0dXJuICJidXR0b25hIl9zOworICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQjog
cmV0dXJuICJidXR0b25iIl9zOwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiAgICAgfQogfQogCkBAIC04MCwxMSArODAsMTEgQEAgY29uc3RleHByIHN0ZDo6YXJyYXk8
T3BlblhSQXhpc1R5cGUsIDI+IG9wZW5YUkF4aXNUeXBlcyB7CiBpbmxpbmUgU3RyaW5nIGF4aXNU
eXBldG9TdHJpbmcoT3BlblhSQXhpc1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsK
LSAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCI7Ci0g
ICAgY2FzZSBPcGVuWFJBeGlzVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIjsK
KyAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCJfczsK
KyAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2si
X3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSVXRpbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCmluZGV4
IDllY2M0OGE2YTZmMDE1ZWM3NWVhMTU4MWYzNjQ4YWEyMDM5ZjdhYjkuLjU2MzcyYmIzNTZlYzNl
YzMyZDFhMDFiM2MwZmQ4OTJkMjJjYWE5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oCkBAIC0xMjcsMTIgKzEyNywxMiBAQCBpbmxpbmUg
U3RyaW5nIGhhbmRlbmVzc1RvU3RyaW5nKFhSSGFuZGVkbmVzcyBoYW5kZW5lc3MpCiB7CiAgICAg
c3dpdGNoIChoYW5kZW5lc3MpIHsKICAgICBjYXNlIFhSSGFuZGVkbmVzczo6TGVmdDoKLSAgICAg
ICAgcmV0dXJuICJsZWZ0IjsKKyAgICAgICAgcmV0dXJuICJsZWZ0Il9zOwogICAgIGNhc2UgWFJI
YW5kZWRuZXNzOjpSaWdodDoKLSAgICAgICAgcmV0dXJuICJyaWdodCI7CisgICAgICAgIHJldHVy
biAicmlnaHQiX3M7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYTkwOTBmN2VhMWEz
NDlmNDhkNzNmM2MzNzY1NGVlM2Y2NGZlMzJiMy4uMGNmNDI0ODI5ZDg3NGU2ZGUxMDZiZGNmN2Y1
Njc0YmVkZjU0MDRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNTg2
LDcgKzU4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKFBhZ2Um
IHBhZ2UpCiAgICAgcGFnZS5zZXRPdXRzaWRlVmlld3BvcnRUaHJvdHRsaW5nRW5hYmxlZEZvclRl
c3RpbmcoZmFsc2UpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgTW9ja1ByZXZpZXdMb2Fk
ZXJDbGllbnQ6OnNpbmdsZXRvbigpLnNldFBhc3N3b3JkKCIiKTsKKyAgICBNb2NrUHJldmlld0xv
YWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoZW1wdHlTdHJpbmcoKSk7CiAgICAg
TGVnYWN5UHJldmlld0xvYWRlcjo6c2V0Q2xpZW50Rm9yVGVzdGluZyhudWxscHRyKTsKICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwIGIvU291
cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAppbmRleCA1MmUyNzY3NjNjYTMyYWEwNGU2
OTM3OWZmNTNlYjE0MTJjYjMyN2IxLi44MzU5NjliZmEzNmNlMTZmNjM1NmM2YmExN2NhOTJlYTFl
OThkZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKQEAgLTUzLDExICs1MywxMSBA
QCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1
bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAgIGlmICghZXJyb3JPYmplY3QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gZXJyb3IgPSBlcnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29k
ZSIpOworICAgIGF1dG8gZXJyb3IgPSBlcnJvck9iamVjdC0+Z2V0SW50ZWdlcigiY29kZSJfcyk7
CiAgICAgaWYgKCFlcnJvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvck1lc3Nh
Z2UgPSBlcnJvck9iamVjdC0+Z2V0U3RyaW5nKCJtZXNzYWdlIik7CisgICAgYXV0byBlcnJvck1l
c3NhZ2UgPSBlcnJvck9iamVjdC0+Z2V0U3RyaW5nKCJtZXNzYWdlIl9zKTsKICAgICBpZiAoIWVy
cm9yTWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJp
dmVyL1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcAppbmRleCAwNTI0
NmJhYTYzYzUwOTQxYmIyYThiYTQzMjliODA3MWI5N2U2OTlhLi5kNzFmNGQxMDU3ZWRiYjUzZWRh
ZTE2NWIyZmUyY2UwM2IxZjBlZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKQEAgLTIyOCw3ICsyMjgs
NyBAQCB2b2lkIFNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKEZ1bmN0aW9uPHZvaWQgKENvbW1h
bmRSZXN1bHQmJik+JiYgY29tcGxldGlvbkhhbgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgYXV0byBpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nID0gcmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QtPmdldEJvb2xlYW4oInJlc3VsdCIpOworICAgICAgICBhdXRvIGlzU2hv
d2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVh
bigicmVzdWx0Il9zKTsKICAgICAgICAgaWYgKCFpc1Nob3dpbmdKYXZhU2NyaXB0RGlhbG9nKSB7
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0OjpmYWlsKENvbW1h
bmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNTksMTMgKzM1OSwxMyBAQCB2b2lkIFNlc3Npb246OmdldEN1cnJlbnRVUkwoRnVuY3Rp
b248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcgogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byBicm93c2lu
Z0NvbnRleHQgPSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0T2JqZWN0KCJjb250ZXh0Iik7
CisgICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2Jq
ZWN0LT5nZXRPYmplY3QoImNvbnRleHQiX3MpOwogICAgICAgICAgICAgaWYgKCFicm93c2luZ0Nv
bnRleHQpIHsKICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihDb21tYW5kUmVzdWx0
OjpmYWlsKENvbW1hbmRSZXN1bHQ6OkVycm9yQ29kZTo6VW5rbm93bkVycm9yKSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIHVybCA9
IGJyb3dzaW5nQ29udGV4dC0+Z2V0U3RyaW5nKCJ1cmwiKTsKKyAgICAgICAgICAgIGF1dG8gdXJs
ID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCJfcyk7CiAgICAgICAgICAgICBpZiAo
IXVybCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC04NTUsMTQgKzg1NSwxNCBAQCB2b2lkIFNlc3Npb246OnNldFdp
bmRvd1JlY3Qoc3RkOjpvcHRpb25hbDxkb3VibGU+IHgsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiB5
LCBzdAogICAgICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImhhbmRsZSJfcywgbV90b3BsZXZl
bEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKICAgICAgICAgaWYgKHggJiYgeSkgewogICAgICAg
ICAgICAgYXV0byB3aW5kb3dPcmlnaW4gPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAg
ICAgICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiLCB4LnZhbHVlKCkpOwotICAgICAgICAg
ICAgd2luZG93T3JpZ2luLT5zZXREb3VibGUoInkiLCB5LnZhbHVlKCkpOworICAgICAgICAgICAg
d2luZG93T3JpZ2luLT5zZXREb3VibGUoIngiX3MsIHgudmFsdWUoKSk7CisgICAgICAgICAgICB3
aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSJfcywgeS52YWx1ZSgpKTsKICAgICAgICAgICAgIHBh
cmFtZXRlcnMtPnNldE9iamVjdCgib3JpZ2luIl9zLCBXVEZNb3ZlKHdpbmRvd09yaWdpbikpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICh3aWR0aCAmJiBoZWlnaHQpIHsKICAgICAgICAgICAgIGF1
dG8gd2luZG93U2l6ZSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoIndpZHRoIiwgd2lkdGgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3
aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCIsIGhlaWdodC52YWx1ZSgpKTsKKyAgICAgICAg
ICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiX3MsIHdpZHRoLnZhbHVlKCkpOworICAg
ICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJoZWlnaHQiX3MsIGhlaWdodC52YWx1ZSgp
KTsKICAgICAgICAgICAgIHBhcmFtZXRlcnMtPnNldE9iamVjdCgic2l6ZSJfcywgV1RGTW92ZSh3
aW5kb3dTaXplKSk7CiAgICAgICAgIH0KICAgICAgICAgbV9ob3N0LT5zZW5kQ29tbWFuZFRvQmFj
a2VuZCgic2V0V2luZG93RnJhbWVPZkJyb3dzaW5nQ29udGV4dCJfcywgV1RGTW92ZShwYXJhbWV0
ZXJzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChTZXNzaW9uSG9zdDo6Q29tbWFuZFJlc3BvbnNlJiYgcmVzcG9u
c2UpIG11dGFibGUgewpAQCAtMTcxNywxMiArMTcxNywxMiBAQCB2b2lkIFNlc3Npb246OmVsZW1l
bnRJc0ZpbGVVcGxvYWQoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQgKENv
bW1hbgogICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgIGFy
Z3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmlu
ZygpKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIGlzRmlsZVVwbG9hZFNjcmlwdFtdID0KKyAg
ICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNGaWxlVXBsb2FkU2NyaXB0ID0KICAgICAgICAgImZ1
bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQudGFnTmFtZS50b0xv
d2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIGVsZW1lbnQudHlwZSA9PT0gJ2ZpbGUnKSIKICAgICAg
ICAgIiAgICAgICAgcmV0dXJuIHsgJ2ZpbGVVcGxvYWQnOiB0cnVlLCAnbXVsdGlwbGUnOiBlbGVt
ZW50Lmhhc0F0dHJpYnV0ZSgnbXVsdGlwbGUnKSB9OyIKICAgICAgICAgIiAgICByZXR1cm4geyAn
ZmlsZVVwbG9hZCc6IGZhbHNlIH07IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAg
ICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0
ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dz
aW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTE4NTUsNyArMTg1NSw3IEBAIHZvaWQgU2Vzc2lvbjo6
ZWxlbWVudElzRWRpdGFibGUoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIEZ1bmN0aW9uPHZvaWQg
KENvbW1hbmRSCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAg
ICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09O
U3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNFZGl0YWJsZVNjcmlwdFtdID0K
KyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gaXNFZGl0YWJsZVNjcmlwdCA9CiAgICAgICAgICJm
dW5jdGlvbihlbGVtZW50KSB7IgogICAgICAgICAiICAgIGlmIChlbGVtZW50LmRpc2FibGVkIHx8
IGVsZW1lbnQucmVhZE9ubHkpIgogICAgICAgICAiICAgICAgICByZXR1cm4gZmFsc2U7IgpAQCAt
MTg3MCw3ICsxODcwLDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBT
dHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICAgICAgIiAgICAg
ICAgcmV0dXJuIHRydWU7IgogICAgICAgICAiICAgIH0iCiAgICAgICAgICIgICAgcmV0dXJuIGZh
bHNlOyIKLSAgICAgICAgIn0iOworICAgICAgICAifSJfczsKIAogICAgIGF1dG8gcGFyYW1ldGVy
cyA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgcGFyYW1ldGVycy0+c2V0U3RyaW5nKCJi
cm93c2luZ0NvbnRleHRIYW5kbGUiX3MsIG1fdG9wbGV2ZWxCcm93c2luZ0NvbnRleHQudmFsdWUo
KSk7CkBAIC0yMTcwLDcgKzIxNzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRTZW5kS2V5cyhj
b25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBGdW5jdAogICAgICAg
ICAgICAgYXV0byBmaWxlVXBsb2FkVHlwZSA9IHBhcnNlRWxlbWVudElzRmlsZVVwbG9hZFJlc3Vs
dChyZXN1bHQucmVzdWx0KCkpOwogICAgICAgICAgICAgaWYgKCFmaWxlVXBsb2FkVHlwZSB8fCBj
YXBhYmlsaXRpZXMoKS5zdHJpY3RGaWxlSW50ZXJhY3RhYmlsaXR5LnZhbHVlX29yKGZhbHNlKSkg
ewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYW4gYXRvbS4KLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBmb2N1c1NjcmlwdFtdID0KKyAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZm9jdXNTY3JpcHQgPQogICAgICAgICAgICAgICAg
ICAgICAiZnVuY3Rpb24gZm9jdXMoZWxlbWVudCkgeyIKICAgICAgICAgICAgICAgICAgICAgIiAg
ICBsZXQgZG9jID0gZWxlbWVudC5vd25lckRvY3VtZW50IHx8IGVsZW1lbnQ7IgogICAgICAgICAg
ICAgICAgICAgICAiICAgIGxldCBwcmV2QWN0aXZlRWxlbWVudCA9IGRvYy5hY3RpdmVFbGVtZW50
OyIKQEAgLTIxODYsNyArMjE4Niw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNv
bnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAg
ICAgICAgICAgICAgICIgICAgICAgIGVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UoZWxlbWVudC52
YWx1ZS5sZW5ndGgsIGVsZW1lbnQudmFsdWUubGVuZ3RoKTsiCiAgICAgICAgICAgICAgICAgICAg
ICIgICAgaWYgKGVsZW1lbnRSb290Tm9kZS5hY3RpdmVFbGVtZW50ICE9PSBlbGVtZW50KSIKICAg
ICAgICAgICAgICAgICAgICAgIiAgICAgICAgdGhyb3cge25hbWU6ICdFbGVtZW50Tm90SW50ZXJh
Y3RhYmxlJywgbWVzc2FnZTogJ0VsZW1lbnQgaXMgbm90IGZvY3VzYWJsZS4nfTsiCi0gICAgICAg
ICAgICAgICAgICAgICJ9IjsKKyAgICAgICAgICAgICAgICAgICAgIn0iX3M7CiAKICAgICAgICAg
ICAgICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICAgICAg
ICAgICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50
b0pTT05TdHJpbmcoKSk7CkBAIC0yNTA2LDEzICsyNTA2LDEzIEBAIHN0YXRpYyBSZWY8SlNPTjo6
T2JqZWN0PiBidWlsdEF1dG9tYXRpb25Db29raWUoY29uc3QgU2Vzc2lvbjo6Q29va2llJiBjb29r
aWUpCiAgICAgYXV0byBjb29raWVPYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAg
IGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJuYW1lIl9zLCBjb29raWUubmFtZSk7CiAgICAgY29v
a2llT2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCBjb29raWUudmFsdWUpOwotICAgIGNvb2tp
ZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyIpKTsK
KyAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygicGF0aCJfcywgY29va2llLnBhdGgudmFsdWVf
b3IoIi8iX3MpKTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygiZG9tYWluIl9zLCBjb29r
aWUuZG9tYWluLnZhbHVlX29yKGVtcHR5U3RyaW5nKCkpKTsKICAgICBjb29raWVPYmplY3QtPnNl
dEJvb2xlYW4oInNlY3VyZSJfcywgY29va2llLnNlY3VyZS52YWx1ZV9vcihmYWxzZSkpOwogICAg
IGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigiaHR0cE9ubHkiX3MsIGNvb2tpZS5odHRwT25seS52
YWx1ZV9vcihmYWxzZSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vzc2lvbiJf
cywgIWNvb2tpZS5leHBpcnkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0RG91YmxlKCJleHBpcmVz
Il9zLCBjb29raWUuZXhwaXJ5LnZhbHVlX29yKDApKTsKLSAgICBjb29raWVPYmplY3QtPnNldFN0
cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52YWx1ZV9vcigiTm9uZSIpKTsKKyAg
ICBjb29raWVPYmplY3QtPnNldFN0cmluZygic2FtZVNpdGUiX3MsIGNvb2tpZS5zYW1lU2l0ZS52
YWx1ZV9vcigiTm9uZSJfcykpOwogICAgIHJldHVybiBjb29raWVPYmplY3Q7CiB9CiAKQEAgLTI2
OTEsMzggKzI2OTEsMzggQEAgU2Vzc2lvbjo6SW5wdXRTb3VyY2VTdGF0ZSYgU2Vzc2lvbjo6aW5w
dXRTb3VyY2VTdGF0ZShjb25zdCBTdHJpbmcmIGlkKQogICAgIHJldHVybiBtX2lucHV0U3RhdGVU
YWJsZS5lbnN1cmUoaWQsIFtdIHsgcmV0dXJuIElucHV0U291cmNlU3RhdGUoKTsgfSkuaXRlcmF0
b3ItPnZhbHVlOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvblNvdXJjZVR5cGUo
Y29uc3QgSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRv
bWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiB7CiAgICAg
c3dpdGNoIChpbnB1dFNvdXJjZS50eXBlKSB7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6
Tm9uZToKLSAgICAgICAgcmV0dXJuICJOdWxsIjsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zOwog
ICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OlBvaW50ZXI6CiAgICAgICAgIHN3aXRjaCAoaW5w
dXRTb3VyY2UucG9pbnRlclR5cGUudmFsdWVfb3IoUG9pbnRlclR5cGU6Ok1vdXNlKSkgewogICAg
ICAgICBjYXNlIFBvaW50ZXJUeXBlOjpNb3VzZToKLSAgICAgICAgICAgIHJldHVybiAiTW91c2Ui
OworICAgICAgICAgICAgcmV0dXJuICJNb3VzZSJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlw
ZTo6VG91Y2g6Ci0gICAgICAgICAgICByZXR1cm4gIlRvdWNoIjsKKyAgICAgICAgICAgIHJldHVy
biAiVG91Y2giX3M7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6OlBlbjoKLSAgICAgICAgICAg
IHJldHVybiAiUGVuIjsKKyAgICAgICAgICAgIHJldHVybiAiUGVuIl9zOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW5wdXRTb3VyY2U6OlR5cGU6OktleToKLSAgICAgICAg
cmV0dXJuICJLZXlib2FyZCI7CisgICAgICAgIHJldHVybiAiS2V5Ym9hcmQiX3M7CiAgICAgY2Fz
ZSBJbnB1dFNvdXJjZTo6VHlwZTo6V2hlZWw6Ci0gICAgICAgIHJldHVybiAiV2hlZWwiOworICAg
ICAgICByZXR1cm4gIldoZWVsIl9zOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogYXV0b21hdGlvbk9yaWdpblR5cGUoUG9p
bnRlck9yaWdpbjo6VHlwZSB0eXBlKQorc3RhdGljIEFTQ0lJTGl0ZXJhbCBhdXRvbWF0aW9uT3Jp
Z2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7
CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpWaWV3cG9ydDoKLSAgICAgICAgcmV0dXJu
ICJWaWV3cG9ydCI7CisgICAgICAgIHJldHVybiAiVmlld3BvcnQiX3M7CiAgICAgY2FzZSBQb2lu
dGVyT3JpZ2luOjpUeXBlOjpQb2ludGVyOgotICAgICAgICByZXR1cm4gIlBvaW50ZXIiOworICAg
ICAgICByZXR1cm4gIlBvaW50ZXIiX3M7CiAgICAgY2FzZSBQb2ludGVyT3JpZ2luOjpUeXBlOjpF
bGVtZW50OgotICAgICAgICByZXR1cm4gIkVsZW1lbnQiOworICAgICAgICByZXR1cm4gIkVsZW1l
bnQiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwIGIvU291cmNlL1dl
YkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcAppbmRleCA1ZTQ0MDY3ZWYwYTI4YjFiODBhZWJm
ZjNjYWFiM2M4NGNkNWE4ZGJmLi41OTE4NDcwYjg1Y2FjODdmZGI5YzdhMzU5N2MyODFkMTBhNTli
ZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAjaWYg
VVNFKElOU1BFQ1RPUl9TT0NLRVRfU0VSVkVSKQogICAgIFN0cmluZyB0YXJnZXRTdHJpbmc7CiAg
ICAgaWYgKGNvbnN0IGNoYXIqIHRhcmdldEVudlZhciA9IGdldGVudigiV0VCRFJJVkVSX1RBUkdF
VF9BRERSIikpCi0gICAgICAgIHRhcmdldFN0cmluZyA9IHRhcmdldEVudlZhcjsKKyAgICAgICAg
dGFyZ2V0U3RyaW5nID0gU3RyaW5nIHsgdGFyZ2V0RW52VmFyIH07CiAjZW5kaWYKICAgICBmb3Ig
KGludCBpID0gMSA7IGkgPCBhcmdjOyArK2kpIHsKICAgICAgICAgY29uc3QgY2hhciogYXJnID0g
YXJndltpXTsKQEAgLTc1LDcgKzc1LDcgQEAgaW50IFdlYkRyaXZlclNlcnZpY2U6OnJ1bihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgICAgICAgICAgcHJpbnRVc2FnZVN0YXRlbWVudChh
cmd2WzBdKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcG9ydFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICBwb3J0
U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIApAQCAtOTcsNyArOTcsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBh
cmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFy
Z3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBhcmd2W2ldOworICAgICAgICAgICAgdGFy
Z2V0U3RyaW5nID0gU3RyaW5nIHsgYXJndltpXSB9OwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KIApAQCAtNDQxLDcgKzQ0MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFByb3h5
PiBkZXNlcmlhbGl6ZVByb3h5KEpTT046Ok9iamVjdCYgcHJveHlPYmplY3QpCiAgICAgICAgICAg
ICBpZiAoIXByb3h5Lmh0dHBzVVJMLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5
T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5IikpIHsKKyAgICAgICAgaWYgKGF1dG8gdmFsdWUg
PSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NQcm94eSJfcykpIHsKICAgICAgICAgICAgIGF1
dG8gc29ja3NQcm94eSA9IHZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICAgICAgaWYgKCFzb2Nr
c1Byb3h5KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC00NTAsNyAr
NDUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNP
Tjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHkuc29ja3NVUkwt
PmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
ICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNv
Y2tzVmVyc2lvbiIpOworICAgICAgICAgICAgYXV0byBzb2Nrc1ZlcnNpb25WYWx1ZSA9IHByb3h5
T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1ZlcnNpb24iX3MpOwogICAgICAgICAgICAgaWYgKCFzb2Nr
c1ZlcnNpb25WYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCkBA
IC04NzIsMzAgKzg3MiwzMCBAQCB2b2lkIFdlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24o
VmVjdG9yPENhcGFiaWxpdGllcz4mJiBjYXBhYmlsaXRpZXNMaXN0LCBzdAogICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRCb29sZWFuKCJzZXRXaW5kb3dSZWN0Il9zLCBjYXBhYmls
aXRpZXMuc2V0V2luZG93UmVjdC52YWx1ZV9vcih0cnVlKSk7CiAgICAgICAgICAgICBzd2l0Y2gg
KGNhcGFiaWxpdGllcy51bmhhbmRsZWRQcm9tcHRCZWhhdmlvci52YWx1ZV9vcihVbmhhbmRsZWRQ
cm9tcHRCZWhhdmlvcjo6RGlzbWlzc0FuZE5vdGlmeSkpIHsKICAgICAgICAgICAgIGNhc2UgVW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3M6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlz
cyIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhh
bmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MiX3MpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6QWNjZXB0Ogot
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQ
cm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGll
c09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5OgotICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21p
c3MgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0
U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImRpc21pc3MgYW5kIG5vdGlmeSJf
cyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFBy
b21wdEJlaGF2aW9yOjpBY2NlcHRBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0
IGFuZCBub3RpZnkiKTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0
cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSJfcyk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21w
dEJlaGF2aW9yOjpJZ25vcmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiaWdub3JlIik7CisgICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJl
aGF2aW9yIl9zLCAiaWdub3JlIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnBhZ2VMb2FkU3RyYXRlZ3ku
dmFsdWVfb3IoUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsKSkgewogICAgICAgICAgICAgY2FzZSBQ
YWdlTG9hZFN0cmF0ZWd5OjpOb25lOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVj
dC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9uZSIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9uZSJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBhZ2VM
b2FkU3RyYXRlZ3k6Ok5vcm1hbDoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3Qt
PnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgIm5vcm1hbCIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
bm9ybWFsIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFn
ZUxvYWRTdHJhdGVneTo6RWFnZXI6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0
LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciIpOworICAgICAgICAgICAg
ICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAi
ZWFnZXIiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCFjYXBhYmlsaXRpZXMucHJveHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJp
dmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwIGIvU291cmNlL1dlYkRyaXZlci9zb2Nr
ZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcAppbmRleCAwZjZjODc4MjAwOTVhMjcxMGM3OTg1ZjIw
ZDRkODdhMWE5MDdhYmZhLi4yYjY3MTM0OWQzNWIxZGNkYzlhZWE4NWYyOTA2ZjQyZDliMDgwNzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAK
QEAgLTMyLDEyICszMiwxMiBAQCB2b2lkIENhcGFiaWxpdGllc1NvY2tldDo6cGFyc2VDYXBhYmls
aXRpZXMoY29uc3QgSlNPTjo6T2JqZWN0JiBtYXRjaGVkQ2FwYWJpbGl0aQogewogICAgIFJlZlB0
cjxKU09OOjpWYWx1ZT4gdGFyZ2V0QWRkclZhbHVlOwogICAgIFN0cmluZyB0YXJnZXRBZGRyOwot
ICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciIs
IHRhcmdldEFkZHJWYWx1ZSkgJiYgdGFyZ2V0QWRkclZhbHVlLT5hc1N0cmluZyh0YXJnZXRBZGRy
KSkKKyAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldEFk
ZHIiX3MsIHRhcmdldEFkZHJWYWx1ZSkgJiYgdGFyZ2V0QWRkclZhbHVlLT5hc1N0cmluZyh0YXJn
ZXRBZGRyKSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldEFkZHIgPSB0YXJnZXRBZGRyOwog
CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRQb3J0VmFsdWU7CiAgICAgaW50IHRhcmdl
dFBvcnQ7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJn
ZXRQb3J0IiwgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0
YXJnZXRQb3J0KSkKKyAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0
OnRhcmdldFBvcnQiX3MsIHRhcmdldFBvcnRWYWx1ZSkgJiYgdGFyZ2V0UG9ydFZhbHVlLT5hc0lu
dGVnZXIodGFyZ2V0UG9ydCkpCiAgICAgICAgIGNhcGFiaWxpdGllcy50YXJnZXRQb3J0ID0gdGFy
Z2V0UG9ydDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvSFRUUFNl
cnZlclNvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0
LmNwcAppbmRleCA3OWI3Y2E0YjJkMTMzMjJiMGRlODgzMmEyMzgyMTgwZTMyYTA0MmYwLi43MGFh
NDRmMGJlODQzOGY4MWE0MTAyMGVjMjA5NjI3MDU1ODQwYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEhU
VFBSZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2ZShSZW1vdGVJbnNwZWN0b3JTb2NrZXRFbmRwb2lu
dCYsIENvbm5lY3Rpb25JRAogICAgICAgICBIVFRQUmVxdWVzdEhhbmRsZXI6OlJlc3BvbnNlIHJl
c3BvbnNlIHsKICAgICAgICAgICAgIDQwMCwKICAgICAgICAgICAgICJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiLAotICAgICAgICAgICAgIjxoMT5CYWQgY2xpZW50PC9oMT4gSW52YWxpZCBIVE1M
IGZvcm1hdCIsCisgICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwg
Zm9ybWF0Il9zLAogICAgICAgICB9OwogICAgICAgICBzZW5kUmVzcG9uc2UoV1RGTW92ZShyZXNw
b25zZSkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9Db21tYW5kRW5jb2Rlci5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tCmluZGV4IDNiNmZmOGFmMjA2YTQyYzlhMzRjYTkyMGZiMjI3M2Q4NjE3NjFlN2YuLjU3ZGJh
MDNlMWUzZGRlNTJiN2Y5OGI1NDAwZjg5OTdkMjdhNjlkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rl
cjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2Us
IGNvbnMKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5z
YXRpc2ZpZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb1RleHR1cmUoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00NTMsNyArNDUzLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29w
eVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24K
ICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2Zp
ZWQiCiAgICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9CdWZmZXIoc291cmNlLCBkZXN0aW5h
dGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJy
b3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9y
KCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxp
ZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1
cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdW5zYXRpc2ZpZWQiCiAg
ICAgaWYgKCF2YWxpZGF0ZUNvcHlUZXh0dXJlVG9UZXh0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24s
IGNvcHlTaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yIGFu
ZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFs
aWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGRmNTIzOGEzNWRhYjUwODA0OGE0MDYyNWYzMTliMmIz
NzdmZDU5MzEuLjAwMTE4NThmZjhlYTRmODJjNTc1OTVjYmRmZGY4MDNlNDFjYWEwMTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KQEAgLTI1MCw5ICsyNTAsOSBAQCBzdGF0aWMgU3RyaW5nIHN0cmluZ0Zv
clNTTFByb3RvY29sKFNTTFByb3RvY29sIHByb3RvY29sKQogICAgIGNhc2Uga1RMU1Byb3RvY29s
MTM6CiAgICAgICAgIHJldHVybiAiVExTIDEuMyJfczsKICAgICBjYXNlIGtTU0xQcm90b2NvbEFs
bDoKLSAgICAgICAgcmV0dXJuICJBbGwiOworICAgICAgICByZXR1cm4gIkFsbCJfczsKICAgICBj
YXNlIGtTU0xQcm90b2NvbFVua25vd246Ci0gICAgICAgIHJldHVybiAiVW5rbm93biI7CisgICAg
ICAgIHJldHVybiAiVW5rbm93biJfczsKICAgICBjYXNlIGtUTFNQcm90b2NvbE1heFN1cHBvcnRl
ZDoKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcAppbmRleCAwNmNjZWM2MjFhMDVhN2MzMDliODllMjEwNDI0ZGU3ZGFmMzA3MTM2Li4w
OWRiZTk5NjYxNDQ4NDFlMmZmYjNhOGFjOTE1ZGRmMWE3MWMxNTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
Y3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBy
ZXF1ZXN0IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3Vz
IHJlZGlyZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAg
aWYgKCFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCBzaG91bGRSZWRp
cmVjdEFzR0VUKHJlcXVlc3QsIGlzQ3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXF1ZXN0
LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJHRVQiX3MpOwogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAg
ICAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFz
a1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCmluZGV4IDY2ZTQ4OTU1NDlhM2FlYzhkMWRmOTk0ZDI1ZmRjZGE0ZWQyZDdl
NjYuLmU2N2Y3ZWQyOWJjNTJlYWM5MjZmZWE3NTZlN2E1OGFmNWNjNjFhNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNr
U291cC5jcHAKQEAgLTkyOSw5ICs5MjksOSBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNv
bnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4UmVk
aXJlY3RzID0gMjA7CiAgICAgaWYgKG1fY3VycmVudFJlcXVlc3QucmVkaXJlY3RDb3VudCgpID4g
bWF4UmVkaXJlY3RzKSB7CiAjaWYgVVNFKFNPVVAyKQotICAgICAgICBkaWRGYWlsKFJlc291cmNl
RXJyb3I6OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVT
X1RPT19NQU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyIpKTsKKyAgICAgICAgZGlk
RmFpbChSZXNvdXJjZUVycm9yOjp0cmFuc3BvcnRFcnJvcihtX2N1cnJlbnRSZXF1ZXN0LnVybCgp
LCBTT1VQX1NUQVRVU19UT09fTUFOWV9SRURJUkVDVFMsICJUb28gbWFueSByZWRpcmVjdHMiX3Mp
KTsKICNlbHNlCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX1NFU1NJT05fRVJST1IpLCBTT1VQX1NFU1NJT05fRVJST1JfVE9PX01BTllfUkVESVJF
Q1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KCJUb28gbWFueSBy
ZWRpcmVjdHMiKSkpOworICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19x
dWFya190b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBTT1VQX1NFU1NJT05fRVJST1Jf
VE9PX01BTllfUkVESVJFQ1RTLCBtX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21V
VEY4KCJUb28gbWFueSByZWRpcmVjdHMiKSkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC05NTksNyArOTU5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51
ZUhUVFBSZWRpcmVjdGlvbigpCiAgICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgImdldCIpKSB7CiAgICAgICAgIC8vIENoYW5nZSBuZXdS
ZXF1ZXN0IG1ldGhvZCB0byBHRVQgaWYgY2hhbmdlIHdhcyBtYWRlIGR1cmluZyBhIHByZXZpb3Vz
IHJlZGlyZWN0aW9uIG9yIGlmIGN1cnJlbnQgcmVkaXJlY3Rpb24gc2F5cyBzby4KICAgICAgICAg
aWYgKHNvdXBfbWVzc2FnZV9nZXRfbWV0aG9kKG1fc291cE1lc3NhZ2UuZ2V0KCkpID09IFNPVVBf
TUVUSE9EX0dFVCB8fCAhcmVxdWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwg
c2hvdWxkUmVkaXJlY3RBc0dFVChtX3NvdXBNZXNzYWdlLmdldCgpLCBpc0Nyb3NzT3JpZ2luKSkg
ewotICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgICAg
IHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgICAgIHJlcXVlc3Quc2V0
SFRUUEJvZHkobnVsbHB0cik7CiAgICAgICAgICAgICByZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRU
eXBlKCk7CiAgICAgICAgIH0KQEAgLTEwMzcsNyArMTAzNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6cmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luY1Jl
c3VsdCoKICAgICAgICAgaWYgKHRhc2stPm1fc291cE1lc3NhZ2UpCiAgICAgICAgICAgICB0YXNr
LT5kaWRGYWlsKFJlc291cmNlRXJyb3I6OmdlbmVyaWNHRXJyb3IodGFzay0+bV9jdXJyZW50UmVx
dWVzdC51cmwoKSwgZXJyb3IuZ2V0KCkpKTsKICAgICAgICAgZWxzZSBpZiAodGFzay0+bV9maWxl
KQotICAgICAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3Ry
aW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJs
KCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICB0YXNr
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3It
PmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0gZWxzZSBpZiAoYnl0ZXNSZWFk
ID4gMCkKQEAgLTExMjcsNyArMTEyNyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
UmVxdWVzdE5leHRQYXJ0KEdSZWZQdHI8R0lucHV0U3RyZWFtPiYmIGlucHV0U3RyZWFtCiAgICAg
QVNTRVJUKCFtX2lucHV0U3RyZWFtKTsKICAgICBtX2lucHV0U3RyZWFtID0gV1RGTW92ZShpbnB1
dFN0cmVhbSk7CiAgICAgYXV0byogaGVhZGVycyA9IHNvdXBfbXVsdGlwYXJ0X2lucHV0X3N0cmVh
bV9nZXRfaGVhZGVycyhtX211bHRpcGFydElucHV0U3RyZWFtLmdldCgpKTsKLSAgICBTdHJpbmcg
Y29udGVudFR5cGUgPSBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfb25lKGhlYWRlcnMsICJDb250
ZW50LVR5cGUiKTsKKyAgICBTdHJpbmcgY29udGVudFR5cGUgeyBzb3VwX21lc3NhZ2VfaGVhZGVy
c19nZXRfb25lKGhlYWRlcnMsICJDb250ZW50LVR5cGUiKSB9OwogICAgIG1fcmVzcG9uc2UgPSBS
ZXNvdXJjZVJlc3BvbnNlKG1fZmlyc3RSZXF1ZXN0LnVybCgpLCBleHRyYWN0TUlNRVR5cGVGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0
X2NvbnRlbnRfbGVuZ3RoKGhlYWRlcnMpLCBleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29u
dGVudFR5cGUpKTsKICAgICBtX3Jlc3BvbnNlLnVwZGF0ZUZyb21Tb3VwTWVzc2FnZUhlYWRlcnMo
aGVhZGVycyk7CkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRvd25sb2FkKCkKICAgICBlbHNlCiAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihn
X2ZpbGVfY3JlYXRlKG1fZG93bmxvYWREZXN0aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DUkVB
VEVfTk9ORSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7CiAgICAgaWYgKCFvdXRwdXRTdHJl
YW0pIHsKLSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvciht
X3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93
bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzODQsNyArMTM4NCw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIG1fZG93bmxvYWRJ
bnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3BhdGgoaW50ZXJtZWRp
YXRlUGF0aC5nZXQoKSkpOwogICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVfcmVw
bGFjZShtX2Rvd25sb2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgVFJVRSwgR19G
SUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91
dHB1dFN0cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlv
bkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3du
bG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRG
OChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX2Rvd25s
b2FkT3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfT1VUUFVUX1NUUkVBTShvdXRwdXRTdHJlYW0u
bGVha1JlZigpKSk7CkBAIC0xNDEyLDcgKzE0MTIsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OndyaXRlRG93bmxvYWRDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBvdXRwdXRTdHJlYW0sIEdB
cwogICAgIGdzaXplIGJ5dGVzV3JpdHRlbjsKICAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYWxs
X2ZpbmlzaChvdXRwdXRTdHJlYW0sIHJlc3VsdCwgJmJ5dGVzV3JpdHRlbiwgJmVycm9yLm91dFB0
cigpKTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWxEb3dubG9hZChkb3du
bG9hZERlc3RpbmF0aW9uRXJyb3IodGFzay0+bV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsK
KyAgICAgICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0
YXNrLT5tX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAg
IGVsc2UKICAgICAgICAgdGFzay0+ZGlkV3JpdGVEb3dubG9hZChieXRlc1dyaXR0ZW4pOwogfQpA
QCAtMTQ0NCw3ICsxNDQ0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRGaW5pc2hE
b3dubG9hZCgpCiAgICAgQVNTRVJUKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlKTsKICAgICBH
VW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgaWYgKCFnX2ZpbGVfbW92ZShtX2Rvd25s
b2FkSW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQo
KSwgR19GSUxFX0NPUFlfT1ZFUldSSVRFLCBtX2NhbmNlbGxhYmxlLmdldCgpLCBudWxscHRyLCBu
dWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3du
bG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAg
ICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBT
dHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xNjg4LDEwICsxNjg4LDEwIEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZGlk
R2V0RmlsZUluZm8oR0ZpbGVJbmZvKiBpbmZvKQogewogICAgIG1fcmVzcG9uc2Uuc2V0VVJMKG1f
Zmlyc3RSZXF1ZXN0LnVybCgpKTsKICAgICBpZiAoZ19maWxlX2luZm9fZ2V0X2ZpbGVfdHlwZShp
bmZvKSA9PSBHX0ZJTEVfVFlQRV9ESVJFQ1RPUlkpIHsKLSAgICAgICAgbV9yZXNwb25zZS5zZXRN
aW1lVHlwZSgidGV4dC9odG1sIik7CisgICAgICAgIG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoInRl
eHQvaHRtbCJfcyk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KC0xKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBnY2hhciogY29udGVudFR5cGUgPSBn
X2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pOworICAgICAgICBTdHJpbmcgY29udGVu
dFR5cGUgeyBnX2ZpbGVfaW5mb19nZXRfY29udGVudF90eXBlKGluZm8pIH07CiAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50
VHlwZSkpOwogICAgICAgICBtX3Jlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENo
YXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIGlmIChtX3Jlc3BvbnNl
Lm1pbWVUeXBlKCkuaXNFbXB0eSgpKQpAQCAtMTcxOSw3ICsxNzE5LDcgQEAgdm9pZCBOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bHQq
IHJlc3VsdCwgTmUKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7CiAgICAgR1JlZlB0
cjxHSW5wdXRTdHJlYW0+IGlucHV0U3RyZWFtID0gYWRvcHRHUmVmKEdfSU5QVVRfU1RSRUFNKGdf
ZmlsZV9yZWFkX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICBp
ZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihnX3F1YXJrX3Rv
X3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0
LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOworICAgICAgICB0YXNr
LT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3It
PmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UKICAgICAgICAgdGFzay0+
ZGlkUmVhZEZpbGUoV1RGTW92ZShpbnB1dFN0cmVhbSkpOwogfQpAQCAtMTc0Myw3ICsxNzQzLDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjplbnVtZXJhdGVGaWxlQ2hpbGRyZW5DYWxsYmFj
ayhHRmlsZSogZmlsZSwgR0FzeW5jUmVzdWwKICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJy
b3I7CiAgICAgR1JlZlB0cjxHRmlsZUVudW1lcmF0b3I+IGVudW1lcmF0b3IgPSBhZG9wdEdSZWYo
Z19maWxlX2VudW1lcmF0ZV9jaGlsZHJlbl9maW5pc2goZmlsZSwgcmVzdWx0LCAmZXJyb3Iub3V0
UHRyKCkpKTsKICAgICBpZiAoZXJyb3IpCi0gICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VF
cnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIHRhc2st
Pm1fZmlyc3RSZXF1ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkp
OworICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190
b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgZXJyb3ItPmNvZGUsIHRhc2stPm1fZmlyc3RSZXF1
ZXN0LnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgIGVsc2UK
ICAgICAgICAgdGFzay0+ZGlkUmVhZEZpbGUod2Via2l0RGlyZWN0b3J5SW5wdXRTdHJlYW1OZXco
V1RGTW92ZShlbnVtZXJhdG9yKSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvV2ViU29ja2V0VGFza1NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
b3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcAppbmRleCA0YmNlODg4NDhjNjczMjYwYWE1YzY3YjY5
NDRiNzE1MmI1ZDE1ZDliLi45N2YwOTg1NGNmNWUzZTI4ZmUwMmViY2Y5MjIxYjM1ZGIyZTA5YWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJT
b2NrZXRUYXNrU291cC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFdlYlNvY2tldFRhc2s6
OmRpZENvbm5lY3QoR1JlZlB0cjxTb3VwV2Vic29ja2V0Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9u
KQogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX2Nvbm5lY3Rpb24uZ2V0KCksICJlcnJv
ciIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPihkaWRSZWNlaXZlRXJyb3JDYWxsYmFjayks
IHRoaXMpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChtX2Nvbm5lY3Rpb24uZ2V0KCks
ICJjbG9zZWQiLCByZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGlkQ2xvc2VDYWxsYmFjayks
IHRoaXMpOwogCi0gICAgbV9jaGFubmVsLmRpZENvbm5lY3Qoc291cF93ZWJzb2NrZXRfY29ubmVj
dGlvbl9nZXRfcHJvdG9jb2wobV9jb25uZWN0aW9uLmdldCgpKSwgYWNjZXB0ZWRFeHRlbnNpb25z
KCkpOworICAgIG1fY2hhbm5lbC5kaWRDb25uZWN0KFN0cmluZyB7IHNvdXBfd2Vic29ja2V0X2Nv
bm5lY3Rpb25fZ2V0X3Byb3RvY29sKG1fY29ubmVjdGlvbi5nZXQoKSkgfSwgYWNjZXB0ZWRFeHRl
bnNpb25zKCkpOwogCiAgICAgbV9jaGFubmVsLmRpZFJlY2VpdmVIYW5kc2hha2VSZXNwb25zZSht
X2hhbmRzaGFrZU1lc3NhZ2UuZ2V0KCkpOwogICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5l
Y3RfYnlfZGF0YShtX2hhbmRzaGFrZU1lc3NhZ2UuZ2V0KCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKaW5kZXgg
YTlkZGEzMDBmZDg2ZmJhNjhmNzFmZmY1ZmU1OGI2YmQwMjI2ZDYzMi4uM2E4OGZjMjZhZDA0OTAy
MDk1ZTZlMzMwNWU5NGUzNmMxZjM5ZTJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCkBAIC00NCw1ICs0NCw1IEBAIGNs
YXNzIERpY3Rpb25hcnk7CiBAZW5kCiAKIG5hbWVzcGFjZSBXZWJLaXQgewotYm9vbCBtZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKK2Jv
b2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoTlNTdHJpbmcgKiwgTlNTdHJpbmcgKik7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVP
YmplY3RDb2Rlci5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9i
amVjdENvZGVyLm1tCmluZGV4IGE5YmVjNTg3M2VkNGFjNGVhZDRmYzJlNDM1NDk2YTVhOTQyZDRl
MDQuLjE1NzNkZjJiNzJjNjA4NzYyOGU5N2Q0YzNkZGNlZjk0MmQ4Y2QzZTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
CkBAIC01NCwyNSArNTQsMjIgQEAgc3RhdGljIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IGNyZWF0
ZUVuY29kZWRPYmplY3QoV0tSZW1vdGVPYmplY3RFbmNvZGVyICosIGlkKTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWJvb2wgbWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUoY29uc3QgU3Ry
aW5nJiB3aXJlLCBjb25zdCBTdHJpbmcmIGxvY2FsKQorYm9vbCBtZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZShOU1N0cmluZyAqd2lyZSwgTlNTdHJpbmcgKmxvY2FsKQogewotICAgIGlmIChs
b2NhbCA9PSB3aXJlKQorICAgIGlmIChbbG9jYWwgaXNFcXVhbFRvU3RyaW5nOndpcmVdID09ICBO
U09yZGVyZWRTYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChsb2NhbC5sZW5n
dGgoKSAhPSB3aXJlLmxlbmd0aCgpKQorICAgIGlmIChsb2NhbC5sZW5ndGggIT0gd2lyZS5sZW5n
dGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGxvY2Fs
Lmxlbmd0aCgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewot
ICAgICAgICBjaGFyIGxvY2FsVHlwZSA9IGxvY2FsW2ldOwotICAgICAgICBjaGFyIHdpcmVUeXBl
ID0gd2lyZVtpXTsKLQotICAgICAgICBpZiAobG9jYWxUeXBlICE9IHdpcmVUeXBlKSB7Ci0gICAg
ICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4K
LSAgICAgICAgICAgIGlmIChzdHJjaHIoIkJjIiwgbG9jYWxUeXBlKSAmJiBzdHJjaHIoIkJjIiwg
d2lyZVR5cGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGF1dG8gbWFwQ2hhcmFj
dGVyID0gW10odW5pY2hhciBjKSAtPiB1bmljaGFyIHsKKyAgICAgICAgLy8gYGJvb2xgIGFuZCBg
c2lnbmVkIGNoYXJgIGFyZSBpbnRlcmNoYW5nZWFibGUuCisgICAgICAgIHJldHVybiBjID09ICdC
JyA/ICdjJyA6IGM7CisgICAgfTsKKyAgICBOU1VJbnRlZ2VyIGxlbmd0aCA9IGxvY2FsLmxlbmd0
aDsKKyAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAg
ICBpZiAobWFwQ2hhcmFjdGVyKFtsb2NhbCBjaGFyYWN0ZXJBdEluZGV4OmldKSAhPSBtYXBDaGFy
YWN0ZXIoW3dpcmUgY2hhcmFjdGVyQXRJbmRleDppXSkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05NzAsOSArOTY3
LDggQEAgc3RhdGljIE5TSW52b2NhdGlvbiAqZGVjb2RlSW52b2NhdGlvbihXS1JlbW90ZU9iamVj
dERlY29kZXIgKmRlY29kZXIpCiAgICAgaWYgKCF0eXBlU2lnbmF0dXJlKQogICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0aW9uIGZvcm1h
dDpAIkludm9jYXRpb24gaGFkIG5vIHR5cGUgc2lnbmF0dXJlIl07CiAKLSAgICBTdHJpbmcgcmVt
b3RlTWV0aG9kU2lnbmF0dXJlID0gdHlwZVNpZ25hdHVyZS5VVEY4U3RyaW5nOwotICAgIFN0cmlu
ZyBsb2NhbE1ldGhvZFNpZ25hdHVyZSA9IFtpbnZvY2F0aW9uIG1ldGhvZFNpZ25hdHVyZV0uX3R5
cGVTdHJpbmcuVVRGOFN0cmluZzsKLSAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0Fy
ZUNvbXBhdGlibGUocmVtb3RlTWV0aG9kU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkp
CisgICAgTlNTdHJpbmcgKmxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9k
U2lnbmF0dXJlXS5fdHlwZVN0cmluZzsKKyAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJl
c0FyZUNvbXBhdGlibGUodHlwZVNpZ25hdHVyZSwgbG9jYWxNZXRob2RTaWduYXR1cmUpKQogICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkVW5hcmNoaXZlT3BlcmF0aW9uRXhjZXB0
aW9uIGZvcm1hdDpAIkxvY2FsIGFuZCByZW1vdGUgbWV0aG9kIHNpZ25hdHVyZXMgYXJlIG5vdCBj
b21wYXRpYmxlIGZvciBtZXRob2QgXCIlc1wiIiwgc2VsZWN0b3IgPyBzZWxfZ2V0TmFtZShzZWxl
Y3RvcikgOiAiKG5vIHNlbGVjdG9yKSJdOwogCiAgICAgaWYgKGlzUmVwbHlCbG9jaykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tCmluZGV4IGFhMzE5NDljMGM1NDRlZTk2YjFhNGZkYTAxMzBkNWYxYjQ2MWQw
NmIuLjU5Njk3ZTI2MmQ5OTNmNTI5OGJkMzhlMWZjM2RlM2QxNjk5OGNjMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkubW0KQEAgLTE4Nyw3ICsxODcsNyBAQCAtIChXZWJLaXQ6OlJlbW90ZU9iamVjdFJlZ2lz
dHJ5JilyZW1vdGVPYmplY3RSZWdpc3RyeQogICAgIHJldHVybiAqX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5OwogfQogCi1zdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUoUHJvdG9jb2wgKnBy
b3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYmxvY2tJbmRleCkKK3N0YXRpYyBOU1N0
cmluZyAqcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3Rv
ciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQogewogICAgIC8vIFJlcXVpcmVkLCBub24taW5oZXJp
dGVkIG1ldGhvZDoKICAgICBjb25zdCBjaGFyKiBtZXRob2RUeXBlRW5jb2RpbmcgPSBfcHJvdG9j
b2xfZ2V0TWV0aG9kVHlwZUVuY29kaW5nKHByb3RvY29sLCBzZWxlY3RvciwgdHJ1ZSwgdHJ1ZSk7
CkBAIC0xOTcsMTIgKzE5NywxMiBAQCBzdGF0aWMgU3RyaW5nIHJlcGx5QmxvY2tTaWduYXR1cmUo
UHJvdG9jb2wgKnByb3RvY29sLCBTRUwgc2VsZWN0b3IsIE5TVUludGVnZXIgYgogCiAgICAgQVNT
RVJUKG1ldGhvZFR5cGVFbmNvZGluZyk7CiAgICAgaWYgKCFtZXRob2RUeXBlRW5jb2RpbmcpCi0g
ICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBOU01ldGhvZFNp
Z25hdHVyZSAqdGFyZ2V0TWV0aG9kU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25h
dHVyZVdpdGhPYmpDVHlwZXM6bWV0aG9kVHlwZUVuY29kaW5nXTsKICAgICBBU1NFUlQodGFyZ2V0
TWV0aG9kU2lnbmF0dXJlKTsKICAgICBpZiAoIXRhcmdldE1ldGhvZFNpZ25hdHVyZSkKLSAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBbdGFyZ2V0
TWV0aG9kU2lnbmF0dXJlIF9zaWduYXR1cmVGb3JCbG9ja0F0QXJndW1lbnRJbmRleDpibG9ja0lu
ZGV4XS5fdHlwZVN0cmluZzsKIH0KQEAgLTI0NywxNyArMjQ3LDE3IEBAIC0gKHZvaWQpX2ludm9r
ZU1ldGhvZDooY29uc3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmpl
Y3RJbnZvY2F0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBTdHJp
bmcgd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhP
YmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0
cmluZzsKLSAgICAgICAgU3RyaW5nIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2Nr
U2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsK
KyAgICAgICAgTlNTdHJpbmcgKndpcmVCbG9ja1NpZ25hdHVyZSA9IFtOU01ldGhvZFNpZ25hdHVy
ZSBzaWduYXR1cmVXaXRoT2JqQ1R5cGVzOnJlcGx5SW5mby0+YmxvY2tTaWduYXR1cmUudXRmOCgp
LmRhdGEoKV0uX3R5cGVTdHJpbmc7CisgICAgICAgIE5TU3RyaW5nICpleHBlY3RlZEJsb2NrU2ln
bmF0dXJlID0gcmVwbHlCbG9ja1NpZ25hdHVyZShbaW50ZXJmYWNlIHByb3RvY29sXSwgaW52b2Nh
dGlvbi5zZWxlY3RvciwgaSk7CiAKLSAgICAgICAgaWYgKGV4cGVjdGVkQmxvY2tTaWduYXR1cmUu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSB7CiAgICAg
ICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBi
bG9jayBzaWduYXR1cmU6IGNvdWxkIG5vdCBmaW5kIGxvY2FsIHNpZ25hdHVyZSIpOwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoIVdlYktpdDo6bWV0aG9kU2lnbmF0dXJlc0FyZUNvbXBhdGlibGUo
d2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKSkgewotICAgICAgICAg
ICAgTlNMb2coQCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sg
c2lnbmF0dXJlOiAlcyAhPSAlcyIsIHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBl
eHBlY3RlZEJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTlNMb2co
QCJfaW52b2tlTWV0aG9kOiBGYWlsZWQgdG8gdmFsaWRhdGUgcmVwbHkgYmxvY2sgc2lnbmF0dXJl
OiAlQCAhPSAlQCIsIHdpcmVCbG9ja1NpZ25hdHVyZSwgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSk7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMjk4LDcgKzI5OCw3IEBAIC0gKHZvaWQpX2ludm9rZU1ldGhvZDooY29u
c3QgV2ViS2l0OjpSZW1vdGVPYmplY3RJbnZvY2F0aW9uJilyZW1vdGVPYmplY3RJbnZvY2F0CiAg
ICAgICAgIH07CiAKICAgICAgICAgUmVmUHRyPFJlcGx5QmxvY2tDYWxsQ2hlY2tlcj4gY2hlY2tl
ciA9IFJlcGx5QmxvY2tDYWxsQ2hlY2tlcjo6Y3JlYXRlKHNlbGYsIHJlcGx5SUQpOwotICAgICAg
ICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVCbG9jayh3
aXJlQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSwgW2ludGVyZmFjZSwgcmVtb3RlT2JqZWN0
UmVnaXN0cnksIHJlcGx5SUQsIGNoZWNrZXJdKE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbikgewor
ICAgICAgICBpZCByZXBseUJsb2NrID0gX19OU01ha2VTcGVjaWFsRm9yd2FyZGluZ0NhcHR1cmVC
bG9jayhbd2lyZUJsb2NrU2lnbmF0dXJlIFVURjhTdHJpbmddLCBbaW50ZXJmYWNlLCByZW1vdGVP
YmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9u
KSB7CiAgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVPYmplY3RF
bmNvZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6
aW52b2NhdGlvbiBmb3JLZXk6aW52b2NhdGlvbktleV07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9nbGliL1dlYktpdFVSSVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAKaW5kZXggMTQ0OGRmOWU5ZGVh
Y2JlNGE2OTQxZDZkMWFjYWUxNjk2NWIyZDM3Ni4uZmYyMjFjYTQ5YTNjNjI4ZDBkYmY2YjA5MmRi
MjdiMDQ4YWE1YjMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIv
V2ViS2l0VVJJUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIv
V2ViS2l0VVJJUmVxdWVzdC5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIHdlYmtpdF91cmlf
cmVxdWVzdF9zZXRfdXJpKFdlYktpdFVSSVJlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IGNoYXIqIHVy
aSkKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19VUklfUkVRVUVTVChyZXF1ZXN0KSk7
CiAgICAgZ19yZXR1cm5faWZfZmFpbCh1cmkpOwogCi0gICAgVVJMIHVybCB7IHVyaSB9OworICAg
IFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgIGlmICh1cmwgPT0gcmVxdWVzdC0+cHJp
di0+cmVzb3VyY2VSZXF1ZXN0LnVybCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKaW5kZXggNmEwZGY1NGMzNzQ0NWRmNjRjYzVk
M2I0YmI2MTBlYzFmM2MwNjVmMC4uM2Y5ZmU2NTczNjNiOWMyODVjZDRiYjAxMWZhNzY0ODU4ZDBi
MmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAKQEAgLTQw
LDEyICs0MCwxMiBAQCBSZXNvdXJjZUVycm9yIHByaW50RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5n
VVJMLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aQogCiBSZXNvdXJjZUVycm9yIHBy
aW50ZXJOb3RGb3VuZEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKIHsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6
RXJyb3I6OlByaW50OjpQcmludGVyTm90Rm91bmQsIGZhaWxpbmdVUkwsIF8oIlByaW50ZXIgbm90
IGZvdW5kIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBy
aW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFp
bGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChfKCJQcmludGVyIG5vdCBmb3VuZCIpKSk7CiB9CiAK
IFJlc291cmNlRXJyb3IgaW52YWxpZFBhZ2VSYW5nZVRvUHJpbnQoY29uc3QgVVJMJiBmYWlsaW5n
VVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxp
bmdVUkwsIF8oIkludmFsaWQgcGFnZSByYW5nZSIpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJv
cihBUEk6OkVycm9yOjp3ZWJLaXRQcmludEVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlByaW50
OjpJbnZhbGlkUGFnZVJhbmdlLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIkludmFs
aWQgcGFnZSByYW5nZSIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Np
b24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlv
blNlc3Npb24uY3BwCmluZGV4IDhjYmJlZGMzYjI5NGJkN2UyNTcyMzliYmNiNTgzMzM0N2Q3ODZl
NjIuLjcwMDI2ZmQyODY0MzJhOWYzODU0YTQ0YTM3MDJhOTY5YjIyMjA5NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKQEAgLTM3OCw3ICszNzgsNyBAQCBTdHJpbmcgd2Via2l0QXV0b21hdGlv
blNlc3Npb25HZXRCcm93c2VyTmFtZShXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikK
ICAgICBpZiAoc2Vzc2lvbi0+cHJpdi0+YXBwbGljYXRpb25JbmZvKQogICAgICAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfYXBwbGljYXRpb25faW5mb19nZXRfbmFtZShzZXNzaW9u
LT5wcml2LT5hcHBsaWNhdGlvbkluZm8pKTsKIAotICAgIHJldHVybiBnX2dldF9wcmduYW1lKCk7
CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoZ19nZXRfcHJnbmFtZSgpKTsKIH0KIAogU3Ry
aW5nIHdlYmtpdEF1dG9tYXRpb25TZXNzaW9uR2V0QnJvd3NlclZlcnNpb24oV2ViS2l0QXV0b21h
dGlvblNlc3Npb24qIHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRDcmVkZW50aWFsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwCmluZGV4IGY4MjZlZTE4OWE1NDkzZTljMjRk
ODQ1YmI1ZTViZTUzZDljN2Y4NjkuLjBkYWE1YzliZDVhNzdkMjRlZTIwODY1NTJkMTk2ZmVhZTMy
Y2MxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dENyZWRlbnRpYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENyZWRlbnRpYWwuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgV2ViS2l0Q3JlZGVudGlhbCog
d2Via2l0X2NyZWRlbnRpYWxfbmV3X2Zvcl9jZXJ0aWZpY2F0ZV9waW4oY29uc3QgZ2NoYXIqIHBp
biwgV2UKICAgICAgICAgcGVyc2lzdGVuY2UgPSBXRUJLSVRfQ1JFREVOVElBTF9QRVJTSVNURU5D
RV9GT1JfU0VTU0lPTjsKICAgICB9CiAKLSAgICByZXR1cm4gd2Via2l0Q3JlZGVudGlhbENyZWF0
ZShXZWJDb3JlOjpDcmVkZW50aWFsKCIiLCBTdHJpbmc6OmZyb21VVEY4KHBpbiksIHRvV2ViQ29y
ZUNyZWRlbnRpYWxQZXJzaXN0ZW5jZShwZXJzaXN0ZW5jZSkpKTsKKyAgICByZXR1cm4gd2Via2l0
Q3JlZGVudGlhbENyZWF0ZShXZWJDb3JlOjpDcmVkZW50aWFsKGVtcHR5U3RyaW5nKCksIFN0cmlu
Zzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3Rl
bmNlKSkpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAppbmRleCA5MjYy
YTg0ZGVjZTI1YmYwYmRmNWM1OWI0OGQwMDI1ODUyZjM2YmE3Li4zZmZmYzhmYjllMjdiNjZiYjI2
MGM5MGY0MTFmZGI0N2NhMzIxODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCkBA
IC0xMzksMTEgKzEzOSwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2Via2l0V2ViVmlld1Jl
bW92ZUxvYWRpbmdXZWJSZXNvdXJjZSh3ZWJWaWV3LCByZXNvdXJjZUlkZW50aWZpZXItPnZhbHVl
KCkpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbCht
ZXNzYWdlTmFtZSwgIkRpZEdldFNuYXBzaG90IikpIHsKLSAgICAgICAgICAgIEFQSTo6VUludDY0
KiBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2Fs
bGJhY2tJRCIpKTsKKyAgICAgICAgICAgIEFQSTo6VUludDY0KiBjYWxsYmFja0lEID0gc3RhdGlj
X2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpOwogICAgICAg
ICAgICAgaWYgKCFjYWxsYmFja0lEKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAgICAgV2ViSW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViSW1hZ2UqPihtZXNzYWdlLmdl
dCgiU25hcHNob3QiKSk7CisgICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2Fz
dDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCJfcykpOwogICAgICAgICAgICAgd2Vi
S2l0V2ViVmlld0RpZFJlY2VpdmVTbmFwc2hvdCh3ZWJWaWV3LCBjYWxsYmFja0lELT52YWx1ZSgp
LCBpbWFnZSk7CiAjZW5kaWYKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggOWZj
NGQzMTk5MDM2MDM5ZDQ4YWU3YmIyYTMyYTA5Y2ZmNTgzMDY2Ni4uNzUzMmZmNWJlZGJiZDQ4MzRl
ZTdjMTExY2ZlZGI5YTdhODRjNjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC05NCw3ICs5
NCw3IEBAIFdlYktpdFByb3RvY29sSGFuZGxlcjo6V2ViS2l0UHJvdG9jb2xIYW5kbGVyKFdlYktp
dFdlYkNvbnRleHQqIGNvbnRleHQpCiAKIHZvaWQgV2ViS2l0UHJvdG9jb2xIYW5kbGVyOjpoYW5k
bGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgVVJMIHJl
cXVlc3RVUkwgPSBVUkwoeyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVx
dWVzdCkpOworICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKFN0cmluZyB7IHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSB9KTsKICAgICBpZiAocmVxdWVzdFVSTC5ob3N0
KCkgPT0gImdwdSIpIHsKICAgICAgICAgaGFuZGxlR1BVKHJlcXVlc3QpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRT
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0
aW5ncy5jcHAKaW5kZXggMDNjNWEwYjAzZDg4M2YyYjIwMTg5NWMyYjUzNDRmOWYyYzNhYjU0Zi4u
OWI3YjVhMDc0MjJhNzE3OGI2ZTQ5ZDcxY2ZjMjliNmQ2OGM0NjVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcApAQCAtNTcs
NyArNTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBzdHJ1Y3QgX1dlYktpdFNldHRp
bmdzUHJpdmF0ZSB7CiAgICAgX1dlYktpdFNldHRpbmdzUHJpdmF0ZSgpCi0gICAgICAgIDogcHJl
ZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldl
YktpdDIuIikpCisgICAgICAgIDogcHJlZmVyZW5jZXMoV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShT
dHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4iX3MpKQogICAgIHsKICAgICAgICAgZGVm
YXVsdEZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+c3RhbmRhcmRGb250RmFtaWx5KCkudXRmOCgp
OwogICAgICAgICBtb25vc3BhY2VGb250RmFtaWx5ID0gcHJlZmVyZW5jZXMtPmZpeGVkRm9udEZh
bWlseSgpLnV0ZjgoKTsKQEAgLTMwOTAsNyArMzA5MCw3IEBAIHZvaWQgd2Via2l0X3NldHRpbmdz
X3NldF91c2VyX2FnZW50KFdlYktpdFNldHRpbmdzKiBzZXR0aW5ncywgY29uc3QgY2hhciogdXNl
ckFnCiAgICAgICAgIHVzZXJBZ2VudFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgodXNlckFnZW50
KTsKICAgICAgICAgZ19yZXR1cm5faWZfZmFpbChXZWJDb3JlOjppc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUodXNlckFnZW50U3RyaW5nKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIHVzZXJBZ2Vu
dFN0cmluZyA9IFdlYkNvcmU6OnN0YW5kYXJkVXNlckFnZW50KCIiKTsKKyAgICAgICAgdXNlckFn
ZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoZW1wdHlTdHJpbmcoKSk7CiAK
ICAgICBDU3RyaW5nIG5ld1VzZXJBZ2VudCA9IHVzZXJBZ2VudFN0cmluZy51dGY4KCk7CiAgICAg
aWYgKG5ld1VzZXJBZ2VudCA9PSBwcml2LT51c2VyQWdlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRVUklTY2hlbWVSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
CmluZGV4IGM5MWM0ZDhlOGY0NDNiMjg2Nzk2ZTI3N2UyNDdkMmFiZThiYzhiZDQuLjBjM2UyYjdl
YThjZTIwOTU2ODdkYzM5ZWNlOGM0NzU3N2EwOGYxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3Bw
CkBAIC0yMjIsMTYgKzIyMiwxNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRVUklTY2hlbWVSZXF1ZXN0
UmVhZENhbGxiYWNrKEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0sIEdBc3luYwogCiAgICAgV2Vi
S2l0VVJJU2NoZW1lUmVzcG9uc2UqIHJlc3AgPSBwcml2LT5yZXNwb25zZS5nZXQoKTsKICAgICBp
ZiAoIXByaXYtPmJ5dGVzUmVhZCkgewotICAgICAgICBDU3RyaW5nIGNvbnRlbnRUeXBlID0gd2Vi
S2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKTsKLSAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZGF0YSgpKSwgd2ViS2l0VVJJU2NoZW1l
UmVzcG9uc2VHZXRTdHJlYW1MZW5ndGgocmVzcCksIGVtcHR5U3RyaW5nKCkpOwotICAgICAgICBy
ZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZS5kYXRhKCkpKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlIHsgd2ViS2l0
VVJJU2NoZW1lUmVzcG9uc2VHZXRDb250ZW50VHlwZShyZXNwKS5kYXRhKCkgfTsKKyAgICAgICAg
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZShwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLCB3ZWJLaXRVUklTY2hlbWVS
ZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIHJl
c3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNv
bnRlbnRUeXBlKSk7CiAgICAgICAgIGNvbnN0IENTdHJpbmcmIHN0YXR1c01lc3NhZ2UgPSB3ZWJL
aXRVUklTY2hlbWVSZXNwb25zZUdldFN0YXR1c01lc3NhZ2UocmVzcCk7CiAgICAgICAgIGlmIChz
dGF0dXNNZXNzYWdlLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZSgyMDApOwogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9L
Il9zKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0
dXNDb2RlKHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzQ29kZShyZXNwKSk7Ci0gICAg
ICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChzdGF0dXNNZXNzYWdlLmRhdGEoKSk7
CisgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dChTdHJpbmcgeyBzdGF0dXNN
ZXNzYWdlLmRhdGEoKSB9KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzcG9uc2UubWltZVR5
cGUoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXNwb25zZS5zZXRNaW1lVHlwZShNSU1FVHlw
ZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgocmVzcG9uc2UudXJsKCkucGF0aCgpLnRvU3RyaW5n
KCkpKTsKQEAgLTMxMSw2ICszMTEsNiBAQCB2b2lkIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
ZmluaXNoX2Vycm9yKFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QsIEdFcgogCiAgICAg
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OwogICAg
IHByaXYtPnJlc3BvbnNlID0gbnVsbHB0cjsKLSAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIHRvV2ViQ29yZUVycm9yKGVycm9y
LT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVy
cm9yLT5tZXNzYWdlKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyB7
IGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pIH0sIHRvV2ViQ29yZUVycm9yKGVycm9y
LT5jb2RlKSwgcHJpdi0+dGFzay0+cmVxdWVzdCgpLnVybCgpLCBTdHJpbmc6OmZyb21VVEY4KGVy
cm9yLT5tZXNzYWdlKSk7CiAgICAgcHJpdi0+dGFzay0+ZGlkQ29tcGxldGUocmVzb3VyY2VFcnJv
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0RyYWdT
b3VyY2VHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJj
ZUd0azQuY3BwCmluZGV4IDA5ZmViMTRiZTAxNjI1ZGZkYWUwM2I1MjJhOGExMmYxMWRmY2FkMGIu
LjJhN2NiZjlmNDFmOWYxYzgxOWJlYWYyMmNhZDdhMDllZDFhM2QyMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwCkBAIC04OSw3
ICs4OSw3IEBAIHZvaWQgRHJhZ1NvdXJjZTo6YmVnaW4oU2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlv
bkRhdGEsIE9wdGlvblNldDxEcmFnT3BlcmF0aW9uPiBvCiAKICAgICBpZiAobV9zZWxlY3Rpb25E
YXRhLT5oYXNDdXN0b21EYXRhKCkpIHsKICAgICAgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0g
bV9zZWxlY3Rpb25EYXRhLT5jdXN0b21EYXRhKCktPmNyZWF0ZUdCeXRlcygpOwotICAgICAgICBw
cm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoUGFzdGVi
b2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSwgYnl0ZXMuZ2V0KCkpKTsKKyAgICAgICAgcHJvdmlk
ZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVzKFBhc3RlYm9hcmRD
dXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpLCBieXRlcy5nZXQoKSkpOwogICAgIH0K
IAogICAgIGF1dG8qIHN1cmZhY2UgPSBndGtfbmF0aXZlX2dldF9zdXJmYWNlKGd0a193aWRnZXRf
Z2V0X25hdGl2ZShtX3dlYlZpZXcpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAKaW5kZXggZjVhZjA5MmJiMjI1ODIwNTk2Y2IwMjUz
MGQwZGIwYjc2OTQ0MDMyOS4uMWY1MjJkZTk2YmFkM2JhMDI1OTBjZTNlZmQxMGExMjg2Y2I3MjQ1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrMy5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgRHJvcFRhcmdldDo6RHJvcFRhcmdldChHdGtXaWRn
ZXQqIHdlYlZpZXcpCiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0cyhsaXN0Lmdl
dCgpLCBEcm9wVGFyZ2V0VHlwZTo6VVJJTGlzdCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChs
aXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiX05FVFNDQVBFX1VSTCIp
LCAwLCBEcm9wVGFyZ2V0VHlwZTo6TmV0c2NhcGVVUkwpOwogICAgIGd0a190YXJnZXRfbGlzdF9h
ZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9u
L3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6U21hcnRQYXN0
ZSk7Ci0gICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5f
c3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgMCwgRHJvcFRh
cmdldFR5cGU6OkN1c3RvbSk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBn
ZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlw
ZSgpLmNoYXJhY3RlcnMoKSksIDAsIERyb3BUYXJnZXRUeXBlOjpDdXN0b20pOwogICAgIGd0a19k
cmFnX2Rlc3Rfc2V0KG1fd2ViVmlldywgc3RhdGljX2Nhc3Q8R3RrRGVzdERlZmF1bHRzPigwKSwg
bnVsbHB0ciwgMCwKICAgICAgICAgc3RhdGljX2Nhc3Q8R2RrRHJhZ0FjdGlvbj4oR0RLX0FDVElP
Tl9DT1BZIHwgR0RLX0FDVElPTl9NT1ZFIHwgR0RLX0FDVElPTl9MSU5LKSk7CiAgICAgZ3RrX2Ry
YWdfZGVzdF9zZXRfdGFyZ2V0X2xpc3QobV93ZWJWaWV3LCBsaXN0LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJvcFRhcmdldEd0azQuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKaW5kZXgg
YWJiYWNhMjljNzQxMTFkY2MwOTM1NzM5NDkzYjkzYzc0NDUyNTBkOC4uNzQ3OTE0MmI5ZjE1OGJj
MzJmY2E0ZDgxZmJiNWY5NmY1MmViYTNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgRHJvcFRh
cmdldDo6RHJvcFRhcmdldChHdGtXaWRnZXQqIHdlYlZpZXcpCiAgICAgZ2RrX2NvbnRlbnRfZm9y
bWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJ0ZXh0L3VyaS1saXN0
Iik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0
c0J1aWxkZXIsICJfTkVUU0NBUEVfVVJMIik7CiAgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWls
ZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1aWxkZXIsICJhcHBsaWNhdGlvbi92bmQud2Via2l0
Z3RrLnNtYXJ0cGFzdGUiKTsKLSAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21p
bWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSk7
CisgICAgZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2FkZF9taW1lX3R5cGUoZm9ybWF0c0J1
aWxkZXIsIFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpKTsKICAg
ICBhdXRvKiB0YXJnZXQgPSBndGtfZHJvcF90YXJnZXRfYXN5bmNfbmV3KGdka19jb250ZW50X2Zv
cm1hdHNfYnVpbGRlcl9mcmVlX3RvX2Zvcm1hdHMoZm9ybWF0c0J1aWxkZXIpLAogICAgICAgICBz
dGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01P
VkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRhcmdldCwgImFj
Y2VwdCIsIEdfQ0FMTEJBQ0soK1tdKEd0a0Ryb3BUYXJnZXRBc3luYyosIEdka0Ryb3AqIGdka0Ry
b3AsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBnYm9vbGVhbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUlu
c3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggNjdiOWZlZGU2YTM3MTIyNzhjMmNkNTc0
NzcxMjI2MjVlNTAwYzZiMi4uMmEwNjZiODVjYzQ1MWJjZGVlYmFkNmVjNDcyMWU0YTBmZDllYThl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAt
ODIsNyArODIsNyBAQCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6On5SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIoKQogICAgICAgICBnX29iamVjdF93ZWFrX3VucmVmKEdfT0JK
RUNUKHdlYlZpZXcpLCByZWludGVycHJldF9jYXN0PEdXZWFrTm90aWZ5Pih3ZWJWaWV3RGVzdHJv
eWVkKSwgdGhpcyk7CiAKICAgICBmb3IgKGF1dG8qIHVzZXJDb250ZW50TWFuYWdlciA6IG1fdXNl
ckNvbnRlbnRNYW5hZ2VycykgewotICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5yZW1vdmVVc2Vy
TWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJpbnNwZWN0b3IiLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFn
ZUNvbnRlbnRXb3JsZCgpKTsKKyAgICAgICAgd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+cmVtb3ZlVXNlck1l
c3NhZ2VIYW5kbGVyRm9yTmFtZSgiaW5zcGVjdG9yIl9zLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFn
ZUNvbnRlbnRXb3JsZCgpKTsKICAgICAgICAgZ19vYmplY3Rfd2Vha191bnJlZihHX09CSkVDVCh1
c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVycHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1c2VyQ29u
dGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlzKTsKICAgICB9CiB9CkBAIC05OSw3ICs5OSw3IEBA
IHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp1c2VyQ29udGVudE1hbmFnZXJE
ZXN0cm95ZWQoUmVtb3RlSW5zcGVjdG9yCiAKIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVlc3QqIHJlcXVlc3QpCiB7
Ci0gICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoeyB9LCB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0
X2dldF91cmkocmVxdWVzdCkpOworICAgIFVSTCByZXF1ZXN0VVJMID0gVVJMKFN0cmluZyB7IHdl
YmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSB9KTsKICAgICBpZiAoIXJl
cXVlc3RVUkwucG9ydCgpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8R0Vycm9yPiBlcnJvcihnX2Vy
cm9yX25ld19saXRlcmFsKFdFQktJVF9QT0xJQ1lfRVJST1IsIFdFQktJVF9QT0xJQ1lfRVJST1Jf
Q0FOTk9UX1NIT1dfVVJJLCAiQ2Fubm90IHNob3cgaW5zcGVjdG9yIFVSTDogbm8gcG9ydCBwcm92
aWRlZCIpKTsKICAgICAgICAgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3Io
cmVxdWVzdCwgZXJyb3IuZ2V0KCkpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgUmVtb3RlSW5z
cGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KFdlYktpdFVSSVNjaGVtZVJlcXVl
c3QqIHJlcXVlCiAgICAgYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyID0gd2Via2l0X3dlYl92aWV3
X2dldF91c2VyX2NvbnRlbnRfbWFuYWdlcih3ZWJWaWV3KTsKICAgICBhdXRvIHVzZXJDb250ZW50
TWFuYWdlclJlc3VsdCA9IG1fdXNlckNvbnRlbnRNYW5hZ2Vycy5hZGQodXNlckNvbnRlbnRNYW5h
Z2VyKTsKICAgICBpZiAodXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0LmlzTmV3RW50cnkpIHsKLSAg
ICAgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtl
VW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29u
dGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgICAgICBhdXRvIGhhbmRsZXIgPSBX
ZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNs
aWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIl9zLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRl
bnRXb3JsZCgpKTsKICAgICAgICAgd2Via2l0VXNlckNvbnRlbnRNYW5hZ2VyR2V0VXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkodXNlckNvbnRlbnRNYW5hZ2VyKS0+YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKGhhbmRsZXIuZ2V0KCkpOwogICAgICAgICBnX29iamVjdF93ZWFrX3JlZihHX09C
SkVDVCh1c2VyQ29udGVudE1hbmFnZXIpLCByZWludGVycHJldF9jYXN0PEdXZWFrTm90aWZ5Pih1
c2VyQ29udGVudE1hbmFnZXJEZXN0cm95ZWQpLCB0aGlzKTsKICAgICB9CkBAIC0xNDMsNyArMTQz
LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnRhcmdldExpc3RDaGFu
Z2VkKFJlbW90ZUluc3BlY3RvckNsaWVudCYgY2wKICAgICAgICAgaWYgKHdlYmtpdF93ZWJfdmll
d19pc19sb2FkaW5nKHdlYlZpZXcpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
VVJMIHdlYlZpZXdVUkwgPSBVUkwoeyB9LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3
KSk7CisgICAgICAgIFVSTCB3ZWJWaWV3VVJMID0gVVJMKFN0cmluZyB7IHdlYmtpdF93ZWJfdmll
d19nZXRfdXJpKHdlYlZpZXcpIH0pOwogICAgICAgICBhdXRvIGNsaWVudEZvcldlYlZpZXcgPSBt
X2luc3BlY3RvckNsaWVudHMuZ2V0KHdlYlZpZXdVUkwuaG9zdEFuZFBvcnQoKSk7CiAgICAgICAg
IGlmICghY2xpZW50Rm9yV2ViVmlldykgewogICAgICAgICAgICAgLy8gVGhpcyB2aWV3IGlzIG5v
dCBzaG93aW5nIGEgaW5zcGVjdG9yIHZpZXcgYW55bW9yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggOTk3YjZh
NWVmZmYzYzVlZmMxYmVlNjBkZjJhYmM1ZTI1MzM1NjM3MC4uNTQyOTNlN2U0YzkyM2VhZmIyNDU5
YzI0M2NjOWEzOTEzZTk3MGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTIzNjMsNyArMjM2Myw3IEBAIHZv
aWQgd2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlKQogICAgICAgICBndGtfd2luZG93X2Z1bGxzY3JlZW4oR1RLX1dJTkRP
Vyh0b3BMZXZlbFdpbmRvdykpOwogICAgIGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHktPmRpZEVudGVy
RnVsbFNjcmVlbigpOwogICAgIHByaXYtPmZ1bGxTY3JlZW5Nb2RlQWN0aXZlID0gdHJ1ZTsKLSAg
ICBwcml2LT5zbGVlcERpc2FibGVyID0gUEFMOjpTbGVlcERpc2FibGVyOjpjcmVhdGUoXygiV2Vi
c2l0ZSBydW5uaW5nIGluIGZ1bGxzY3JlZW4gbW9kZSIpLCBQQUw6OlNsZWVwRGlzYWJsZXI6OlR5
cGU6OkRpc3BsYXkpOworICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJs
ZXI6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KF8oIldlYnNpdGUgcnVubmluZyBpbiBmdWxsc2Ny
ZWVuIG1vZGUiKSksIFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CiAjZW5kaWYK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3dwZS9XZWJLaXRD
b2xvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNw
cAppbmRleCBhMDBmZTM0NDg1ZjkzMzE0ODg3YTM0ZjE4NTRhZTg4YzQzOTFkOWU5Li4yMmZjMGE4
ZGZiMDhlYjJhZGI0MGI5MGM1YjMxNDM2YWVlMjljYzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIGdi
b29sZWFuIHdlYmtpdF9jb2xvcl9wYXJzZShXZWJLaXRDb2xvciogY29sb3IsIGNvbnN0IGdjaGFy
KiBjb2xvclN0cmluZykKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb2xvciwgRkFMU0UpOwog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yU3RyaW5nLCBGQUxTRSk7CiAKLSAgICBhdXRv
IHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250
ZXh0KHsgY29sb3JTdHJpbmcgfSk7CisgICAgYXV0byB3ZWJDb3JlQ29sb3IgPSBXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQ29sb3JXaXRob3V0Q29udGV4dChTdHJpbmcgeyBjb2xvclN0cmluZyB9
KTsKICAgICBpZiAoIXdlYkNvcmVDb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBGQUxT
RTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dz
aW5nV2FybmluZ0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJy
b3dzaW5nV2FybmluZ0NvY29hLm1tCmluZGV4IDZiMDUxMzY2MjBlY2UyODZjYTkyNjJjZTdhNjNj
MjM4YjQyNTZlYzYuLmJjMWUxYzllM2MyM2FhNTU4ZWFlMzFhMWMzZDRmMWI0NzdkMjg5MDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3Np
bmdXYXJuaW5nQ29jb2EubW0KQEAgLTQxLDggKzQxLDggQEAgc3RhdGljIFN0cmluZyBtYWx3YXJl
RGV0YWlsc0Jhc2UoU1NCU2VydmljZUxvb2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIHJldHVybiBy
ZXN1bHQubWFsd2FyZURldGFpbHNCYXNlVVJMU3RyaW5nOwogI2Vsc2UKICAgICBpZiAoW3Jlc3Vs
dC5wcm92aWRlciBpc0VxdWFsVG9TdHJpbmc6U1NCUHJvdmlkZXJUZW5jZW50XSkKLSAgICAgICAg
cmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSI7
Ci0gICAgcmV0dXJuICJodHRwczovL2dvb2dsZS5jb20vc2FmZWJyb3dzaW5nL2RpYWdub3N0aWM/
dHBsPXNhZmFyaSI7CisgICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9j
aGVjay5odG1sP3RwbD1zYWZhcmkiX3M7CisgICAgcmV0dXJuICJodHRwczovL2dvb2dsZS5jb20v
c2FmZWJyb3dzaW5nL2RpYWdub3N0aWM/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQogCkBAIC02
Myw4ICs2Myw4IEBAIHN0YXRpYyBTdHJpbmcgcmVwb3J0QW5FcnJvckJhc2UoU1NCU2VydmljZUxv
b2t1cFJlc3VsdCAqcmVzdWx0KQogICAgIHJldHVybiByZXN1bHQucmVwb3J0QW5FcnJvckJhc2VV
UkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmlu
ZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNl
Yy5xcS5jb20vY29tcGxhaW4uaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8v
d3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFyaSI7Cisg
ICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3Rw
bD1zYWZhcmkiX3M7CisgICAgcmV0dXJuICJodHRwczovL3d3dy5nb29nbGUuY29tL3NhZmVicm93
c2luZy9yZXBvcnRfZXJyb3IvP3RwbD1zYWZhcmkiX3M7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250
cm9sbGVyQ29jb2EubW0KaW5kZXggNWU2Njc4ZmU3M2U1NDY5Mjk4YWRjMTI2MTk3ZDFiYzQxZjE5
YzA3OC4uNWY1ZTJkNDUyYzY0NDYyMjM2ZjYwYmUxMzUxMTBmYjEzZjQ3YzAzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlcjo6ZmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIAog
dm9pZCBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb24o
KQogewotICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJl
dmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiKTsKKyAgICBwYWdl
KCkuc3lzdGVtUHJldmlld0FjdGlvblRyaWdnZXJlZChtX3N5c3RlbVByZXZpZXdJbmZvLCAiX2Fw
cGxlX2FyX3F1aWNrbG9va19idXR0b25fdGFwcGVkIl9zKTsKIH0KIAogdm9pZCBTeXN0ZW1QcmV2
aWV3Q29udHJvbGxlcjo6dHJpZ2dlclN5c3RlbVByZXZpZXdBY3Rpb25XaXRoVGFyZ2V0Rm9yVGVz
dGluZyh1aW50NjRfdCBlbGVtZW50SUQsIE5TU3RyaW5nKiBkb2N1bWVudElELCB1aW50NjRfdCBw
YWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3Rr
L1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcAppbmRleCA5
NGU4NjYwMTU0OTE2MjVjZDNjMmUwZWZjNmMzYmFjMzEzYjI3MDM1Li4yNjZhNzczMWM3ODQ5ZTJh
YTkzNGM5ZWM0NGUxOGIzODAwMDJlYTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eUd0ay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJ
bnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7
CiAgICAgQVNTRVJUKCFtX3dlYlZpZXcpOwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlBy
ZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAg
IGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2Vi
S2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAg
IC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1
ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0
RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMg
dm9pZCByZW1vdGVGaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09iamVjdCogc291cmNlT2Jq
ZWN0LCBHQXN5bmNSZXN1bAogCiAgICAgYXV0byogcGFnZSA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQ
cm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHBhdGgoZ19maWxlX2dldF9w
YXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JV
STo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChwYXRoLmdldCgpKSkpOwog
fQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5j
cHAKaW5kZXggMjgyMmVlODdlZjQ1MDI1Y2M5NWMwMTk2NGUzOTViNDZmM2I2YjRiMC4uYjc3MWNh
ZGU1NGMxMDU1ZDJhNWRhOTkxNjJhYmZjODZkMWE5MTQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJ
UHJveHlHdGsuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0
b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgQVNTRVJUKGluc3Bl
Y3RlZFBhZ2UoKSk7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclZpZXcpOwogCi0gICAgYXV0byBw
cmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIs
ICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERF
VkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2Vi
IEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAg
ICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKQEAgLTUxNCw3
ICs1MTQsNyBAQCBzdGF0aWMgdm9pZCBmaWxlUmVwbGFjZUNvbnRlbnRzQ2FsbGJhY2soR09iamVj
dCogc291cmNlT2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlcwogCiAgICAgYXV0byogcGFnZSA9IHN0
YXRpY19jYXN0PFdlYlBhZ2VQcm94eSo+KHVzZXJEYXRhKTsKICAgICBHVW5pcXVlUHRyPGNoYXI+
IHBhdGgoZ19maWxlX2dldF9wYXRoKGZpbGUpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShwYXRoLmdldCgpKSk7CisgICAgcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoU3RyaW5nOjpmcm9tVVRGOChwYXRoLmdldCgp
KSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCmluZGV4IGEyNjMwODg1NzNjZjI5YTc1NjNiMmRiMGRj
NjVkYzAwODIyZDI5MDQuLmI2NjQzNzEzZjU3NWY4OGEyMDAzOGU0MjAxNzYyMzliYjg2YTE2NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlUHJveHksCiAgICAgbV9pbnNwZWN0
b3JDbGllbnQgPSBtYWtlVW5pcXVlPFJlbW90ZUluc3BlY3RvckNsaWVudD4ocmVxdWVzdFVSTCwg
KnRoaXMpOwogCiAgICAgLy8gU2V0dXAgdGFyZ2V0IHBvc3RNZXNzYWdlIGxpc3RlbmVyCi0gICAg
YXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVl
PFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdv
cmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1l
c3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhp
cyksICJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkp
OwogICAgIHBhZ2VQcm94eS5wYWdlR3JvdXAoKS51c2VyQ29udGVudENvbnRyb2xsZXIoKS5hZGRV
c2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAKICAgICAvLyBTZXR1cCBs
b2FkZXIgY2xpZW50IHRvIGdldCBub3RpZmllZCBvZiBwYWdlIGxvYWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQ
cm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90
ZVdlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCmluZGV4IDdkN2I4MDQ3N2JkYzdjMjM2NDkxNWY5
ZTc0NWJiNjRlZGU5ZGU0YTYuLmExYzY4ZTQyMGUxYzc1NzVhYmE1YWIwZWY4MzcxZWI3MWU1NWJi
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApAQCAtMTAx
LDcgKzEwMSw3IEBAIExSRVNVTFQgUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6b25DbG9zZSgp
CiAKIFdlYlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVh
dGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewotICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4g
cHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4i
LCAiV2ViS2l0Mi4iKTsKKyAgICBSZWZQdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzID0g
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIl9zLCAiV2ViS2l0Mi4i
X3MpOwogICAgIHByZWZlcmVuY2VzLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1
ZSk7CiAKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5
V2luLmNwcAppbmRleCBmNDAwZDVlNzM3MTk4Y2QwZDQ4MjY5ZGUyNTA3NzNhM2NjNDYwMWFkLi4x
YTE5MTU1NWY5ZTgxMzkwZjFmNjBhNjkxMjBhMTRjMGVjZjhmOWEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVj
dG9yVUlQcm94eVdpbi5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKIHsKICAgICBBU1NF
UlQoaW5zcGVjdGVkUGFnZSgpKTsKIAotICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJl
bmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKTsKKyAgICBhdXRv
IHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIu
Il9zLCAiV2ViS2l0Mi4iX3MpOwogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKICAgICAvLyBB
bGxvdyBkZXZlbG9wZXJzIHRvIGluc3BlY3QgdGhlIFdlYiBJbnNwZWN0b3IgaW4gZGVidWcgYnVp
bGRzIHdpdGhvdXQgY2hhbmdpbmcgc2V0dGluZ3MuCiAgICAgcHJlZmVyZW5jZXMtPnNldERldmVs
b3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKaW5kZXggOWQz
Zjk4YTM0OTQwNDA5ZjljYThhNDJhYzk0NGVhNzZlYmI0ZjY3Yi4uZTJmOTcxMzI1NTI0Mzc3MDIy
YjQwNTE5ZmIwN2U4NzMwMzA5MzFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcApAQCAtMTY2
LDcgKzE2Niw3IEBAIGVudW0gY2xhc3MgQmluZEZsYWdzIHsKIAogc3RhdGljIHZvaWQgYmluZFN5
bWxpbmtzUmVhbFBhdGgoVmVjdG9yPENTdHJpbmc+JiBhcmdzLCBjb25zdCBjaGFyKiBwYXRoLCBj
b25zdCBjaGFyKiBiaW5kT3B0aW9uID0gIi0tcm8tYmluZCIpCiB7Ci0gICAgV1RGOjpTdHJpbmcg
cmVhbFBhdGggPSBGaWxlU3lzdGVtOjpyZWFsUGF0aChwYXRoKTsKKyAgICBXVEY6OlN0cmluZyBy
ZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKFN0cmluZzo6ZnJvbVVURjgocGF0aCkpOwog
ICAgIGlmIChwYXRoICE9IHJlYWxQYXRoKSB7CiAgICAgICAgIENTdHJpbmcgcnBhdGggPSByZWFs
UGF0aC51dGY4KCk7CiAgICAgICAgIGFyZ3MuYXBwZW5kVmVjdG9yKFZlY3RvcjxDU3RyaW5nPih7
IGJpbmRPcHRpb24sIHJwYXRoLmRhdGEoKSwgcnBhdGguZGF0YSgpIH0pKTsKQEAgLTc0Niw3ICs3
NDYsNyBAQCBHUmVmUHRyPEdTdWJwcm9jZXNzPiBidWJibGV3cmFwU3Bhd24oR1N1YnByb2Nlc3NM
YXVuY2hlciogbGF1bmNoZXIsIGNvbnN0IFByb2NlcwogCiAgICAgICAgIGFkZEV4dHJhUGF0aHMo
bGF1bmNoT3B0aW9ucy5leHRyYVNhbmRib3hQYXRocywgc2FuZGJveEFyZ3MpOwogCi0gICAgICAg
IFZlY3RvcjxTdHJpbmc+IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
IiwgIm1lZGlhS2V5c0RpcmVjdG9yeSIsICJ3YXlsYW5kU29ja2V0IiwgIndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5IiB9OworICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRyYVBhdGhzID0geyAiYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSJfcywgIm1lZGlhS2V5c0RpcmVjdG9yeSJfcywgIndheWxh
bmRTb2NrZXQiX3MsICJ3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSJfcyB9OwogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHBhdGggOiBleHRyYVBhdGhzKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXh0
cmFQYXRoID0gbGF1bmNoT3B0aW9ucy5leHRyYUluaXRpYWxpemF0aW9uRGF0YS5nZXQocGF0aCk7
CiAgICAgICAgICAgICBpZiAoIWV4dHJhUGF0aC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNWNhZTgxOWZkMjQ0ODY2NDVkYWFkMzA1YjQz
ODk2Yzg4YjMzYWM4Yy4uZmQ3MTRhMzA1OTE2MmFiNmMzNmUwMDJlYzhiZjcxNDE5YmZhYzBiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6V2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24oSXNQZXJzaXN0ZW50IGlzUGVycwogICAgICAgICBzZXRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShJT1MpCi0gICAgICAgIHNldFBDTU1hY2hT
ZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIik7Cisg
ICAgICAgIHNldFBDTU1hY2hTZXJ2aWNlTmFtZSgiY29tLmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0
aW9uZC5zZXJ2aWNlIl9zKTsKICNlbmRpZgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAppbmRleCAwZDFmNDAwZTQ0
NDEwODg3ZTI0NjdkNDA5MjUzNzlmMzg0M2RhNjg3Li5jZmU3YTBlYjNiZWMwMDk3NDU0MTY3NGI1
YzQxNGU1MTI3NGIxYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzCiAKICAgICBpZiAoIXBhcmFtZXRlcnMuaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcykg
ewogICAgICAgICBwYXJhbWV0ZXJzLmhvc3RDbGllbnRGaWxlRGVzY3JpcHRvciA9IHdwZV9yZW5k
ZXJlcl9ob3N0X2NyZWF0ZV9jbGllbnQoKTsKLSAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRh
dGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdw
ZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAg
ICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJyYXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihTdHJpbmcgeyB3cGVfbG9hZGVyX2dldF9sb2FkZWRfaW1w
bGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkgfSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vz
cyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKICAgICAgICAgd3BlX2xvYWRlcl9pbml0
KCJsaWJXUEVCYWNrZW5kLWZkby0xLjAuc28uMSIpOwogICAgICAgICBpZiAoQWNjZWxlcmF0ZWRC
YWNraW5nU3RvcmVXYXlsYW5kOjpjaGVja1JlcXVpcmVtZW50cygpKSB7CiAgICAgICAgICAgICBw
YXJhbWV0ZXJzLmhvc3RDbGllbnRGaWxlRGVzY3JpcHRvciA9IHdwZV9yZW5kZXJlcl9ob3N0X2Ny
ZWF0ZV9jbGllbnQoKTsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuaW1wbGVtZW50YXRpb25MaWJy
YXJ5TmFtZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih3cGVfbG9hZGVy
X2dldF9sb2FkZWRfaW1wbGVtZW50YXRpb25fbGlicmFyeV9uYW1lKCkpOworICAgICAgICAgICAg
cGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1l
bnRhdGlvbl9saWJyYXJ5X25hbWUoKSB9KTsKICAgICAgICAgfQogI2VsaWYgVVNFKEVHTCkKICAg
ICAgICAgcGFyYW1ldGVycy53YXlsYW5kQ29tcG9zaXRvckRpc3BsYXlOYW1lID0gV2F5bGFuZENv
bXBvc2l0b3I6OnNpbmdsZXRvbigpLmRpc3BsYXlOYW1lKCk7CkBAIC0xMTYsOCArMTE2LDggQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAgIEdBcHBsaWNhdGlvbiogYXBwID0gZ19hcHBs
aWNhdGlvbl9nZXRfZGVmYXVsdCgpOwogICAgIGlmIChhcHApCi0gICAgICAgIHBhcmFtZXRlcnMu
YXBwbGljYXRpb25JRCA9IGdfYXBwbGljYXRpb25fZ2V0X2FwcGxpY2F0aW9uX2lkKGFwcCk7Ci0g
ICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbk5hbWUgPSBnX2dldF9hcHBsaWNhdGlvbl9uYW1lKCk7
CisgICAgICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25JRCA9IFN0cmluZyB7IGdfYXBwbGljYXRp
b25fZ2V0X2FwcGxpY2F0aW9uX2lkKGFwcCkgfTsKKyAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9u
TmFtZSA9IFN0cmluZyB7IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKSB9OwogCiAgICAgcGFyYW1l
dGVycy5pbnNwZWN0b3JTZXJ2ZXJBZGRyZXNzID0gSW5zcGVjdG9yOjpSZW1vdGVJbnNwZWN0b3I6
Omluc3BlY3RvclNlcnZlckFkZHJlc3MoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKaW5kZXggNjMzODg0ZGFkY2IxZmFh
OGY4YjFhMzFkOTU1OTg3OGZlYzYzOTc0MC4uODY0ZDBlMzZmYjhkYTI1NmQ1MTMyZWUzNTYzMDZj
NTI4YzZlNjRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQ
cm9jZXNzUHJveHlHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dl
YlByb2Nlc3NQcm94eUdMaWIuY3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cGxhdGZvcm1HZXRMYXVuY2hPcHRpb25z
KFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0aW9ucykKIHsKLSAgICBs
YXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNhbmRib3gi
X3MsIG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
KyAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLnNldCgiZW5hYmxlLXNh
bmRib3giX3MsIG1fcHJvY2Vzc1Bvb2wtPnNhbmRib3hFbmFibGVkKCkgPyAidHJ1ZSJfcyA6ICJm
YWxzZSJfcyk7CiAKICAgICBpZiAobV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSkgewog
ICAgICAgICBXZWJzaXRlRGF0YVN0b3JlKiBkYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUu
Z2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYnNpdGVE
YXRhU3RvcmVHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURh
dGFTdG9yZUdMaWIuY3BwCmluZGV4IDA3YzIxN2M3ZDZhOTgyMzBmOWE0NDlkMmEyZTc0YTI2MTg1
NDEzYjEuLjYyNjljYzRkMjg5OWI0MjBkMGFkYzYzOTJiNDI4ZTU1NDc1NjI4YTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIu
Y3BwCkBAIC0zMCw5ICszMCw5IEBACiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgog
CiAjaWYgUExBVEZPUk0oR1RLKQotI2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIgor
I2RlZmluZSBCQVNFX0RJUkVDVE9SWSAid2Via2l0Z3RrIl9zCiAjZWxpZiBQTEFURk9STShXUEUp
Ci0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3cGUiCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3
cGUiX3MKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAppbmRleCBlOGI5YTA0N2U4ZmJmNjNhNzliNmEx
ODhhZjk3MjlhZmU3ZjU4MmYwLi5lM2UwYzQ0ZDVmYjNhYmZlNmIyMzdhOThmMTBiMGEwZGJmNzZi
ZjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3Rr
My5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3Bw
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogICAgIGlmIChzZWxlY3Rpb25EYXRhLmNhblNtYXJ0
UmVwbGFjZSgpKQogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJhcHBsaWNhdGlvbi92bmQud2Via2l0Z3RrLnNtYXJ0
cGFzdGUiKSwgMCwgQ2xpcGJvYXJkVGFyZ2V0VHlwZTo6U21hcnRQYXN0ZSk7CiAgICAgaWYgKHNl
bGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
KGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0
b20pOworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2lu
dGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBl
KCkuY2hhcmFjdGVycygpKSwgMCwgQ2xpcGJvYXJkVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKIAogICAg
IGludCBudW1iZXJPZlRhcmdldHM7CiAgICAgR3RrVGFyZ2V0RW50cnkqIHRhYmxlID0gZ3RrX3Rh
cmdldF90YWJsZV9uZXdfZnJvbV9saXN0KGxpc3QuZ2V0KCksICZudW1iZXJPZlRhcmdldHMpOwpA
QCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKICAgICAgICAgICAgIGNhc2UgQ2xpcGJvYXJkVGFyZ2V0
VHlwZTo6Q3VzdG9tOgogICAgICAgICAgICAgICAgIGlmIChkYXRhLnNlbGVjdGlvbkRhdGEuaGFz
Q3VzdG9tRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IGRhdGEu
c2VsZWN0aW9uRGF0YS5jdXN0b21EYXRhKCk7Ci0gICAgICAgICAgICAgICAgICAgIGd0a19zZWxl
Y3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZyhX
ZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKSwgOCwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBndWNoYXIqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpn
dGtUeXBlKCkuY2hhcmFjdGVycygpKSwgOCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIq
PihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+c2l6ZSgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKaW5kZXggMDdhYmI3MTMxOTg4NTNiNzg3YzYz
MjRiZDQ4MGIxZTA4OGEyYTNkMy4uNGZkOTYxNmM1ZjdmOTRiNzljNTRjMTQzOTU1MjgxNDk4YjYz
MDhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0
azQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNw
cApAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgQ2xpcGJvYXJkOjp3cml0ZShXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSkKIAogICAgIGlmIChzZWxlY3Rpb25EYXRhLmhhc0N1
c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBzZWxlY3Rpb25E
YXRhLmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBl
bmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJk
Q3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMu
YXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoV2ViQ29yZTo6UGFzdGVi
b2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAg
ICAgfQogCiAgICAgaWYgKHByb3ZpZGVycy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCmluZGV4IDE1OTk3
MWFjYzZmMGQ4OGI4MmE2YTFkNWFjYmYyNmQ5ZDZjYjdhNjQuLmNiZjFhMjlmZGEzM2I5YzhkYzYw
YWU3N2MxMmNlNjE4ZWI2MjhmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcApAQCAtMTk4LDIzICsxOTgsMjMgQEAgS2V5
QmluZGluZ1RyYW5zbGF0b3I6On5LZXlCaW5kaW5nVHJhbnNsYXRvcigpCiBzdHJ1Y3QgS2V5Q29t
YmluYXRpb25FbnRyeSB7CiAgICAgdW5zaWduZWQgZ2RrS2V5Q29kZTsKICAgICB1bnNpZ25lZCBz
dGF0ZTsKLSAgICBjb25zdCBjaGFyKiBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogfTsK
IAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9uRW50cnkgY3VzdG9tS2V5QmluZGluZ3NbXSA9
IHsKLSAgICB7IEdES19LRVlfYiwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJUb2dnbGVCb2xkIiAgICAgIH0sCi0gICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RL
X0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIiAgICB9LAotICAg
IHsgR0RLX0tFWV9Fc2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdES19LRVlfZ3JlYXRlciwgICBHREtfQ09OVFJP
TF9NQVNLLCAgICAgICAgICAgICAgICAgICJDYW5jZWwiICAgICAgICAgIH0sCi0gICAgeyBHREtf
S0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0
VGFiIiAgICAgICB9LAotICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIEdES19TSElGVF9NQVNLLCAg
ICAgICAgICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiICAgfSwKLSAgICB7IEdES19LRVlfUmV0
dXJuLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdMaW5l
IiAgIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVyLCAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9LAotICAgIHsgR0RLX0tFWV9JU09fRW50ZXIs
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwK
LSAgICB7IEdES19LRVlfUmV0dXJuLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAg
ICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAgeyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NI
SUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsg
R0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIklu
c2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19LRVlfViwgICAgICAgICBHREtfQ09OVFJPTF9N
QVNLIHwgR0RLX1NISUZUX01BU0ssICJQYXN0ZUFzUGxhaW5UZXh0IiB9LAorICAgIHsgR0RLX0tF
WV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJv
bGQiX3MgICAgICB9LAorICAgIHsgR0RLX0tFWV9pLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUl0YWxpYyJfcyAgICB9LAorICAgIHsgR0RLX0tFWV9F
c2NhcGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAg
ICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9ncmVhdGVyLCAgIEdES19DT05UUk9MX01BU0ssICAg
ICAgICAgICAgICAgICAgIkNhbmNlbCJfcyAgICAgICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIs
ICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydFRhYiJfcyAg
ICAgICB9LAorICAgIHsgR0RLX0tFWV9UYWIsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAg
ICAgICAgICAgICAgIkluc2VydEJhY2t0YWIiX3MgICB9LAorICAgIHsgR0RLX0tFWV9SZXR1cm4s
ICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3Mg
ICB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9LAorICAgIHsgR0RLX0tFWV9JU09fRW50ZXIs
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiX3MgICB9
LAorICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAg
ICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9FbnRlciwgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayJfcyB9LAor
ICAgIHsgR0RLX0tFWV9JU09fRW50ZXIsIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIkluc2VydExpbmVCcmVhayJfcyB9LAorICAgIHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19D
T05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlBhc3RlQXNQbGFpblRleHQiX3MgfSwKIH07
CiAKIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBoYW5kbGVLZXlCaW5kaW5nc0Zvck1hcChjb25zdCBL
ZXlDb21iaW5hdGlvbkVudHJ5KiBtYXAsIHVuc2lnbmVkIG1hcFNpemUsIHVuc2lnbmVkIGtleXZh
bCwgR2RrTW9kaWZpZXJUeXBlIHN0YXRlKQpAQCAtMjY3LDcxICsyNjcsNzEgQEAgVmVjdG9yPFN0
cmluZz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1hbmRzRm9yS2V5RXZlbnQoR2RrRXZlbnRL
ZXkqIGV2ZW50KQogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBLZXlDb21iaW5hdGlvbkVudHJ5IHBy
ZWRlZmluZWRLZXlCaW5kaW5nc1tdID0gewotICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0IiB9LAotICAgIHsgR0RL
X0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVMZWZ0IiB9LAotICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19TSElGVF9NQVNLLCAg
ICAgICAgICAgICAgICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAg
ICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAg
ICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0xl
ZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRC
YWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNL
LCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9M
ZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3Jk
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAg
ICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvIiB9LAotICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlf
S1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUmln
aHQiIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBH
REtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
TW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAg
ICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJk
IiB9LAotICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05UUk9MX01BU0ssICAgICAg
ICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCIgfSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAg
ICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NP
TlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9VcCwgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgfSwKLSAgICB7IEdES19LRVlfS1BfVXAsICAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVXAiIH0sCi0gICAgeyBH
REtfS0VZX1VwLCAgICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
TW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAg
IEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKLSAgICB7IEdES19LRVlfRG93biwgICAgICAgICAwLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJNb3ZlRG93biIgfSwKLSAgICB7IEdES19LRVlfS1BfRG93biwgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biIgfSwKLSAgICB7
IEdES19LRVlfRG93biwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAg
ICJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfRG93biwg
ICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBH
REtfS0VZX0tQX0hvbWUsICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2Rp
ZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgfSwKLSAg
ICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAg
ICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAg
ICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVUb0JlZ2lubmlu
Z09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0hvbWUs
ICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAg
ICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUi
IH0sCi0gICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIiB9LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxl
Y3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCIgfSwKLSAgICB7IEdES19LRVlf
S1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9F
bmRPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19DT05UUk9M
X01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxl
Y3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8
IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBH
REtfS0VZX1BhZ2VfVXAsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
TW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfUGFnZV9V
cCwgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9k
aWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9QYWdlX0Rvd24sICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIgfSwKLSAgICB7IEdES19LRVlf
S1BfUGFnZV9Eb3duLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFn
ZURvd24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgR0RLX1NISUZUX01BU0ssICAg
ICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRGVs
ZXRlLCAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3
YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIDAsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0RlbGV0ZSwg
ICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndh
cmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tT
cGFjZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dh
cmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX0JhY2tTcGFj
ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3
YXJkIiB9LAotICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAg
ICAgICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwKLSAgICB7IEdES19LRVlfYSwgICAgICAgICAg
ICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJVbnNlbGVjdCIgfSwKLSAgICB7
IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAg
ICJTZWxlY3RBbGwiIH0sCi0gICAgeyBHREtfS0VZX2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxlY3QiIH0sCi0gICAgeyBHREtfS0VZX3gsICAg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiQ3V0IiB9LAotICAg
IHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIkNvcHkiIH0sCi0gICAgeyBHREtfS0VZX3YsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFT
SywgICAgICAgICAgICAgICAgICAiUGFzdGUiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwg
ICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiQ3V0IiB9LAotICAgIHsgR0RL
X0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNv
cHkiIH0sCi0gICAgeyBHREtfS0VZX0tQX0luc2VydCwgICAgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiUGFzdGUiIH0KKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlTGVmdCJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9MZWZ0LCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVMZWZ0Il9zIH0sCisgICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtf
S0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92
ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIEdES19DT05U
Uk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkQmFja3dhcmQiX3MgfSwKKyAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ss
ICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdv
cmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvIl9zIH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0Il9zIH0s
CisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZVJpZ2h0Il9zIH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RL
X1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywg
ICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAor
ICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAg
ICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkRm9yd2FyZCJfcyB9
LAorICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJ
RlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsg
R0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywg
Ik1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9V
cCwgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCJf
cyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk1vdmVVcCJfcyB9LAorICAgIHsgR0RLX0tFWV9VcCwgICAgICAgICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlv
biJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIk1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RL
X0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0Rvd24sICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24iX3MgfSwKKyAgICB7IEdES19LRVlfRG93biwg
ICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93bkFuZE1v
ZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9Eb3duLCAgICAgIEdES19TSElG
VF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9z
IH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0hvbWUsICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZMaW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX1NISUZUX01B
U0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2Vs
ZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFT
SywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAg
IHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwg
ICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5p
bmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hv
bWUsICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5u
aW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQs
ICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9m
TGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSJfcyB9LAorICAgIHsgR0RLX0tFWV9F
bmQsICAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0Vu
ZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwK
KyAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50Il9zIH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAg
ICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1
bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAg
IEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVUb0VuZE9mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfUGFnZV9VcCwgICAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBH
REtfS0VZX0tQX1BhZ2VfVXAsICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TW92ZVBhZ2VVcCJfcyB9LAorICAgIHsgR0RLX0tFWV9QYWdlX1VwLCAgICAgIEdES19TSElGVF9N
QVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3Mg
fSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtf
S0VZX1BhZ2VfRG93biwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92
ZVBhZ2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIl9zIH0sCisgICAgeyBHREtfS0VZ
X1BhZ2VfRG93biwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBh
Z2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93
biwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9k
aWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0RlbGV0ZSwgICAgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9EZWxldGUsICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRl
bGV0ZUZvcndhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJP
TF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCJfcyB9LAorICAgIHsg
R0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
IkRlbGV0ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlQmFja3dhcmQiX3MgfSwKKyAg
ICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAg
ICAgICJEZWxldGVCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdE
S19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRCYWNrd2FyZCJfcyB9
LAorICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAg
ICAgICAgICAgIlNlbGVjdEFsbCJfcyB9LAorICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdE
S19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlVuc2VsZWN0Il9zIH0sCisgICAgeyBH
REtfS0VZX3NsYXNoLCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAi
U2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZX2JhY2tzbGFzaCwgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiVW5zZWxlY3QiX3MgfSwKKyAgICB7IEdES19LRVlfeCwg
ICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDdXQiX3MgfSwK
KyAgICB7IEdES19LRVlfYywgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtfS0VZX3YsICAgICAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiUGFzdGUiX3MgfSwKKyAgICB7IEdES19LRVlfS1Bf
RGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJDdXQiX3MgfSwK
KyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJDb3B5Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0luc2VydCwgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiUGFzdGUiX3MgfQogfTsKIAogVmVjdG9yPFN0cmlu
Zz4gS2V5QmluZGluZ1RyYW5zbGF0b3I6OmNvbW1hbmRzRm9yS2V5dmFsKHVuc2lnbmVkIGtleXZh
bCwgdW5zaWduZWQgbW9kaWZpZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKaW5kZXggYTg2YjM0ZGRhYThmNzE1ZTFjOTQ3Yjg5NDNj
ZWZkOTIxMzljNDEzMC4uZTMxODg5ZjM0NGM0YTYzZGY1ZTVlNjU5ZTI0MjFmNGM5MTA0OGNjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4u
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRpYyBTdHJpbmcgYmFja2VuZENvbW1hbmRzUGF0aCgp
CiAgICAgaWYgKCFDRlVSTEdldEZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbih1cmxSZWYuZ2V0KCks
IGZhbHNlLCByZWludGVycHJldF9jYXN0PFVJbnQ4Kj4ocGF0aCksIE1BWF9QQVRIKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBwYXRoOworICAgIHJldHVybiBTdHJpbmc6OmZy
b21VVEY4KHBhdGgpOwogfQogCiBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9y
U2VydmVyKFN0cmluZ1ZpZXcgYWRkcmVzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmNwcAppbmRleCBlNWE4YzNiNjllMTcyYWNkMDFmMmE2YTZmMjhiY2FlYzUzY2M1MWRjLi45
ZDdlNzFjMjI4OTFmMjIzMzQ2NmNhNjk3MTIzOTlhMjcyY2NlOWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgV2ViVmlldzo6V2Vi
VmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24sIEhXTkQgcGEKICAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRv
d1NpemUpOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCi0gICAgbV9wYWdlLT5zZXRV
UkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
Y3JlYXRlKCptX3BhZ2UpLCAiaW5zcGVjdG9yIik7CisgICAgbV9wYWdlLT5zZXRVUkxTY2hlbWVI
YW5kbGVyRm9yU2NoZW1lKFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6Y3JlYXRlKCpt
X3BhZ2UpLCAiaW5zcGVjdG9yIl9zKTsKICNlbmRpZgogCiAgICAgLy8gRklYTUU6IEluaXRpYWxp
emluZyB0aGUgdG9vbHRpcCB3aW5kb3cgaGVyZSBtYXRjaGVzIFdlYktpdCB3aW4sIGJ1dCBzZWVt
cyBsaWtlIHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4
IDUwNWQyMDVjYzUxNTdiOGYwMDc3MzY1NTBlNTZmYTVhNGFmZjRjNjcuLjQ0Y2JmNzNjNmFkMTU1
Y2UyNjI5ZTAxYTQ3NDk4YzI1MjhjZWM0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
UGFnZS5jcHAKQEAgLTczMywxMCArNzMzLDEwIEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2Vp
dmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiB7
CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGlmIChtZXNzYWdlTmFtZSA9PSBTdHJpbmcoIkdldFNu
YXBzaG90IikpIHsKLSAgICAgICAgU25hcHNob3RPcHRpb25zIHNuYXBzaG90T3B0aW9ucyA9IHN0
YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNz
YWdlLmdldCgiU25hcHNob3RPcHRpb25zIikpLT52YWx1ZSgpKTsKLSAgICAgICAgdWludDY0X3Qg
Y2FsbGJhY2tJRCA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoIkNhbGxi
YWNrSUQiKSktPnZhbHVlKCk7Ci0gICAgICAgIFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRp
Y19jYXN0PFNuYXBzaG90UmVnaW9uPihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2Uu
Z2V0KCJTbmFwc2hvdFJlZ2lvbiIpKS0+dmFsdWUoKSk7Ci0gICAgICAgIGJvb2wgdHJhbnNwYXJl
bnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJOjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRy
YW5zcGFyZW50QmFja2dyb3VuZCIpKS0+dmFsdWUoKTsKKyAgICAgICAgU25hcHNob3RPcHRpb25z
IHNuYXBzaG90T3B0aW9ucyA9IHN0YXRpY19jYXN0PFNuYXBzaG90T3B0aW9ucz4oc3RhdGljX2Nh
c3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RPcHRpb25zIl9zKSktPnZhbHVl
KCkpOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50
NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCJfcykpLT52YWx1ZSgpOworICAgICAgICBTbmFw
c2hvdFJlZ2lvbiByZWdpb24gPSBzdGF0aWNfY2FzdDxTbmFwc2hvdFJlZ2lvbj4oc3RhdGljX2Nh
c3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiU25hcHNob3RSZWdpb24iX3MpKS0+dmFsdWUo
KSk7CisgICAgICAgIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gc3RhdGljX2Nhc3Q8QVBJ
OjpCb29sZWFuKj4obWVzc2FnZS5nZXQoIlRyYW5zcGFyZW50QmFja2dyb3VuZCJfcykpLT52YWx1
ZSgpOwogCiAgICAgICAgIFJlZlB0cjxXZWJJbWFnZT4gc25hcHNob3RJbWFnZTsKICAgICAgICAg
V2ViUGFnZSogd2ViUGFnZSA9IHBhZ2UtPnByaXYtPndlYlBhZ2U7CkBAIC03NjUsMTAgKzc2NSwx
MCBAQCB2b2lkIHdlYmtpdFdlYlBhZ2VEaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJQYWdlKiBw
YWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYQogICAgICAgICB9CiAKICAgICAgICAgQVBJOjpE
aWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VSZXBseTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNl
dCgiUGFnZSIsIHdlYlBhZ2UpOwotICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lE
IiwgQVBJOjpVSW50NjQ6OmNyZWF0ZShjYWxsYmFja0lEKSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBs
eS5zZXQoIlNuYXBzaG90Iiwgc25hcHNob3RJbWFnZSk7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNu
YXBzaG90IiwgQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5w
dHIoKSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIlBhZ2UiX3MsIHdlYlBhZ2UpOworICAg
ICAgICBtZXNzYWdlUmVwbHkuc2V0KCJDYWxsYmFja0lEIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRl
KGNhbGxiYWNrSUQpKTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiU25hcHNob3QiX3MsIHNu
YXBzaG90SW1hZ2UpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1
bmRsZSgpLT5wb3N0TWVzc2FnZSgiV2ViUGFnZS5EaWRHZXRTbmFwc2hvdCJfcywgQVBJOjpEaWN0
aW9uYXJ5OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlUmVwbHkpKS5wdHIoKSk7CiAgICAgfSBlbHNl
CiAjZW5kaWYKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9N
RG9jdW1lbnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcAppbmRleCBmZTBkNDAxOGUzZjgw
OWM1ZjI3YmUzMmQ0NWFmZWYxYmY5MjAxYzgxLi5hOWNkYWM5YzA5MTE0ZTJkMTM2MjIzYTlhNzI1
ZWZlYWM1N2FhOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01E
b2N1bWVudEd0ay5jcHAKQEAgLTE5MDksOSArMTkwOSw5IEBAIGdjaGFyKiB3ZWJraXRfZG9tX2Rv
Y3VtZW50X2dldF92aXNpYmlsaXR5X3N0YXRlKFdlYktpdERPTURvY3VtZW50KiBzZWxmKQogICAg
IFdlYkNvcmU6OkRvY3VtZW50KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOwogICAgIHN3aXRj
aCAoaXRlbS0+dmlzaWJpbGl0eVN0YXRlKCkpIHsKICAgICBjYXNlIFdlYkNvcmU6OlZpc2liaWxp
dHlTdGF0ZTo6SGlkZGVuOgotICAgICAgICByZXR1cm4gY29udmVydFRvVVRGOFN0cmluZygiaGlk
ZGVuIik7CisgICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKCJoaWRkZW4iX3MpOwog
ICAgIGNhc2UgV2ViQ29yZTo6VmlzaWJpbGl0eVN0YXRlOjpWaXNpYmxlOgotICAgICAgICByZXR1
cm4gY29udmVydFRvVVRGOFN0cmluZygidmlzaWJsZSIpOworICAgICAgICByZXR1cm4gY29udmVy
dFRvVVRGOFN0cmluZygidmlzaWJsZSJfcyk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUu
Y3BwCmluZGV4IDQ1MmNmMGNjOGM3YTY2NTMwNDVmOWFlMTM1YTA1NGVlMDc2MzNkYTMuLjMzODRm
YTI1OGMyMGY0NDZmMjEyZGFlMmMyNGRjOWQ4MTIyYmFkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVk
aXRvckNsaWVudFdQRS5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBzdGF0aWMgY29uc3QgY2hhciog
aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKIHN0YXRpYyB2
b2lkIGhhbmRsZUtleVByZXNzKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgcGxhdGZvcm1FdmVudCkKIHsKLSAgICBTdHJpbmcg
Y29tbWFuZE5hbWUgPSBpbnRlcnByZXRLZXlFdmVudChldmVudCk7CisgICAgU3RyaW5nIGNvbW1h
bmROYW1lIHsgaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpIH07CiAKICAgICBpZiAoIWNvbW1hbmRO
YW1lLmlzRW1wdHkoKSkgewogICAgICAgICBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmRO
YW1lKS5leGVjdXRlKCk7CkBAIC0xOTAsNyArMTkwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlS2V5
UHJlc3MoRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1L
ZXkKIAogc3RhdGljIHZvaWQgaGFuZGxlS2V5RG93bihGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZl
bnQmIGV2ZW50LCBjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKQogewotICAgIFN0cmluZyBj
b21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFu
ZE5hbWUgeyBpbnRlcnByZXRLZXlFdmVudChldmVudCkgfTsKICAgICBpZiAoY29tbWFuZE5hbWUu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZDZiMzIyYTA5NjBmYzI0MjA0MTY0Y2E5OWM3ODM5
ZjU4NzM5MzIzNC4uYTJlMWMxMzE1MDUyN2EyZTAxNjUwNzEyYjQ5ZGU3ZWU5MWU2OTUwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM4NTIs
NyArMzg1Miw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUs
IFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAgICAgaWYgKGZyYW1lLT5zaG91
bGRFbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5UHJvdGVjdGlvbnMoKSkgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0sIEV4Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUg
SmF2YVNjcmlwdCBpbiBhIGZyYW1lIHRoYXQgaXMgbm90IGluIGFuIGFwcC1ib3VuZCBkb21haW4i
X3MsIDAsIDAsIEV4Y2VwdGlvbkRldGFpbHM6OlR5cGU6OkFwcEJvdW5kRG9tYWluIH0pOwogICAg
ICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkp
Ci0gICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGlu
amVjdGlvbiBmb3Igbm9uLWFwcCBib3VuZCBkb21haW4uIik7CisgICAgICAgICAgICBkb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6V2FybmluZywgIklnbm9yaW5nIHVzZXIgc2NyaXB0IGluamVjdGlvbiBmb3Igbm9uLWFwcCBi
b3VuZCBkb21haW4uIl9zKTsKICAgICAgICAgV0VCUEFHRV9SRUxFQVNFX0xPR19FUlJPUihMb2Fk
aW5nLCAicnVuSmF2YVNjcmlwdDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApp
bmRleCA5YmFhNzI4ODRhODkwNTZmNTc2NDg5MjJmMDJkYzc4MmIwODkxYWVkLi4xYzkzNjlkYzhi
OGQ4MzNkMWExNWIwNDNiYmQxZDYwM2NiYzc5MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcApAQCAtMTE0LDIyICsx
MTQsMjIgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFt
ZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgY29u
c3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBpZiAoc2VsZWN0aW9uLmlz
UmFuZ2UoKSkgewotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgImJvbGQiKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgaWYgKGVk
aXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIl9zKSA9
PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJp
YnV0ZXMgfD0gQXR0cmlidXRlQm9sZDsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNT
dHlsZShDU1NQcm9wZXJ0eUZvbnRTdHlsZSwgIml0YWxpYyIpID09IFRyaVN0YXRlOjpUcnVlKQor
ICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxl
LCAiaXRhbGljIl9zKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLSAgICAgICAgaWYgKGVk
aXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0lu
RWZmZWN0LCAidW5kZXJsaW5lIikgPT0gVHJpU3RhdGU6OlRydWUpCisgICAgICAgIGlmIChlZGl0
b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCwgInVuZGVybGluZSJfcykgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0
TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLSAgICAg
ICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIikgPT0gVHJpU3RhdGU6OlRydWUpCisgICAg
ICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCwgImxpbmUtdGhyb3VnaCJfcykgPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVN0
cmlrZVRocm91Z2g7CiAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7Ci0gICAg
ICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWln
aHQsICJib2xkIikpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIl9zKSkKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlQm9sZDsKLSAgICAgICAgaWYgKGVkaXRv
ci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikp
CisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUZv
bnRTdHlsZSwgIml0YWxpYyJfcykpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdB
dHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0
LCAidW5kZXJsaW5lIikpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHls
ZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIl9z
KSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlVW5kZXJsaW5lOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUo
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgImxpbmUtdGhyb3VnaCIp
KQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgImxpbmUtdGhyb3VnaCJfcykpCiAgICAgICAg
ICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVN0cmlrZVRo
cm91Z2g7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcAppbmRleCAyZjIx
ZjJiZWYzYzliYmY2MzEyMzUyMGNkZjlmODc5NjcxODVjYTAxLi5jMmZiY2JjOTA2OWM2MjQ3MTc3
OWI3ZWJjZDBlOWRlZjc4ZGRkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKQEAgLTg1
LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICBHVW5pcXVlT3V0UHRyPEdFcnJvcj4gZXJyb3I7
CiAgICAgICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGd0a19wcmludF9qb2JfZ2V0X3N1
cmZhY2UobV9wcmludEpvYi5nZXQoKSwgJmVycm9yLm91dFB0cigpKTsKICAgICAgICAgaWYgKCFz
dXJmYWNlKSB7Ci0gICAgICAgICAgICBwcmludERvbmUocHJpbnRFcnJvcihmcmFtZVVSTCgpLCBl
cnJvci0+bWVzc2FnZSkpOworICAgICAgICAgICAgcHJpbnREb25lKHByaW50RXJyb3IoZnJhbWVV
UkwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIHZvaWQgcHJpbnRKb2JDb21wbGV0ZShHdGtQcmludEpvYiosIFdlYlByaW50T3BlcmF0aW9u
R3RrVW5peCogcHJpbnRPcGVyYXRpb24sIGNvbnN0IEdFcnJvciogZXJyb3IpCiAgICAgewotICAg
ICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnREb25lKGVycm9yID8gcHJpbnRFcnJvcihwcmludE9w
ZXJhdGlvbi0+ZnJhbWVVUkwoKSwgZXJyb3ItPm1lc3NhZ2UpIDogV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcigpKTsKKyAgICAgICAgcHJpbnRPcGVyYXRpb24tPnByaW50RG9uZShlcnJvciA/IHByaW50
RXJyb3IocHJpbnRPcGVyYXRpb24tPmZyYW1lVVJMKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKSA6IFdlYkNvcmU6OlJlc291cmNlRXJyb3IoKSk7CiAgICAgICAgIHByaW50T3Bl
cmF0aW9uLT5tX3ByaW50Sm9iID0gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggNzFjMjlhOTBjMzc0ZmYw
MGVmMTJkYzA5ZmY0MjVlYzk2NDIxNGM0Ny4uMzRmZjJkNDA1ODc3ODhkMThhZmJmMDk2NmZlYTMy
ODVkOTNmYjFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0KQEAgLTcxMywyOSArNzEzLDI5IEBAIHZvaWQgV2ViUGFnZTo6Z2Vu
ZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUg
Y29tbWFuCiAgICAgCiAgICAgc3dpdGNoIChjb21tYW5kKSB7CiAgICAgY2FzZSBTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGU6OlVuZG86Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXli
b2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6IiwgInoiLAotICAgICAgICAieiIs
ICJLZXlaIl9zLAotICAgICAgICBAIlUrMDA1QSIsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBt
b2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1L
ZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ6Il9zLCAieiJfcywKKyAgICAg
ICAgInoiX3MsICJLZXlaIl9zLAorICAgICAgICAiVSswMDVBIl9zLCA5MCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6UmVkbzoKLSAgICAgICAga2V5RXZl
bnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInkiLCAi
eSIsCi0gICAgICAgICJ5IiwgIktleVkiX3MsCi0gICAgICAgIEAiVSswMDU5IiwgODksIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5
RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInki
X3MsICJ5Il9zLAorICAgICAgICAieSJfcywgIktleVkiX3MsCisgICAgICAgICJVKzAwNTkiX3Ms
IDg5LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dn
bGVCb2xkZmFjZToKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgImIiLCAiYiIsCi0gICAgICAgICJiIiwgIktleUIiX3MsCi0g
ICAgICAgIEAiVSswMDQyIiwgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgImIiX3MsICJiIl9zLAorICAgICAgICAiYiJfcywgIktl
eUIiX3MsCisgICAgICAgICJVKzAwNDIiX3MsIDY2LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVJdGFsaWM6Ci0gICAgICAgIGtleUV2ZW50ID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIiwgImkiLAot
ICAgICAgICAiaSIsICJLZXlJIl9zLAotICAgICAgICBAIlUrMDA0OSIsIDczLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50
ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJpIl9zLCAi
aSJfcywKKyAgICAgICAgImkiX3MsICJLZXlJIl9zLAorICAgICAgICAiVSswMDQ5Il9zLCA3Mywg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VG9nZ2xlVW5k
ZXJsaW5lOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9y
bUV2ZW50OjpLZXlEb3duLCAidSIsICJ1IiwKLSAgICAgICAgInUiLCAiS2V5VSJfcywKLSAgICAg
ICAgQCJVKzAwNTUiLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGlt
ZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0
Zm9ybUV2ZW50OjpLZXlEb3duLCAidSJfcywgInUiX3MsCisgICAgICAgICJ1Il9zLCAiS2V5VSJf
cywKKyAgICAgICAgIlUrMDA1NSJfcywgODUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVy
cywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC00MzI0LDcgKzQzMjQsNyBAQCBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1V
c2VyQWdlbnQoY29uc3QgVVJMJikgY29uc3QKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAg
ICAgaWYgKGRvY3VtZW50LT5xdWlya3MoKS5zaG91bGRBdm9pZFVzaW5nSU9TMTNGb3JHbWFpbCgp
ICYmIG9zTmFtZUZvclVzZXJBZ2VudCgpID09ICJpUGhvbmUgT1MiKQotICAgICAgICByZXR1cm4g
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEyXzFfMyIpOworICAg
ICAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKHsgfSwgIjEy
XzFfMyJfcyk7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKaW5kZXggYmI1MTJhZWMz
NDUwNmFhNTg4YTczNmI2ZGNmNmI2ZjNiNjY5ZTM0Mi4uNzY0NDNhOTQyNTRhZTRmZThlNThmODA3
YmFhNTIxNTZjMzY3ZDExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMjY4LDcgKzI2OCw3IEBAIGJvb2wgV2ViUGFn
ZTo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCYgZXZl
bnQpCiAgICAgaWYgKGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5ZG93bkV2ZW50ICYm
IGV2ZW50LnR5cGUoKSAhPSBldmVudE5hbWVzKCkua2V5cHJlc3NFdmVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQo
aW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSk7CisgICAgYXV0byBjb21tYW5kID0gZnJhbWUtPmVk
aXRvcigpLmNvbW1hbmQoU3RyaW5nIHsgaW50ZXJwcmV0S2V5RXZlbnQoJmV2ZW50KSB9KTsKIAog
ICAgIGlmIChrZXlFdmVudC0+dHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pIHsK
ICAgICAgICAgLy8gV2ViS2l0IGRvZXNuJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gYWJvdXQg
bW9kZSB0byBkZWNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENs
aWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLm1tCmluZGV4IGUwMTA0NTc0N2Y3NGM4MzMxOWQ0YTM5MTA2YzQzYTZjZTUwMjVhYjIu
LmI3ZmU4MDA0ZTQ4ZmY2ZTg5N2NhOTIyNmNkODViYjY1MGE2ZmQxOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODYsNyArODYsNyBA
QCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXIoKQogICAgIGlmICghbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSB7CiAjaWYg
UExBVEZPUk0oTUFDKSAmJiAhVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICAgICAgICAgLy8gVGhp
cyBpc24ndCBncmVhdCwgYnV0IGN1cnJlbnRseSB0aGUgb25seSB1c2VyIG9mIHdlYnB1c2hkIGlu
IG9wZW4gc291cmNlIGJ1aWxkcyBpcyBUZXN0V2ViS2l0QVBJIGFuZCBjb2RlU2lnbmluZ0lkZW50
aWZpZXIgcmV0dXJucyB0aGUgbnVsbCBTdHJpbmcgb24geDg2XzY0IE1hY3MuCi0gICAgICAgIG1f
aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJL
aXRBUEkiOworICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSAiY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwogI2Vsc2UKICAgICAgICAgaWYgKCFtX2hvc3RB
cHBBdWRpdFRva2VuKQogICAgICAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
ID0gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9N
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQppbmRleCAzOWQ4NjBjMjk1
YTdjMDhmMGE3Zjk2ODM5M2EzODM1NWI0MGY4NDQ2Li5hMjYyYmZjMTQwMjlmNDc2ZDQ0YWE3OWI3
ZmEwYTdiZjI2ODQxMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KQEAgLTcxNiw3
ICs3MTYsNyBAQCAtIChCT09MKV9tZWRpYVF1ZXJ5TWF0Y2hlcwogCiAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gbGluay5kb2N1bWVudCgpOwogICAgIGF1dG8gbWVkaWFRdWVyeVNldCA9IE1lZGlh
UXVlcnlTZXQ6OmNyZWF0ZShtZWRpYSwgTWVkaWFRdWVyeVBhcnNlckNvbnRleHQoZG9jdW1lbnQp
KTsKLSAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBkb2N1bWVudCwg
ZG9jdW1lbnQucmVuZGVyVmlldygpID8gJmRvY3VtZW50LnJlbmRlclZpZXcoKS0+c3R5bGUoKSA6
IG51bGxwdHIgfS5ldmFsdWF0ZShtZWRpYVF1ZXJ5U2V0LmdldCgpKTsKKyAgICByZXR1cm4gTWVk
aWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iX3MsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJW
aWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1
YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCmluZGV4
IDQyMDEwN2RhNjViNzZiNmQxMmM0YzQ1ODEzOWYzMDgyNThkOTNmZjMuLjA5OGY4ZWMyOTYwNmMw
Y2M0YTM3OWI2YzYxMWQwZGYyY2QwOWQ1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oCkBAIC0yNzUsNyAr
Mjc1LDcgQEAgaW5saW5lIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpjaGVja1NwZWxsaW5nT2ZTdHJp
bmcoU3RyaW5nVmlldywgaW50KiBtaXNzcGVsbGluZ0wKIAogaW5saW5lIFN0cmluZyBXZWJFZGl0
b3JDbGllbnQ6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0
IFN0cmluZyYpCiB7Ci0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwog
fQogCiBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrR3JhbW1hck9mU3RyaW5nKFN0
cmluZ1ZpZXcsIFZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0YWlsPiYsIGludCogYmFkR3JhbW1h
ckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KaW5kZXggNWViNWQ2YTE5ZTZkOTFmY2Iz
YmZjODFjY2E5MWVjN2UwZTU2YzQyOC4uYmMyYTMyZWEzMzk0YWEzODNkN2U2ZGZjMjI0ZTZmMGNm
OWJiNmJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJE
YXRhU291cmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0
YVNvdXJjZS5tbQpAQCAtMjA4LDcgKzIwOCw3IEBAIC0gKHZvaWQpX3NldERlZmVyTWFpblJlc291
cmNlRGF0YUxvYWQ6KEJPT0wpZmxhZwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2b2lk
KV9zZXRPdmVycmlkZVRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5nICopZW5jb2RpbmcKIHsKLSAg
ICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92ZXJyaWRlRW5jb2RpbmcoW2VuY29k
aW5nIFVURjhTdHJpbmddKTsKKyAgICB0b1ByaXZhdGUoX3ByaXZhdGUpLT5sb2FkZXItPnNldE92
ZXJyaWRlRW5jb2RpbmcoZW5jb2RpbmcpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBiN2FkMGQ2ODQ3NWJhMTc0NGM0MWQ5NjI4
MzA3MThkOTExOTBhMWQ4Li5mMTRmYTM5OTRmNGFmYWJiY2U1YjAxYjk5NDU3NTJkYTk5YTgxMWY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xODc2
LDcgKzE4NzYsNyBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOU1N0
cmluZyAqKXN0eWxlIGZyYW1lOihDR1JlY3QpZnJhbWUgcHJlZgogICAgIF9wcml2YXRlLT5wYWdl
LT5zZXR0aW5ncygpLnNldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGRp
c3BsYXlMaXN0RHJhd2luZ0VuYWJsZWRdKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5n
cygpLnNldEZvbnRGYWxsYmFja1ByZWZlcnNQaWN0b2dyYXBocyh0cnVlKTsKLSAgICBfcHJpdmF0
ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVt
b2ppIik7CisgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0UGljdG9ncmFwaEZvbnRG
YW1pbHkoIkFwcGxlQ29sb3JFbW9qaSJfcyk7CiAKICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGlu
Z3MoKS5zZXRTY3JpcHRNYXJrdXBFbmFibGVkKGZhbHNlKTsKICAgICBfcHJpdmF0ZS0+cGFnZS0+
c2V0dGluZ3MoKS5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQWNjZXNzaWJsZUJhc2UuY3BwCmluZGV4IDVkNjMwYTdkOWExMWM2OTBlZmQxZGM0MjY1MDlm
ZWRmMzRkY2E2NzQuLmMyOTBkYWUzNzk0MzllZWUzMTI4YmUzZDIzNTc2MGM3YzcwMzEwNTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKQEAgLTYyLDEzICs2
MiwxMyBAQCBBY2Nlc3NpYmxlQmFzZTo6QWNjZXNzaWJsZUJhc2UoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqLCBIV05EIHdpbmRvdykKICAgICBBU1NFUlRfQVJHKG9iaiwgb2JqKTsKICAgICBtX29i
amVjdC0+c2V0V3JhcHBlcih0aGlzKTsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2U6On5BY2Nlc3NpYmxl
QmFzZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkFjY2Vzc2libGVCYXNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJBY2Nl
c3NpYmxlQmFzZSJfcyk7CiB9CiAKIEFjY2Vzc2libGVCYXNlKiBBY2Nlc3NpYmxlQmFzZTo6Y3Jl
YXRlSW5zdGFuY2UoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBIV05EIHdpbmRvdykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcApp
bmRleCA5YTFmMDExMjIxYmMyMTQwMGJlZTg4N2VkMTExOWIzNjlmZmU2MDAzLi5hNWMwN2ViOTEy
ZmJiZjExNzE0YjZlOTg2NzY5YjI5NmY3M2Y5NzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCkBAIC0zNCwxMyArMzQsMTMg
QEAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlv
bmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjp+Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciX3MpOwogfQogCiBDT01Q
dHI8Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc+IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0
RG93bmxvYWREZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMWE4MGM0ZDZlOGUyMjJjZjA1NmE5N2I3MTk2NTA0ZDk2
N2FlMGZjMi4uMzAyZjYzN2FiYzAyNDEyNzRjYmUyMDUxMDY5YzI4OTVlN2Y2ZTBhZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNw
cApAQCAtNDUsMTMgKzQ1LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogRGVmYXVsdERv
d25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdh
dGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkRlZmF1bHREb3dubG9hZERlbGVnYXRl
Il9zKTsKIH0KIAogRGVmYXVsdERvd25sb2FkRGVsZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxl
Z2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSJfcyk7CiAgICAgSGFzaFNldDxJV2ViRG93bmxv
YWQqPjo6aXRlcmF0b3IgaSA9IG1fZG93bmxvYWRzLmJlZ2luKCk7CiAgICAgZm9yICg7aSAhPSBt
X2Rvd25sb2Fkcy5lbmQoKTsgKytpKQogICAgICAgICAoKmkpLT5SZWxlYXNlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcAppbmRleCBl
OGU1ZjVjNGNjMTFhMTIwODNiYmU0YjUxOGIyYzQ4NmVkNTY4Yzg5Li4xZmE4YzM1NGRmYmExMTc5
YmQ3M2UzNGRlZDJhODlkYjNkNGFlNTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCB0eXBlZGVm
IGVudW0gV2ViRXh0cmFOYXZpZ2F0aW9uVHlwZSB7CiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6OkRl
ZmF1bHRQb2xpY3lEZWxlZ2F0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIl9zKTsKIH0KIAogRGVmYXVsdFBvbGlj
eURlbGVnYXRlOjp+RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3Mp
OwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGUqIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6c2hh
cmVkSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKaW5k
ZXggMzYwYWVkY2VhY2NiMWZiZGQxZDQ0YWQ0MmQ4YzA0YzZmMDRiNjE5ZS4uOWRhNTk2MDU2NGE1
YjI2YjY1N2NkNmRhZTQwZjY2MzBiNjFhZGJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9N
ZW1vcnlTdHJlYW0uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgTWVtb3J5U3RyZWFtOjpNZW1vcnlT
dHJlYW0oUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgOiBtX2J1ZmZlcihXVEZN
b3ZlKGJ1ZmZlcikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIk1lbW9yeVN0cmVhbSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5
U3RyZWFtIl9zKTsKIH0KIAogTWVtb3J5U3RyZWFtOjp+TWVtb3J5U3RyZWFtKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiTWVtb3J5U3RyZWFt
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iX3MpOwogfQog
CiBDT01QdHI8TWVtb3J5U3RyZWFtPiBNZW1vcnlTdHJlYW06OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCmluZGV4IDZmNzU3YjM4NmQxNWY5MWYyOTZjNGU0ZDgw
NTI0ZjNhMmUzY2IxNjQuLmU5N2M0MTMyNDcxNjk3YzljZjE5Y2MxOWE1NjQ0OTllMjlhMDI1Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFn
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5j
cHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6V2ViQWN0aW9uUHJv
cGVydHlCYWcoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdAogICAgICwgbV9m
cmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVy
dHlCYWc6On5XZWJBY3Rpb25Qcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyJfcyk7CiB9CiAK
IFdlYkFjdGlvblByb3BlcnR5QmFnKiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFu
Y2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBSZWZQdHI8SFRNTEZvcm1FbGVtZW50
PiYmIGZvcm0sIFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkFwcGxpY2F0aW9uQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXggOGYyNzE2MmJiYWYxOGVlMWMxMThi
OTUxMWY1MWI0N2U0NDg1Nzc0Yy4uZjMxMDJlNTI2ODdlOWMyZDU1YmI2NmE4NzhiMDRhMWNkNjNh
ZTYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25D
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNo
ZS5jcHAKQEAgLTUwLDEzICs1MCwxMyBAQCBXZWJBcHBsaWNhdGlvbkNhY2hlOjpXZWJBcHBsaWNh
dGlvbkNhY2hlKCkKICAgICA6IG1fcmVmQ291bnQoMCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGljYXRpb25DYWNoZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7CiB9CiAKIFdlYkFw
cGxpY2F0aW9uQ2FjaGU6On5XZWJBcHBsaWNhdGlvbkNhY2hlKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXBwbGljYXRpb25DYWNoZSJfcyk7
CiB9CiAKIFdlYkFwcGxpY2F0aW9uQ2FjaGUqIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OmNyZWF0ZUlu
c3RhbmNlKCkKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hl
UGF0aCgpCiAKIFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBXZWJBcHBsaWNhdGlv
bkNhY2hlOjpzdG9yYWdlKCkKIHsKLSAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Um
IHN0b3JhZ2UgPSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y3JlYXRlKGFwcGxpY2F0aW9uQ2Fj
aGVQYXRoKCksICJBcHBsaWNhdGlvbkNhY2hlIikubGVha1JlZigpOworICAgIHN0YXRpYyBBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpj
cmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiX3MpLmxlYWtS
ZWYoKTsKIAogICAgIHJldHVybiBzdG9yYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cmNoaXZlLmNwcAppbmRleCA4MTU3OTk2MTA3NjdlMGJiOWFkMjI0NTY3ZDcyNWNkM2NkY2RiMWZm
Li4xN2RlYmM0ODdlNTQyZmNlM2I3MmY2YzMxNTVjOTA5NmU0MDI2OWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIFdlYkFyY2hpdmU6
OldlYkFyY2hpdmUoUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+JiYgY29yZUFyY2hpdmUpCiAjZW5k
aWYKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQXJjaGl2ZSJfcyk7CiB9
CiAKIFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQXJjaGl2ZSJfcyk7CiB9CiAKIEhSRVNVTFQgV2ViQXJjaGl2ZTo6
UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZP
YmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2Fy
ZExpc3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAppbmRleCA5MDRhYzJkMjgxMDQ3ODJkYmUyM2U2OWM0N2EwYTQxY2VhYWZhYTUyLi4xMTZhYTQy
MDE3NjhkODI1NDU5N2Q2YTUxMWM1Yjk4MjM1MDdmNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgV2ViQmFj
a0ZvcndhcmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QoUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4m
JiBiYWNrRm9yd2FyZExpc3QKICAgICBiYWNrRm9yd2FyZExpc3RXcmFwcGVycygpLnNldChtX2Jh
Y2tGb3J3YXJkTGlzdC5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiX3MpOwogfQogCiBXZWJCYWNrRm9yd2Fy
ZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQpAQCAtNjUsNyArNjUsNyBAQCBXZWJCYWNrRm9y
d2FyZExpc3Q6On5XZWJCYWNrRm9yd2FyZExpc3QoKQogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBw
ZXJzKCkucmVtb3ZlKG1fYmFja0ZvcndhcmRMaXN0LmdldCgpKTsKIAogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9
CiAKIFdlYkJhY2tGb3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5j
ZShSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNhY2hlLmNwcAppbmRleCBkZTg1MGU3MTNiMDM0ODkwYzU1NzM2MTRiMzM2ODJk
ZTI4OTRhYzhjLi44YjE2YjQzZDQxZjlmMzM4NGU4MGMyOGFhNWEyODEyYzE1ZGViMzJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCkBAIC00NywxMyArNDcsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDYWNoZTo6V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZTo6fldlYkNhY2hl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViQ2FjaGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNhY2hlIl9zKTsK
IH0KIAogV2ViQ2FjaGUqIFdlYkNhY2hlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKaW5kZXggMzU2OTgzYzUyYjM3NDhh
NGNkYmNhNWFkOTFmOTUzNTEyYTg4OWJlMC4uZjEzMTZkZTQ2YzIxMzVhNmQyNmZhYjlkMTQ0ZGVi
M2Y4MWYwODkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0
YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0
aWNzLmNwcApAQCAtNDgsMTMgKzQ4LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2Vi
Q29yZVN0YXRpc3RpY3M6OldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29y
ZVN0YXRpc3RpY3M6On5XZWJDb3JlU3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDb3JlU3RhdGlzdGljcyJfcyk7CiB9CiAKIFdl
YkNvcmVTdGF0aXN0aWNzKiBXZWJDb3JlU3RhdGlzdGljczo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAt
MTQ5LDcgKzE0OSw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQcm90
ZWN0ZWRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8KICAgICBJdGVyYXRvciBlbmQg
PSBqc09iamVjdFR5cGVOYW1lcy0+ZW5kKCk7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGludD4gdHlw
ZUNvdW50TWFwOwogICAgIGZvciAoSXRlcmF0b3IgY3VycmVudCA9IGpzT2JqZWN0VHlwZU5hbWVz
LT5iZWdpbigpOyBjdXJyZW50ICE9IGVuZDsgKytjdXJyZW50KQotICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KGN1cnJlbnQtPmtleSwgY3VycmVudC0+dmFsdWUpOworICAgICAgICB0eXBlQ291bnRN
YXAuc2V0KFN0cmluZyB7IGN1cnJlbnQtPmtleSB9LCBjdXJyZW50LT52YWx1ZSk7CiAKICAgICBD
T01QdHI8SVByb3BlcnR5QmFnMj4gcmVzdWx0cyhBZG9wdENPTSwgQ09NUHJvcGVydHlCYWc8aW50
Pjo6Y3JlYXRlSW5zdGFuY2UodHlwZUNvdW50TWFwKSk7CiAgICAgcmVzdWx0cy5jb3B5UmVmVG8o
dHlwZU5hbWVzQW5kQ291bnRzKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBIUkVTVUxUIFdlYkNvcmVT
dGF0aXN0aWNzOjpqYXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyhfQ09NX091dHB0cl9vcHRfIElQ
cm9wZXJ0eQogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAg
ICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBj
dXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1
cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52
YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0s
IGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFk
b3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXAp
KTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMjk2LDEz
ICsyOTYsMTMgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6bWVtb3J5U3RhdGlzdGljcyhf
Q09NX091dHB0cl9vcHRfIElQcm9wZXJ0eUJhZyoqIHN0YXQKICAgICBHbG9iYWxNZW1vcnlTdGF0
aXN0aWNzIGdsb2JhbE1lbW9yeVN0YXRzID0gZ2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOwogCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIGxvbmcgbG9uZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPiBmaWVsZHM7Ci0gICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRl
cyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3Mu
cmVzZXJ2ZWRWTUJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZN
Qnl0ZXMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0
aWNzLmNvbW1pdHRlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jRnJlZUxp
c3RCeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRp
c3RpY3MuZnJlZUxpc3RCeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6
ZSIsIGhlYXBTaXplKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiLCBoZWFw
RnJlZSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdFN0YWNrU2l6ZSIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOwotICAg
IGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5KSVRCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkZh
c3RNYWxsb2NSZXNlcnZlZFZNQnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9u
Zz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MucmVzZXJ2ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFk
ZCgiRmFzdE1hbGxvY0NvbW1pdHRlZFZNQnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOworICAgIGZp
ZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nIGxvbmc+KGZhc3RNYWxsb2NTdGF0aXN0aWNzLmZyZWVMaXN0Qnl0ZXMpKTsKKyAgICBm
aWVsZHMuYWRkKCJKYXZhU2NyaXB0SGVhcFNpemUiX3MsIGhlYXBTaXplKTsKKyAgICBmaWVsZHMu
YWRkKCJKYXZhU2NyaXB0RnJlZVNpemUiX3MsIGhlYXBGcmVlKTsKKyAgICBmaWVsZHMuYWRkKCJK
YXZhU2NyaXB0U3RhY2tTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGds
b2JhbE1lbW9yeVN0YXRzLnN0YWNrQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0
SklUU2l6ZSJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlT
dGF0cy5KSVRCeXRlcykpOwogCiAgICAgKnN0YXRpc3RpY3MgPSBDT01Qcm9wZXJ0eUJhZzx1bnNp
Z25lZCBsb25nIGxvbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPjo6YWRvcHQo
ZmllbGRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggMjExNTk4ZDM5YTZhZjM2MWNjMmU0
MDY3OTA2ZTJiODY4NTdlZWZjMS4uYjlmNDEwOTM1OWIzNmQ1MWNhY2E0MzMzOGQ5MjkxZDI1ZmNk
ODYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC00NTQsNyArNDU0LDcgQEAgYm9vbCBXZWJF
ZGl0b3JDbGllbnQ6OmRvVGV4dEZpZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlLCBLZXli
b2FyZEV2ZW50KiBrZSkKICAgICAgICAgaWYgKGRvbUVsZW1lbnQpIHsKICAgICAgICAgICAgIElE
T01IVE1MSW5wdXRFbGVtZW50KiBkb21JbnB1dEVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoU1VD
Q0VFREVEKGRvbUVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NSFRNTElucHV0RWxlbWVu
dCwgKHZvaWQqKikmZG9tSW5wdXRFbGVtZW50KSkpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcg
Y29tbWFuZCA9IG1fd2ViVmlldy0+aW50ZXJwcmV0S2V5RXZlbnQoa2UpOworICAgICAgICAgICAg
ICAgIFN0cmluZyBjb21tYW5kIHsgbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSkgfTsK
ICAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBjb21tYW5kcyBoZXJlIGJlY2F1c2Ug
dGhlIGFwcCBjb2RlIGFjdHVhbGx5IGRlcGVuZHMgb24gdGhpcyBiZWluZyBjYWxsZWQgZm9yIGFs
bCBrZXkgcHJlc3Nlcy4KICAgICAgICAgICAgICAgICAvLyBXZSBtYXkgd2FudCB0byByZXZpc2l0
IHRoaXMgbGF0ZXIgYmVjYXVzZSBpdCBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIHRvIHNlbmQg
YW4gZW1wdHkgY29tbWFuZC4KICAgICAgICAgICAgICAgICBmb3JtRGVsZWdhdGUtPmRvUGxhdGZv
cm1Db21tYW5kKGRvbUlucHV0RWxlbWVudCwgQlN0cmluZyhjb21tYW5kKSwga2l0KGUtPmRvY3Vt
ZW50KCkuZnJhbWUoKSksICZyZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRGF0YVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcAppbmRleCA5ZTAzMWQ5ZWZiNzlkOTRhOWQzNTYyYjA2ZGJkZWYyNzFlNWQ4Yzcz
Li5mNzhjMWJkMmE4NTJiNzRmMTZkODIwMzU3ZmE2Mjc5ZjIxNmNmNWU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBXZWJEYXRh
U291cmNlOjpXZWJEYXRhU291cmNlKFdlYkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAg
V2ViRGF0YVNvdXJjZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkRhdGFTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkRhdGFTb3VyY2UiX3MpOwogfQogCiBXZWJEYXRhU291cmNlOjp+V2ViRGF0YVNvdXJjZSgp
CkBAIC02Niw3ICs2Niw3IEBAIFdlYkRhdGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKICAgICAg
ICAgbV9sb2FkZXItPmRldGFjaERhdGFTb3VyY2UoKTsKICAgICBXZWJEYXRhU291cmNlQ291bnQt
LTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRGF0YVNvdXJj
ZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2UqIFdlYkRhdGFTb3VyY2U6OmNyZWF0ZUluc3RhbmNl
KFdlYkRvY3VtZW50TG9hZGVyKiBsb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA2NzY3NzIwMzE1YzM5MzNjZGMyMmU0MjUyZTNl
YTMzOGZmODkyNTQ2Li44ZjM3NjU0MTI1NmRjNmFlZDEwN2UwNTEzMTM4ZjBlZjMzMTQzZTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAg
LTE2MCwxMyArMTYwLDEzIEBAIFdlYkRhdGFiYXNlTWFuYWdlciogV2ViRGF0YWJhc2VNYW5hZ2Vy
OjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJEYXRhYmFzZU1hbmFnZXI6OldlYkRhdGFiYXNlTWFuYWdl
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YkRhdGFiYXNlTWFuYWdlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJh
c2VNYW5hZ2VyIl9zKTsKIH0KIAogV2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5h
Z2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiAvLyBJVW5rbm93biAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAppbmRleCA5
MmQwZmE3MmNkNmY0MjhhNTJhMWMxMDhhODhlN2UzYTE5MWQ2N2YzLi4yNTZhMzU4ODA3ZDdlYTI1
ODJjNjZiNjI4ZWVjM2M5MTkwMTI4MzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0zNSw3ICszNSw3IEBAIFdlYkRvY3VtZW50TG9hZGVy
OjpXZWJEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFN1YnN0CiAgICAgLCBtX2RldGFjaGVkRGF0YVNvdXJjZSgwKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogfQogCiBSZWY8
V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgZGF0YSkKQEAgLTQ2LDcg
KzQ2LDcgQEAgUmVmPFdlYkRvY3VtZW50TG9hZGVyPiBXZWJEb2N1bWVudExvYWRlcjo6Y3JlYXRl
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKIFdlYkRvY3VtZW50TG9hZGVyOjp+V2Vi
RG9jdW1lbnRMb2FkZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRG9jdW1lbnRMb2FkZXIiX3MpOwogICAgIGlmIChtX2RhdGFTb3VyY2UpIHsK
ICAgICAgICAgQVNTRVJUKCFtX2RldGFjaGVkRGF0YVNvdXJjZSk7CiAgICAgICAgIG1fZGF0YVNv
dXJjZS0+UmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCmlu
ZGV4IGFmNzk1MmE3ZTc1NmFiMTZjZWVjNmViMWU0YWRkM2ZhZGMyZmQ3MzkuLjk5NDY5MDQ1NTFj
MGNjNmQxY2UxY2JlOTI4OGNhNzNhOGJiNjhmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJEb3dubG9hZC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBXZWJEb3dubG9hZDo6V2ViRG93bmxvYWQoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9hZDo6fldlYkRvd25sb2Fk
KCkKQEAgLTYxLDcgKzYxLDcgQEAgV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCgpCiAgICAgTE9H
KERvd25sb2FkLCAiV2ViRG93bmxvYWQgLSBEZXN0cm95aW5nIGRvd25sb2FkICglcCkiLCB0aGlz
KTsKICAgICBjYW5jZWwoKTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRvd25sb2FkIl9zKTsKIH0KIAogV2ViRG93bmxvYWQqIFdlYkRvd25sb2FkOjpjcmVhdGVJ
bnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9h
ZENGTmV0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3Bw
CmluZGV4IDE4MTBhNjY4NTgxODExMGU3N2M2OTlkNjAwYmZjOGFiN2QxNDZjZjQuLmZjNjRiOWJj
OTk5N2Q4NDIwYWI1YzE3MDljMzE5ZjkyNTJjMTg3NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgSFJFU1VMVCBX
ZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoX0luX29wdF8gSVdlYlVS
TEF1dGhlbnRpY2F0aW8KICAgICB9CiAKICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCBhIFVSTCBv
ciBkZXNjcmlwdGlvbiBmb3IgdGhpcyBlcnJvciBjb2RlPwotICAgIFJlc291cmNlRXJyb3IgZXJy
b3IoU3RyaW5nKFdlYlVSTEVycm9yRG9tYWluKSwgV2ViVVJMRXJyb3JVc2VyQ2FuY2VsbGVkQXV0
aGVudGljYXRpb24sIFVSTCgpLCAiIik7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmco
V2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlv
biwgVVJMKCksIGVtcHR5U3RyaW5nKCkpOwogICAgIENPTVB0cjxXZWJFcnJvcj4gd2ViRXJyb3Io
QWRvcHRDT00sIFdlYkVycm9yOjpjcmVhdGVJbnN0YW5jZShlcnJvcikpOwogICAgIG1fZGVsZWdh
dGUtPmRpZEZhaWxXaXRoRXJyb3IodGhpcywgd2ViRXJyb3IuZ2V0KCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEcm9wU291cmNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCmluZGV4IDZiYWJmOTBiODlmYTNjOWQ2OTk1
Y2RjN2I5Yjc4Y2U3NTI3ZTY2OTAuLjViMWM1ZGZjN2U4NzFiYjBkODhlZjI3YmY2ZjRjNGFmZTY0
MjY5MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwCkBAIC01
MywxMyArNTMsMTMgQEAgV2ViRHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZShXZWJWaWV3KiB3ZWJW
aWV3KQogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBXZWJEcm9wU291cmNlOjp+V2Vi
RHJvcFNvdXJjZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRyb3BTb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRyb3BTb3VyY2UiX3MpOwogfQogCiBTVERNRVRIT0RJTVAgV2ViRHJvcFNvdXJjZTo6UXVl
cnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVy
dHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFn
LmNwcAppbmRleCA4YWZiYTBmNmQ1M2FmZDU1NTg0NWMxOTUzNmMyYTljMWVjNWYzN2QwLi5jNjFm
MTcyZDQ3ZmIzMTc4YjllMDc0YzI3OTgzZGFlYzIxYTBlNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKQEAgLTQ2LDEzICs0Niwx
MyBAQCBXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9wZXJ0eUJhZyhjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCiAgICAgOiBtX3Jlc3VsdChtYWtlVW5pcXVlPEhpdFRlc3RS
ZXN1bHQ+KHJlc3VsdCkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViRWxlbWVudFByb3BlcnR5
QmFnOjp+V2ViRWxlbWVudFByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQog
CiBXZWJFbGVtZW50UHJvcGVydHlCYWcqIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5z
dGFuY2UoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RXJyb3IuY3BwCmluZGV4IDE5ZGUzNzFiZWExYzExNmZkNzY2ZDZhMzk0ZGI0ZWE4MGZiZGJmYzIu
LjcxNjEyMTkyMzNlYmMxMGFjMjgyMzI1NmRmZGYzNzM2ZmY5NzgxMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFcnJvci5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBXZWJFcnJvcjo6V2ViRXJy
b3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIElQcm9wZXJ0eUJhZyogdXNlckluZm8pCiAg
ICAgLCBtX2Vycm9yKGVycm9yKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RXJyb3IiX3MpOwogfQogCiBXZWJFcnJvcjo6fldlYkVycm9yKCkKIHsKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVycm9yIl9zKTsKIH0KIAogV2ViRXJyb3IqIFdlYkVy
cm9yOjpjcmVhdGVJbnN0YW5jZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5
QmFnKiB1c2VySW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZy
YW1lLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAppbmRleCA1OTQ4
YjBlYzViODBkMjc5YjI2NDM0ZjQyZjQ1Y2ZhMTdiZjdmYmNhLi4wN2JkNDZmYzk5OGUxOGUzNjc4
MzJjNjBhY2ZhNzQ2YmViOGU2NjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CkBAIC0yNDMsNyArMjQzLDcgQEAgV2ViRnJhbWU6OldlYkZyYW1lKCkKIHsKICAgICBXZWJGcmFt
ZUNvdW50Kys7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkZyYW1lIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJGcmFtZSJfcyk7CiB9
CiAKIFdlYkZyYW1lOjp+V2ViRnJhbWUoKQpAQCAtMjUxLDcgKzI1MSw3IEBAIFdlYkZyYW1lOjp+
V2ViRnJhbWUoKQogICAgIGRlbGV0ZSBkOwogICAgIFdlYkZyYW1lQ291bnQtLTsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWUq
IFdlYkZyYW1lOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC01NjMsNyArNTYzLDcgQEAgdm9pZCBXZWJG
cmFtZTo6bG9hZERhdGEoUmVmPFdlYkNvcmU6OkZyYWdtZW50ZWRTaGFyZWRCdWZmZXI+JiYgZGF0
YSwgQlNUUiBtaW1lVHkKIHsKICAgICBTdHJpbmcgbWltZVR5cGVTdHJpbmcobWltZVR5cGUsIFN5
c1N0cmluZ0xlbihtaW1lVHlwZSkpOwogICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgIG1pbWVU
eXBlU3RyaW5nID0gInRleHQvaHRtbCI7CisgICAgICAgIG1pbWVUeXBlU3RyaW5nID0gInRleHQv
aHRtbCJfczsKIAogICAgIFN0cmluZyBlbmNvZGluZ1N0cmluZyh0ZXh0RW5jb2RpbmdOYW1lLCBT
eXNTdHJpbmdMZW4odGV4dEVuY29kaW5nTmFtZSkpOwogCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBI
UkVTVUxUIFdlYkZyYW1lOjpzZWxlY3RBbGwoKQogICAgIGlmICghY29yZUZyYW1lKQogICAgICAg
ICByZXR1cm4gRV9VTkVYUEVDVEVEOwogCi0gICAgaWYgKCFjb3JlRnJhbWUtPmVkaXRvcigpLmNv
bW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKSkKKyAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCkpCiAgICAgICAgIHJldHVybiBFX0ZB
SUw7CiAKICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkZyYW1lUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggYWZlZDJiNGU2YTQyYjk4MjhhMmU0NDc3
NzQxY2Q1NDc2MjczOTA3Ny4uOTQ0NjhiYjczZDA2NTI2NjAwYjRlOGU1YWRjZDZiOTBkZjk2OGUx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lci5jcHAKQEAgLTM5LDEzICszOSwxMyBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKICAgICA6IG1fZnJhbWUo
V1RGTW92ZShmcmFtZSkpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBXZWJGcmFtZVBvbGljeUxp
c3RlbmVyOjp+V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkZyYW1lUG9saWN5TGlzdGVuZXIiX3Mp
OwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpj
cmVhdGVJbnN0YW5jZShSZWZQdHI8RnJhbWU+JiYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCmluZGV4
IGRhNGMyMjc3OTZiNzQwNmMyNWNmMjE4OTA5ZDViZTBhMWE3NWMwOTkuLjY4OTJmNzcxYWRkZDFh
OTM4ZWExNDQzNDAzYzk3ZjM0OWIwYjgzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwCkBAIC00MiwxMyAr
NDIsMTMgQEAgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6V2ViR2VvbG9jYXRpb25Qb2xp
Y3lMaXN0ZW5lcihSZWZQdHI8R2VvbG9jYXRpb24+JiYKICAgICAsIG1fZ2VvbG9jYXRpb24oV1RG
TW92ZShnZW9sb2NhdGlvbikpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiBX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjp+V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIiX3MpOwogfQogCiAvLyBJVW5rbm93
biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0
aW9uUG9zaXRpb24uY3BwCmluZGV4IDkyNGM0OGIxM2M0MTY1ZmZlOGYwODhjODdkMDZkZjQ5YzYw
MzQ2YjUuLmZmMWZkOTBjNDM3OTMwM2RlMzVjMDRlMDc4MjFlMTkwMzU0ZmMxMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwCkBA
IC0zNiwxMyArMzYsMTMgQEAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9zaXRpb24+IFdlYkdlb2xv
Y2F0aW9uUG9zaXRpb246OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246
OldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJHZW9sb2NhdGlvblBvc2l0aW9uIl9zKTsKIH0KIAogV2ViR2Vv
bG9jYXRpb25Qb3NpdGlvbjo6fldlYkdlb2xvY2F0aW9uUG9zaXRpb24oKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJHZW9sb2NhdGlvblBv
c2l0aW9uIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpRdWVyeUlu
dGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3Bw
CmluZGV4IDQ2YWFhZTk3ZDdiYmJkNmVjZDM2NzBiYTk0YTNiYTNjY2ZmZjg5YmUuLjg2YTNjYjZk
YWEyOWUyMjUwYzMxNTc5MTM1ZDNkMzc3ZTJhZmRkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcApAQCAtNDIsNyArNDIsNyBAQCBX
ZWJIVE1MUmVwcmVzZW50YXRpb246OldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiB7CiAgICAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJIVE1MUmVw
cmVzZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQpAQCAtNTQsNyArNTQsNyBAQCBX
ZWJIVE1MUmVwcmVzZW50YXRpb246On5XZWJIVE1MUmVwcmVzZW50YXRpb24oKQogCiAgICAgV2Vi
SFRNTFJlcHJlc2VudGF0aW9uQ291bnQtLTsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSFRNTFJlcHJlc2VudGF0aW9uIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iX3MpOwogfQogCiBXZWJI
VE1MUmVwcmVzZW50YXRpb24qIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6Y3JlYXRlSW5zdGFuY2Uo
V2ViRnJhbWUqIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRl
eCAzZjFlYjZkNzM4YmQzYTI0NWExY2Y0ZWJiODYwZWY0OTQ5MjFmNTVmLi41MGE4ZTVmNmJjZjMw
YWE0ODQ1NGJlMGQ5ZTEyYjljOGQxM2EzYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJI
aXN0b3J5LmNwcApAQCAtODksNyArODksNyBAQCBzdGF0aWMgaW5saW5lIENPTVB0cjxJUHJvcGVy
dHlCYWc+IGNyZWF0ZVVzZXJJbmZvRnJvbUhpc3RvcnlJdGVtKEJTVFIgbm90aWZpY2F0aQogV2Vi
SGlzdG9yeTo6V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkhpc3RvcnkiX3MpOwogCiAgICAgbV9wcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpz
aGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCk7CiB9CkBAIC05Nyw3ICs5Nyw3IEBAIFdlYkhpc3Rv
cnk6OldlYkhpc3RvcnkoKQogV2ViSGlzdG9yeTo6fldlYkhpc3RvcnkoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5Il9zKTsKIH0KIAogV2ViSGlz
dG9yeSogV2ViSGlzdG9yeTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCmluZGV4IGZiODhlMzllN2I1NmFjMzJkY2Y1Y2Y1MDExYzM1
NDgxNzFhNmMzYmUuLjhkZDliZGFhYTI4ODcwYzBjZjM0MmMyNDgyNzEyNWU2YWE1MzA1MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgV2ViSGlzdG9yeUl0ZW06OldlYkhpc3RvcnlJdGVtKFJlZlB0cjxIaXN0b3J5SXRlbT4m
JiBoaXN0b3J5SXRlbSkKICAgICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkuc2V0KG1faGlzdG9yeUl0
ZW0uZ2V0KCksIHRoaXMpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJIaXN0b3J5SXRlbSJfcyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0o
KQpAQCAtNjIsNyArNjIsNyBAQCBXZWJIaXN0b3J5SXRlbTo6fldlYkhpc3RvcnlJdGVtKCkKICAg
ICBoaXN0b3J5SXRlbVdyYXBwZXJzKCkucmVtb3ZlKG1faGlzdG9yeUl0ZW0uZ2V0KCkpOwogCiAg
ICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3Rv
cnlJdGVtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIaXN0b3J5SXRlbSJf
cyk7CiB9CiAKIFdlYkhpc3RvcnlJdGVtKiBXZWJIaXN0b3J5SXRlbTo6Y3JlYXRlSW5zdGFuY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKaW5kZXggZjYyMTlhNjZk
YWE5NWRjNTYyMjQxNWIzZjk5MDM3NWU3YjdmYjcyYy4uNDQ3ZDkyYTNhM2NjZGE1NmEyMjUyYjgy
NjRjNjU0NTU4YWM2MmVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3Iu
Y3BwCkBAIC01MSwxMyArNTEsMTMgQEAgV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViVmll
dyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWMKICAgICBBU1NF
UlRfQVJHKGluc3BlY3RlZFdlYlZpZXcsIGluc3BlY3RlZFdlYlZpZXcpOwogCiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkluc3BlY3RvciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIl9zKTsKIH0KIAogV2ViSW5zcGVj
dG9yOjp+V2ViSW5zcGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCogV2ViSW5zcGVjdG9yOjpmcm9udGVuZENsaWVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwCmluZGV4IGM4ZTRiZThhYzIxYmRi
NjYxOGQ1YmNiMTJiMTk5NjVjOTI5MTdjOWMuLjc1ODY2MjcyZDVmN2RjYjNhNWEwODYyZWJjOWE0
MTdmZWI3MmIzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFT
Y3JpcHRDb2xsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFT
Y3JpcHRDb2xsZWN0b3IuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpXZWJKYXZhU2NyaXB0Q29sbGVjdG9yKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2
YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSmF2YVNj
cmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJKYXZh
U2NyaXB0Q29sbGVjdG9yKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViSmF2YVNjcmlwdENvbGxlY3RvciJfcyk7CiB9CiAKIFdlYkphdmFT
Y3JpcHRDb2xsZWN0b3IqIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCmluZGV4
IGNlODYyMGZkNGJkNzdjN2VlZjhkYjhkNzQ2NDNmOTUyYTNhZjFhNTYuLjZlZTA3MjUzMmVlNDA5
MWFhY2EyMGY0ODFiYTMzZGQxMDNiNGRjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcApAQCAtNjksMTMgKzY5LDEzIEBAIFdlYktpdENsYXNz
RmFjdG9yeTo6V2ViS2l0Q2xhc3NGYWN0b3J5KENMU0lEIHRhcmdldENsYXNzKQogICAgIFdlYkNv
cmU6OnBvcHVsYXRlSklUT3BlcmF0aW9ucygpOwogCiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdENsYXNzRmFjdG9yeSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Il9zKTsKIH0KIAogV2ViS2l0Q2xhc3NG
YWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiAvLyBJ
VW5rbm93biAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJLaXRNZXNzYWdlTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNz
YWdlTG9vcC5jcHAKaW5kZXggOTM3YTY2NjllOTA4ZmVlNjA3YmM0MWQ1YjkyNzdjN2E2MDFkZWQ2
OS4uZTY5YzBjODA4OThiZjcxNTA4YjAzMmQ5OTIxOGJkMTJmNzU5NWFlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBACiBXZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQog
CiBXZWJLaXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3Ai
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdE1lc3NhZ2VMb29wIl9zKTsK
IH0KIAogV2ViS2l0TWVzc2FnZUxvb3AqIFdlYktpdE1lc3NhZ2VMb29wOjpjcmVhdGVJbnN0YW5j
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRTdGF0aXN0aWNz
LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCmluZGV4
IDEyNjNiYzBjMTFmOThmMWRmZWM3ZWY4ZGY3OGU5YmRmOGJhYzkwY2QuLmY1MTUxY2JlMGJiNmY2
ZDA2MjMzOWE0OTBiZGZjYjQ3N2E4ZjRlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdFN0YXRpc3RpY3MuY3BwCkBAIC00NiwxMyArNDYsMTMgQEAgaW50IFdlYkZyYW1lVmll
d0NvdW50OwogV2ViS2l0U3RhdGlzdGljczo6V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0Ns
YXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3Mi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQog
CiBXZWJLaXRTdGF0aXN0aWNzOjp+V2ViS2l0U3RhdGlzdGljcygpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdFN0YXRpc3RpY3MiX3MpOwogfQog
CiBXZWJLaXRTdGF0aXN0aWNzKiBXZWJLaXRTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKaW5k
ZXggNWM5MTI1NzcyNTI2OWViYjM0MjUwM2NjNzEwMzE5NGMzMTE1ZTVlNy4uMjQ0MTA2Njg4Njc2
ZjU3MmI5NmQ5MjViZmYxYWIwNTY4ZTZhZGE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QoYm9vbCBpc011dGFibGUpCiAgICAg
OiBtX2lzTXV0YWJsZShpc011dGFibGUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIFdlYk11dGFibGVV
UkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtOTMs
NyArOTMsNyBAQCBXZWJNdXRhYmxlVVJMUmVxdWVzdCogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNy
ZWF0ZUltbXV0YWJsZUluc3RhbmNlKGNvbnN0IFJlc291cgogV2ViTXV0YWJsZVVSTFJlcXVlc3Q6
On5XZWJNdXRhYmxlVVJMUmVxdWVzdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJNdXRhYmxlVVJMUmVxdWVzdCJfcyk7CiB9CiAKIC8vIElV
bmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5hdmlnYXRpb25EYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRp
b25EYXRhLmNwcAppbmRleCBiYzRmMjY4NGFkMTZjOTQ4NWFmYTc1MDNhMjMzMzFhODI3NmYyNjcw
Li42YTkzM2FiYjVmODcyNmFhZTJmMWYxOTJiZjgwNWM0YmMyY2RjNTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCkBAIC03MiwxMyArNzIsMTMg
QEAgV2ViTmF2aWdhdGlvbkRhdGE6OldlYk5hdmlnYXRpb25EYXRhKGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2UKIAogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9u
RGF0YTo6fldlYk5hdmlnYXRpb25EYXRhKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYk5hdmlnYXRpb25EYXRhIl9zKTsKIH0KIAogV2ViTmF2aWdh
dGlvbkRhdGEqIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVhdGVJbnN0YW5jZShjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgSVdlYlVSTFJlcXVlc3QqIHJlcXVlc3QsIElXZWJV
UkxSZXNwb25zZSogcmVzcG9uc2UsIGJvb2wgaGFzU3Vic3RpdHV0ZURhdGEsIGNvbnN0IFN0cmlu
ZyYgY2xpZW50UmVkaXJlY3RTb3VyY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90
aWZpY2F0aW9uLmNwcAppbmRleCBmNTNiYjcyNjM1M2Y3NmFjYTA2OGE4ZGZkYzdmOGIxNDkxZGQ2
MzM4Li45NDkyNTZlZTgwMjJmYzRhM2Q3MTdmMWEzOWE4YzU5YTFmMDVjN2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKQEAgLTQzLDcgKzQzLDcgQEAg
V2ViTm90aWZpY2F0aW9uOjpXZWJOb3RpZmljYXRpb24oQlNUUiBuYW1lLCBJVW5rbm93biogYW5P
YmplY3QsIElQcm9wZXJ0eUJhZyogdXMKICAgICAgICAgbV91c2VySW5mby0+QWRkUmVmKCk7CiAK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZp
Y2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iX3Mp
OwogfQogCiBXZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQpAQCAtNTYsNyArNTYs
NyBAQCBXZWJOb3RpZmljYXRpb246On5XZWJOb3RpZmljYXRpb24oKQogICAgICAgICBtX3VzZXJJ
bmZvLT5SZWxlYXNlKCk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJOb3RpZmljYXRpb24iX3MpOwogfQogCiBXZWJOb3RpZmljYXRpb24qIFdlYk5vdGlm
aWNhdGlvbjo6Y3JlYXRlSW5zdGFuY2UoQlNUUiBuYW1lIC8qPTAqLywgSVVua25vd24qIGFuT2Jq
ZWN0IC8qPTAqLywgSVByb3BlcnR5QmFnKiB1c2VySW5mbyAvKj0wKi8pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA5MjUzMmRi
ZGNhNDFiODUzMWU5MTY4Y2RkZGUzMWI1N2E3ZjQ1NmI1Li42Y2Q4ODQyZTdhMDY3NWVhYTBhZmNh
MzBmMGQ4NmZlOGJjZDdhZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Yk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTU3LDEzICs1NywxMyBAQCBXZWJOb3RpZmljYXRp
b25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiAgICAgOiBkKG1ha2VVbmlxdWU8V2Vi
Tm90aWZpY2F0aW9uQ2VudGVyUHJpdmF0ZT4oKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiX3MpOwogfQogCiBXZWJO
b3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25DZW50ZXIoKQogewogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb25D
ZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNl
bnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlciogV2ViTm90aWZpY2F0aW9uQ2Vu
dGVyOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJl
bmNlcy5jcHAKaW5kZXggOWNmOGNjMDJhMjFjZGRlYmIwZWQ4NDk5ZmZlOTQwZjZlNGYxODQzNC4u
ZmIxNzNkZDVjMWU1MDY1MWVjMzk0OTE3ZGQ3YjI3MjhmZDBhNzdlYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTQ3LDEzICsxNDcsMTMgQEAgV2Vi
UHJlZmVyZW5jZXMqIFdlYlByZWZlcmVuY2VzOjpzaGFyZWRTdGFuZGFyZFByZWZlcmVuY2VzKCkK
IFdlYlByZWZlcmVuY2VzOjpXZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2Vz
Ojp+V2ViUHJlZmVyZW5jZXMoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViUHJlZmVyZW5jZXMiX3MpOwogfQogCiBXZWJQcmVmZXJlbmNlcyogV2ViUHJl
ZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291
cmNlLmNwcAppbmRleCA5NDNmYTdhYjQ1YzhiMGQzNWQ2N2EzMGMwZmRhYjQzNDlhM2U2NGE5Li4z
YmJhMzFlMzlkOTU2OTY4YmMyZTc2ZGIxOWRiZDRkZmVjYTJiOTI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViUmVzb3VyY2U6
OldlYlJlc291cmNlKElTdHJlYW0qIGRhdGEsIGNvbnN0IFdURjo6VVJMJiB1cmwsIGNvbnN0IFdU
Rjo6U3RyaW5nJgogICAgICwgbV9mcmFtZU5hbWUoZnJhbWVOYW1lKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZTo6
fldlYlJlc291cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlJlc291cmNlIl9zKTsKIH0KIAogV2ViUmVzb3VyY2UqIFdlYlJlc291cmNlOjpjcmVhdGVJ
bnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNjcmlwdE9iamVjdC5jcHAKaW5kZXggYjhmZTMwN2NiODZiMDEyYzFmNTM5MWEyOGI0NmEw
NTljOWIwZThkYy4uZGYwNzgxZjQxMjM5YjcwNDViNDcwN2M1YmE5YjYzZmYwOTkzZGZjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCkBAIC0zNCwxMyAr
MzQsMTMgQEAKIFdlYlNjcmlwdE9iamVjdDo6V2ViU2NyaXB0T2JqZWN0KCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0T2JqZWN0Iik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiX3MpOwogfQogCiBX
ZWJTY3JpcHRPYmplY3Q6On5XZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIC8vIElV
bmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlNjcmlwdFdvcmxkLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxk
LmNwcAppbmRleCAyNjgxMDFhNmMwZjA2YjNiMGYxNzIwZGY5NTA1NWViNDAzNzMzNjQ4Li43ZWY4
YTQ1MzQ2MTFiZDhkMjE2NzIzZmVlYWFmMDE3ZTIzOWQ2MGZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIGlubGluZSBXZWJT
Y3JpcHRXb3JsZDo6V2ViU2NyaXB0V29ybGQoUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4mJiB3b3Js
ZCkKICAgICBhbGxXb3JsZHMoKS5hZGQobV93b3JsZC5nZXQoKSwgdGhpcyk7CiAKICAgICArK2dD
bGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdFdvcmxkIl9zKTsKIH0KIAogV2Vi
U2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCkBAIC01Niw3ICs1Niw3IEBAIFdlYlNjcmlw
dFdvcmxkOjp+V2ViU2NyaXB0V29ybGQoKQogICAgIGFsbFdvcmxkcygpLnJlbW92ZShtX3dvcmxk
LmdldCgpKTsKIAogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
U2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZCogV2ViU2NyaXB0V29ybGQ6OnN0
YW5kYXJkV29ybGQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2Vj
dXJpdHlPcmlnaW4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmln
aW4uY3BwCmluZGV4IDk0NWI4NjkyM2Y2YjFmY2E3ZDBiNDc3N2YwY2QwNjAwMjQ2YTEwMDAuLmVl
ZjE2NDNiNjE3YzI0ZDMwNDNhMWJmMDA2YjZkMTIxN2M4ZTE4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKQEAgLTQ5LDEzICs0OSwxMyBAQCBX
ZWJTZWN1cml0eU9yaWdpbjo6V2ViU2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luKQogICAgIDogbV9zZWN1cml0eU9yaWdpbihzZWN1cml0eU9yaWdpbikKIHsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlP
cmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlY3VyaXR5T3JpZ2luIl9z
KTsKIH0KIAogV2ViU2VjdXJpdHlPcmlnaW46On5XZWJTZWN1cml0eU9yaWdpbigpCiB7CiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5
T3JpZ2luIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZWN1cml0eU9yaWdp
biJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCmluZGV4IDhiYjgwYTJmY2Ey
OTI3ZTI0Y2ZkMDBmODYxNmNiNjE3NTc2MTVlZWQuLjdmMTFkZjVmZmUxNjUxMTFhZjE1OTUzNDQ2
YmY3MTJjZmRkNmQyYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNl
cmlhbGl6ZWRKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJp
YWxpemVkSlNWYWx1ZS5jcHAKQEAgLTMyLDEzICszMiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAg
ICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZXJpYWxpemVkSlNW
YWx1ZSJfcyk7CiB9CiAKIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjp+V2ViU2VyaWFsaXplZEpTVmFs
dWUoKQogewogICAgIC0tZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJTZXJpYWxpemVkSlNWYWx1ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiX3MpOwogfQogCiBDT01QdHI8V2ViU2VyaWFsaXplZEpTVmFs
dWU+IFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcAppbmRleCA2MjA3YjU2YTdmNjc4OWM4N2Ez
NzMyNzdmY2RkNTliZWY4MjM1OGVkLi4wNDUzNWYzZjcyMzE2ZjQyYTMxMDk3Y2Y2MDM4NWVlZTBj
MWU4NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVy
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAK
QEAgLTQwLDEzICs0MCwxMyBAQCBXZWJUZXh0UmVuZGVyZXIqIFdlYlRleHRSZW5kZXJlcjo6Y3Jl
YXRlSW5zdGFuY2UoKQogV2ViVGV4dFJlbmRlcmVyOjpXZWJUZXh0UmVuZGVyZXIoKQogewogICAg
IGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJUZXh0UmVuZGVy
ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciJfcyk7CiB9
CiAKIFdlYlRleHRSZW5kZXJlcjo6fldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0NsYXNzQ291
bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlRleHRSZW5kZXJlciIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0KIAog
SFJFU1VMVCBXZWJUZXh0UmVuZGVyZXI6OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQs
IF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCmluZGV4IDU5
Nzg4YzRmNWUyNGY4OTViZmFlNDNjNjA1OTFhNDVhZmUzZDY2NTEuLjQwYjdiNjZmYTdhYWQxYmFl
ZTI2N2Y2MWQxZDcxMzcxNGIzZjQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKQEAgLTQ2LDEzICs0
NiwxMyBAQCBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpbwogICAgICwgbV9zZW5kZXIoc2VuZGVyKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpjcmVhdGVJbnN0YW5jZShjb25z
dCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKaW5kZXggMzVhODQ1ZWQ2OTNjYTA1ZGM3NmRlNjM1Njdi
Y2U2ZmU5ZGRjYTZmMS4uNTA5OWJhMGFmMTdiZTNjMzdjNzk5ZmYwNTdiZjAwYTFmOWJjNjI5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcApAQCAtNDIsMTMgKzQyLDEzIEBAIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNlbmRlcihSZWZQdHI8CiB7CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXI6On5XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciJfcyk7CiB9CiAKIFdl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVNlbmRlcjo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2xpZW50PiYmIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlVSTENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3Jl
ZGVudGlhbC5jcHAKaW5kZXggZTc1OTQ2YjI4NDI1NDcyZTgxYmNmN2IzOGY5YjBjMzE4OTYxNjE5
Zi4uYTUzMWQxMDY5OTUyZTlkNTYyYjE0ZDI2ZWFlYzg1M2Y2NDYyZmU4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAKQEAgLTM3LDEzICszNywxMyBA
QCBXZWJVUkxDcmVkZW50aWFsOjpXZWJVUkxDcmVkZW50aWFsKGNvbnN0IENyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpCiAgICAgOiBtX2NyZWRlbnRpYWwoY3JlZGVudGlhbCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7CiB9CiAKIFdl
YlVSTENyZWRlbnRpYWw6On5XZWJVUkxDcmVkZW50aWFsKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQ3JlZGVudGlhbCJfcyk7CiB9CiAKIFdl
YlVSTENyZWRlbnRpYWwqIFdlYlVSTENyZWRlbnRpYWw6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCmluZGV4
IDE5ZWQ5NmY4MjEwZDg5MzlhOWVlY2EyYzUxYTJkODM0YmU4MDBlNTAuLjMxYjA5YWM0Y2I0NDQw
ZmRlOTE3ZjQ2NTBlZTE2ZTZhMzQ1Y2M4NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVS
TFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwCiAgICAgOiBtX3Byb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3Bh
Y2UpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTFByb3RlY3Rpb25TcGFjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJM
UHJvdGVjdGlvblNwYWNlIl9zKTsKIH0KIAogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjp+V2ViVVJM
UHJvdGVjdGlvblNwYWNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90
ZWN0aW9uU3BhY2UqIFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCmluZGV4IGE1YjIzZGJmYTU0
OTRjM2UwODMyZWFkNjg0ZTRmYmJlNzA4YmI1MDguLjYxMjI5NmNiNTUwMGQ2YTRlNmQ1YTRiN2Nh
NDc5Mjc1YTRkY2E5YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAKQEAgLTIxNSwyMCArMjE1LDIwIEBAIHN0YXRpYyBTdHJpbmcgbG9jYWxpemVkU2hvcnRE
ZXNjcmlwdGlvbkZvclN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCiBXZWJVUkxSZXNwb25zZTo6
V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNl
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVVJMUmVzcG9uc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFJl
c3BvbnNlIl9zKTsKIH0KIAogV2ViVVJMUmVzcG9uc2UqIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJ
bnN0YW5jZSgpCiB7CiAgICAgV2ViVVJMUmVzcG9uc2UqIGluc3RhbmNlID0gbmV3IFdlYlVSTFJl
c3BvbnNlKCk7CiAgICAgLy8gZmFrZSBhbiBodHRwIHJlc3BvbnNlIC0gc28gaXQgaGFzIHRoZSBJ
V2ViSFRUUFVSTFJlc3BvbnNlIGludGVyZmFjZQotICAgIGluc3RhbmNlLT5tX3Jlc3BvbnNlID0g
UmVzb3VyY2VSZXNwb25zZShXVEY6OlVSTCh7IH0sICJodHRwOi8vIiksIFN0cmluZygpLCAwLCBT
dHJpbmcoKSk7CisgICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdU
Rjo6VVJMKCJodHRwOi8vIl9zKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKICAgICBpbnN0YW5j
ZS0+QWRkUmVmKCk7CiAgICAgcmV0dXJuIGluc3RhbmNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggNDgxMjM4
NDcxM2M4Yjk5ZGE1Y2JhNWI2M2YyNTQ0NDlmZTUwYzY0Mi4uZWRmMzM1ODZiMWEwMTNhYjE4ZmIw
NTc4MjNmYTkxOGY1Y2RmMWYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCkBAIC0zNSwxMyArMzUsMTMgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiBpbmxpbmUgV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpXZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4oKQogewogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiJfcyk7CiB9CiAKIFdlYlVz
ZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAg
LS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVzZXJDb250
ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNv
bnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogQ09NUHRyPFdlYlVzZXJDb250ZW50VVJMUGF0dGVy
bj4gV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlZpZXcuY3BwCmluZGV4IGRiNjJkYzY1NTkzNGY2NjFlMDA3ZWUxMmQwZDE5NDVk
M2I3OGZjOWIuLmU1NWEyNDJkY2ViMmM1Njc5NGU0Mjk4ODAzN2RiZTg4OTI1NjM1YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCkBAIC00NDYsNyArNDQ2LDcgQEAgV2ViVmlldzo6
V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVmlldyIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXc6On5XZWJWaWV3KCkKQEAgLTQ2OSw3ICs0
NjksNyBAQCBXZWJWaWV3Ojp+V2ViVmlldygpCiAKICAgICBXZWJWaWV3Q291bnQtLTsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVmlldyJfcyk7CiB9CiAKIFdlYlZpZXcq
IFdlYlZpZXc6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTE5OTUsMTEgKzE5OTUsMTEgQEAgYm9vbCBX
ZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLypsUGFyYW0qLykKICAg
ICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpOwogICAgIHN3aXRjaCAoTE9XT1JEKHdQYXJhbSkpIHsKICAgICAgICAgY2FzZSBTZWxl
Y3RBbGw6Ci0gICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0
QWxsIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBjYXNlIFVuZG86Ci0gICAgICAg
ICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIl9zKS5leGVjdXRl
KCk7CiAgICAgICAgIGNhc2UgUmVkbzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3Io
KS5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLmNvbW1hbmQoIlJlZG8iX3MpLmV4ZWN1dGUoKTsKICAgICB9CiAgICAgcmV0dXJuIGZh
bHNlOwogfQpAQCAtMjE0Nyw3ICsyMTQ3LDcgQEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVFZGl0aW5n
S2V5Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgp
ICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNv
bW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQp
KTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBp
bnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkg
PT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24n
dCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZSBob3cgY29tbWFu
ZHMgdGhhdCBqdXN0IGluc2VydCB0ZXh0IGlmIGV4ZWN1dGVkIHZpYSBFZGl0b3Igc2hvdWxkIGJl
IHRyZWF0ZWQsCkBAIC00NzI1LDcgKzQ3MjUsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHkoX0lu
X29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJl
dHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CisgICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5k
KCJDb3B5Il9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3MzQsNyAr
NDczNCw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y3V0KF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRl
ciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJDdXQiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJDdXQiX3MpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc0Myw3ICs0NzQzLDcgQEAgSFJFU1VMVCBXZWJWaWV3
OjpwYXN0ZShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7
CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb21tYW5kKCJQYXN0ZSJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQog
CkBAIC00NzUyLDcgKzQ3NTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OmNvcHlVUkwoX0luXyBCU1RS
IHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1f
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29w
eVVSTChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgIiIpOworICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29weVVS
TChNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSwgZW1wdHlTdHJpbmcoKSk7CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NzMsNyArNDc3Myw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6ZGVsZXRlXyhfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIikuZXhlY3V0
ZSgpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCku
ZWRpdG9yKCkuY29tbWFuZCgiRGVsZXRlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJz
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5j
cHAKaW5kZXggMDQ1MThmYWQxYTc2MmJlNmNjNzBkNjhjMzViZjkwYWZhMTg1OTg2OC4uMmU5MzFl
MDhlNzcyNjdiMjIzMTA3YTU4Mzg4MWE1NDlkN2VmMTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcApAQCAtOTAsMTEgKzkwLDExIEBAIFdlYldv
cmtlcnNQcml2YXRlKiBXZWJXb3JrZXJzUHJpdmF0ZTo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViV29y
a2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KIAogV2ViV29ya2Vy
c1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJXb3JrZXJzUHJpdmF0ZSJfcyk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmE5MmE3MDBiYzNi
YmMxZThmNTNiMmVmNTUxMzExY2FmMTc2ZjllYS4uMDAyYWZkNTkxM2YxNTkwOWM5OTU1ZDExOTgz
OGE3ODE0OTc5ZGRhOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIyLTA0LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVj
dG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHA6CisgICAgICAg
IChmaW5kRm9udEZhbGxiYWNrKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVhZEFs
bENodW5rcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJr
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVm
b3hCcm93c2VyUXVpcmspOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50
Rm9yVVJMSGFzTWFjUGxhdGZvcm1RdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3Nl
cnRVc2VyQWdlbnRGb3JVUkxIYXNFbXB0eVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tp
ZXMuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Q3VybDo6VEVTVF9GKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW06Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlv
bi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW06CisgICAgICAgIChjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RT
ZXR0aW5ncyk6CisgICAgICAgIChpbml0aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0
aW5ncyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVz
dEF1dG9tYXRpb25TZXNzaW9uLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFNTTC5jcHA6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RVSUNsaWVudC5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld1dpbmRvd1Byb3Bl
cnRpZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2Vi
RXh0ZW5zaW9ucy5jcHA6CisgICAgICAgICh0ZXN0V2ViRXh0ZW5zaW9uUGFnZUlEKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYktpdFRlc3RTZXJ2ZXI6OmFkZFdlYlNvY2tldEhhbmRsZXIpOgorICAgICAg
ICAoV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29ja2V0VVJJRm9yUGF0aCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQYXRoIGNvbnN0KToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhv
dXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBXZWJW
aWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRz
cGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmN1cnJlbnRTdGF0ZVZhbHVlIGNvbnN0KToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3Vw
cG9ydGVkKToKKyAgICAgICAgKFdUUjo6eG1sUm9sZVZhbHVlU3RyaW5nKToKKyAgICAgICAgKFdU
Ujo6cm9sZVZhbHVlVG9TdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURl
c2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0
ZWRSb2xlU3RyaW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1
ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGll
cmFyY2hpY2FsTGV2ZWwgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphcmlhSXNHcmFiYmVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXJpYURyb3BFZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAoV1RSOjp0b0pTT05PYmpl
Y3QpOgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDoKKyAgICAgICAg
KHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKwogMjAyMi0wNC0wNCAgSm9uYXRoYW4gQmVkYXJkICA8
amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2dpdC13ZWJraXQgY2Fub25pY2FsaXplXSBT
dXBwb3J0IG11bHRpcGxlIGVtcHR5IGxpbmVzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1
bXBSZW5kZXJUcmVlLmNwcAppbmRleCBjZjdiNzg5YjM1ZWExZWY3MmJkNmM4ZTY0ZTM5NjkwOGRj
OGMxNzZhLi5lMTk2NjhjY2Q3NDliYmU5YTY4OGUwNjg0MzcwODhmZDM2NThhZjg2IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKQEAgLTExMDQsNyArMTEw
NCw3IEBAIHN0YXRpYyB2b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoKQogCiBzdGF0aWMg
U3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogewotICAgIFN0
cmluZyBwYXRoVG9Gb250RmFsbGJhY2sgPSBGaWxlU3lzdGVtOjpwYXJlbnRQYXRoKHBhdGhPclVy
bCk7CisgICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBh
dGgoU3RyaW5nOjpmcm9tVVRGOChwYXRoT3JVcmwpKTsKIAogICAgIHdjaGFyX3QgZnVsbFBhdGhb
X01BWF9QQVRIXTsKICAgICBpZiAoIV93ZnVsbHBhdGgoZnVsbFBhdGgsIHBhdGhUb0ZvbnRGYWxs
YmFjay53aWRlQ2hhcmFjdGVycygpLmRhdGEoKSwgX01BWF9QQVRIKSkKQEAgLTExMTUsNyArMTEx
NSw3IEBAIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JV
cmwpCiAKICAgICBTdHJpbmcgcGF0aFRvQ2hlY2sgPSBmdWxsUGF0aDsKIAotICAgIHN0YXRpYyBj
b25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiOworICAgIHN0YXRpYyBjb25z
dCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5kIHRo
ZSBsYXlvdXQgdGVzdCByb290IG9uIHRoZSBjdXJyZW50IHBhdGg6CiAgICAgc2l6ZV90IGxvY2F0
aW9uID0gcGF0aFRvQ2hlY2suZmluZChsYXlvdXRUZXN0cyk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9zc1RocmVhZFRhc2suY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcAppbmRleCA1MmMwYmNkNDE5Njk5
OGE2MGM4MzkyYjRmODIyYTc4YjUyNjE0N2Y4Li5mYTYxOGJiMWI3OWI3MGQ3NTcxZTVhNTdiMTUz
MDQ1NmM1YmFlMjRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9D
cm9zc1RocmVhZFRhc2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Ny
b3NzVGhyZWFkVGFzay5jcHAKQEAgLTExMywxNSArMTEzLDE1IEBAIFRFU1QoV1RGX0Nyb3NzVGhy
ZWFkVGFzaywgQmFzaWMpCiAgICAgfQogCiAgICAgQVNTRVJUX0VRKDF1LCBkZWZhdWx0Q29uc3Ry
dWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNl
dC5jb3VudCgiPGRlZmF1bHQ+LTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25z
dHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDF1
LCBuYW1lQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCIpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG5hbWVD
b25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTAtMCJfcykpOwogCiAgICAgQVNTRVJUX0VRKDN1
LCBjb3B5Q29uc3RydWN0b3JTZXQuc2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEoMXUsIGNvcHlDb25z
dHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMnUsIGNvcHlD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMCIpKTsKLSAgICBBU1NFUlRfRVEoMXUs
IGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCIpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMCJfcykpOworICAgIEFT
U0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0wIl9zKSk7
CisgICAgQVNTRVJUX0VRKDF1LCBjb3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0y
LTAiX3MpKTsKIAogI2lmICFDT01QSUxFUihNU1ZDKQogICAgIEFTU0VSVF9FUSg2dSwgbW92ZUNv
bnN0cnVjdG9yU2V0LnNpemUoKSk7CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBURVNUKFdURl9Dcm9z
c1RocmVhZFRhc2ssIEJhc2ljKQogICAgIC8vIFRoaXMgc2VlbXMgdG8gYmUgY2F1c2VkIGJ5IGRp
ZmZlcmVuY2VzIGluIE1TVkMncyBpbXBsZW1lbnRhdGlvbiBvZiBsYW1iZGFzIG9yIHN0ZCBmdW5j
dGlvbnMgbGlrZSBzdGQ6Om1ha2VfdHVwbGUuCiAgICAgQVNTRVJUX0VRKDl1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuc2l6ZSgpKTsKICNlbmRpZgotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVj
dG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0
cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0yIikpOwotICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNv
bnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIikpOwotICAgIEFTU0VSVF9FUSgxdSwg
bW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0yIikpOwotICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0xIikpOwotICAgIEFT
U0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMS0yIikpOwor
ICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0xIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0x
LTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRl
ZmF1bHQ+LTItMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMi0yIl9zKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVD
b25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTEtMiJfcykpOwogCiAjaWYgIUNPTVBJTEVS
KE1TVkMpCiAgICAgQVNTRVJUX0VRKDEydSwgdG90YWxEZXN0cnVjdG9yQ2FsbHMpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFyc2Vycy5jcHAKaW5kZXgg
ZmZiYTAwYjgwMjFhNWE0NmI4MzFhM2I5N2M0NWRiNGJmM2I0NThlYi4uZTgwNzA3NGY0Y2M1ZGRj
OTM5NWYxM2Y4YjgzMTcyNGM1OTlhMjllOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwCkBAIC01OSwzMiArNTksMzIgQEAgVEVTVChI
VFRQUGFyc2VycywgUGFyc2VDcm9zc09yaWdpblJlc291cmNlUG9saWN5SGVhZGVyKQogI2lmIFVT
RShHTElCKQogVEVTVChIVFRQUGFyc2VycywgVmFsaWRhdGVVc2VyQWdlbnRWYWx1ZXMpCiB7Ci0g
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkiKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0
IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LzEwLjAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCBXZWJLaXQv
MTYzIChNb3ppbGxhOyBsaWtlIEdlY2tvKSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNl
ckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAo
PC0gRW1wdHkgY29tbWVudCkiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJTYWZhcmkgKGxlZnQgcGFyZW4gXFwoIGFzIHF1b3RlZCBwYWlyKSIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8
fiAobm9uLWFscGhhbnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9rZW4g
Y2hhcmFjdGVycykiKSk7Ci0gICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJhIChzaW5nbGUgY2hhcmFjdGVyIHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdCJfcykpOworICAgIEVYUEVD
VF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAiX3MpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQv
MTYzIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJT
YWZhcmkvMTAuMCBXZWJLaXQiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1v
emlsbGE7IGxpa2UgR2Vja28pIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgKGNvbW1lbnQgKG5lc3RlZCBjb21tZW50KSkiX3MpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAoKSAoPC0g
RW1wdHkgY29tbWVudCkiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoIlNhZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIl9zKSk7Cisg
ICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIhIyQlJicqKy0uXl9g
fH4gKG5vbi1hbHBoYW51bWVyaWMgdG9rZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIjAxMjM0NTY3ODkgKG51bWVyaWMgdG9r
ZW4gY2hhcmFjdGVycykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVh
ZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFyYWN0ZXIgdG9rZW4pIl9zKSk7CiAKLSAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgIikpOwotICAgIEVYUEVDVF9GQUxT
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiBTYWZhcmkgKGxlYWRpbmcgd2hpdGVzcGFj
ZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGlu
ZyBuZXdsaW5lKVxuIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIikpOwotICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5h
dGVkIGNvbW1lbnQiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpIHVub3BlbmVkIGNvbW1hbmVudCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0
ZXIpIikpOwotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiV1BFXFwgV2ViS2l0IChxdW90ZWQgcGFpciBpbiB0b2tl
bikiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEy
MyAobWlzc2luZyBwcm9kdWN0IHRva2VuKSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCIgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSJfcykpOworICAg
IEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxp
bmcgd2hpdGVzcGFjZSkgIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiXG5TYWZhcmkgKGxlYWRpbmcgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xp
bmUpXG4iX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJTYWZhcmkvIChubyB2ZXJzaW9uIHRva2VuIGFmdGVyIHNsYXNoKSJfcykpOworICAgIEVYUEVD
VF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodW50ZXJtaW5hdGVk
IGNvbW1lbnQiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkgdW5vcGVuZWQgY29tbWFuZW50KSJfcykpOworICAgIEVYUEVDVF9GQUxTRShp
c1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlx4MUIgKGNvbnRhaW5zIGNvbnRyb2wgY2hhcmFj
dGVyKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaS9cbjEwLjAgKGVtYmVkZWQgbmV3bGluZSkiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGlu
IHRva2VuKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFs
dWUoIi8xMjMgKG1pc3NpbmcgcHJvZHVjdCB0b2tlbikiX3MpKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU2hhcmVkQnVmZmVyLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCmlu
ZGV4IGIwMTEyOGIyNmIxY2MwYTIwNWM2NTQxYTQ4NTZiN2YwMmY0OGJjNzYuLjA3YTQ1ZTBlZjQx
NGJmNzQ5NzEyOTJmYzFjYzJhYTg3NDhhZGQ1MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwCkBAIC0zNjQsNyArMzY0LDcgQEAg
VEVTVF9GKEZyYWdtZW50ZWRTaGFyZWRCdWZmZXJUZXN0LCBjb3B5SXNDb250aWd1b3VzKQogdGVt
cGxhdGU8IHR5cGVuYW1lIFQsIHNpemVfdCBOID4KIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlzaXpl
KCBjb25zdCBUICgmKVtOXSApIHsgcmV0dXJuIE47IH0KIAotc3RhdGljIHZvaWQgcmVhZEFsbENo
dW5rcyhzdGQ6OnZlY3RvcjxTdHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXIm
IGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IgPSAiXHJcbiIsIGJvb2wgaW5jbHVkZVNl
cGFyYXRvciA9IGZhbHNlKQorc3RhdGljIHZvaWQgcmVhZEFsbENodW5rcyhzdGQ6OnZlY3RvcjxT
dHJpbmc+KiBjaHVua3MsIEZyYWdtZW50ZWRTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3Ry
aW5nJiBzZXBhcmF0b3IgPSAiXHJcbiJfcywgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2Up
CiB7CiAgICAgU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIgY2h1bmtSZWFkZXIoJmJ1ZmZlciwgc2Vw
YXJhdG9yLnV0ZjgoKS5kYXRhKCkpOwogICAgIFN0cmluZyBjaHVuayA9IGNodW5rUmVhZGVyLm5l
eHRDaHVua0FzVVRGOFN0cmluZ1dpdGhMYXRpbjFGYWxsYmFjayhpbmNsdWRlU2VwYXJhdG9yKTsK
QEAgLTQ3NywzMiArNDc3LDMyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3Qs
IHJlYWRBbGxDaHVua3NJbk11bHRpU2VnbWVudCkKICAgICBhdXRvIGNoZWNrID0gW10oRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgc2hhcmVkQnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0
cmluZz4gY2h1bmtzOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFX
aXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaCIsICJzICIsICJzIHRoZSBtb3N0IHIiLCAiZCIsICJj
dWxvdXMgaCIsICJzdG9yeSB0aGVyZSAiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImkiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5r
cyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBl
Y3RlZENodW5rczFXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigp
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczFXaXRoU2VwYXJhdG9y
W10gPSB7ICJUaGkiLCAicyBpIiwgInMgdGhlIG1vc3QgcmkiLCAiZGkiLCAiY3Vsb3VzIGhpIiwg
InN0b3J5IHRoZXJlIGkiLCAicy4iIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywg
c2hhcmVkQnVmZmVyLCAiaSIsIHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3Ms
IHNoYXJlZEJ1ZmZlciwgImkiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0No
dW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBl
Y3RlZENodW5rczFXaXRoU2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwog
ICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9y
W10gPSB7ICJUaCIsICIgIiwgIiB0aGUgbW9zdCByaWRpY3Vsb3VzIGgiLCAidG9yeSB0aGVyZSAi
LCAiLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJp
cyIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9z
KTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5r
czJXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aG91dFNlcGFy
YXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciog
Y29uc3QgZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcltdID0geyAiVGhpcyIsICIgaXMiLCAi
IHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzIiwgInRvcnkgdGhlcmUgaXMiLCAiLiIgfTsKLSAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpcyIsIHRydWUpOworICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIl9zLCB0cnVlKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczJX
aXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MyV2l0aFNlcGFyYXRvcikpKTsK
IAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhw
ZWN0ZWRDaHVua3MzV2l0aG91dFNlcGFyYXRvcltdID0geyAiVGhpcyBpcyB0aGUgbW9zdCByaWRp
Y3Vsb3VzIGgiLCAib3J5IHRoZXJlIGlzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1
bmtzLCBzaGFyZWRCdWZmZXIsICJpc3QiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtz
LCBzaGFyZWRCdWZmZXIsICJpc3QiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5r
cyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBl
Y3RlZENodW5rczNXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigp
OwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJhdG9y
W10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaGlzdCIsICJvcnkgdGhlcmUgaXMu
IiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCIs
IHRydWUpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlz
dCJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhw
ZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhT
ZXBhcmF0b3IpKSk7CiAgICAgfTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CkBAIC01NTcsMTIgKzU1
NywxMiBAQCBURVNUX0YoU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJh
dG9yKQogICAgICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNp
bXBsZVRleHQsIHN0cmxlbihzaW1wbGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvcltdID0geyAiIiB9OwogICAgICAgICBzdGQ6
OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBz
aGFyZWRCdWZmZXIsICJkb2ciKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFy
ZWRCdWZmZXIsICJkb2ciX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVu
a3MsIGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1
bmtzV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAg
ICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJk
b2ciIH07Ci0gICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiZG9n
IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAi
ZG9nIl9zLCB0cnVlKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBl
eHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rc1dpdGhT
ZXBhcmF0b3IpKSk7CiAgICAgfQogCkBAIC01NzIsMTIgKzU3MiwxMiBAQCBURVNUX0YoU2hhcmVk
QnVmZmVyQ2h1bmtSZWFkZXJUZXN0LCBjaGFuZ2luZ0l0ZXJhdG9yKQogICAgICAgICBhdXRvIHNo
YXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHNpbXBsZVRleHQsIHN0cmxlbihzaW1w
bGVUZXh0KSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aG91
dFNlcGFyYXRvcltdID0geyAiQmVhdWNvdXAgZGUgY2hhdHMgIiwgIiIsICIiLCAiIiwgIiIgfTsK
ICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7Ci0gICAgICAgIHJlYWRBbGxDaHVu
a3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0Iik7CisgICAgICAgIHJlYWRBbGxDaHVua3Mo
JmNodW5rcywgc2hhcmVkQnVmZmVyLCAiY2F0Il9zKTsKICAgICAgICAgRVhQRUNUX1RSVUUoY2hl
Y2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IsIGFycmF5c2l6
ZShleHBlY3RlZENodW5rc1dpdGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNs
ZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFy
YXRvcltdID0geyAiQmVhdWNvdXAgZGUgY2hhdHMgY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0Iiwg
ImNhdCIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJj
YXQiLCB0cnVlKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJjYXQiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3Ms
IGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0
aFNlcGFyYXRvcikpKTsKICAgICB9CiAgICAgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcAppbmRleCA1ZjkyNTMyNzkxYTQw
ZTgzNTIzM2QwYWMxNTgyNTUxN2E5ZGQ1YjAwLi4yZGQ3ZTRhZTdhMDFjMjllZjE0YmU4OWZlZGFi
Mjg1ZDk3NmY5ODAzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvVXNlckFnZW50UXVpcmtzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9t
ZUJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0g
c3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3Ry
aW5nID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKCBTdHJpbmcgeyB1cmwgfSkpOwogCiAg
ICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMoIkNocm9tZSIpKTsKICAgICBFWFBFQ1Rf
VFJVRSh1YVN0cmluZy5jb250YWlucygiU2FmYXJpIikpOwpAQCAtNDUsNyArNDUsNyBAQCBzdGF0
aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmsoY29uc3Qg
Y2hhciogdXJsKQogCiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNGaXJlZm94
QnJvd3NlclF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBz
dGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJp
bmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAogICAg
IEVYUEVDVF9GQUxTRSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOwogICAgIEVYUEVDVF9G
QUxTRSh1YVN0cmluZy5jb250YWlucygiU2FmYXJpIikpOwpAQCAtNTYsNyArNTYsNyBAQCBzdGF0
aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNGaXJlZm94QnJvd3NlclF1aXJrKGNvbnN0
IGNoYXIqIHVybCkKIAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzTWFjUGxh
dGZvcm1RdWlyayhjb25zdCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3Rh
bmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5n
ID0gc3RhbmRhcmRVc2VyQWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBF
WFBFQ1RfVFJVRSh1YVN0cmluZy5jb250YWlucygiTWFjaW50b3NoIikpOwogICAgIEVYUEVDVF9U
UlVFKHVhU3RyaW5nLmNvbnRhaW5zKCJNYWMgT1MgWCIpKTsKQEAgLTcyLDE0ICs3MiwxNCBAQCBz
dGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0
IGNoYXIqIHVybCkKIC8vIHRoYXQgdGhlIHN0YW5kYXJkIHVzZXIgYWdlbnQgc2hvdWxkIGJlIHVz
ZWQuKQogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRW1wdHlRdWlyayhjb25z
dCBjaGFyKiB1cmwpCiB7Ci0gICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2VyQWdlbnRG
b3JVUkwoVVJMKHsgfSwgdXJsKSk7CisgICAgU3RyaW5nIHVhU3RyaW5nID0gc3RhbmRhcmRVc2Vy
QWdlbnRGb3JVUkwoVVJMKFN0cmluZyB7IHVybCB9KSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3Ry
aW5nLmlzTnVsbCgpKTsKIH0KIAogVEVTVChVc2VyQWdlbnRUZXN0LCBRdWlya3MpCiB7CiAgICAg
Ly8gQSBzaXRlIHdpdGggbm8gcXVpcmtzIHNob3VsZCByZXR1cm4gYSBudWxsIFN0cmluZy4KLSAg
ICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCAiaHR0
cDovL3d3dy53ZWJraXQub3JnLyIpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChVUkwoImh0dHA6Ly93d3cud2Via2l0Lm9yZy8iX3MpKTsKICAgICBFWFBF
Q1RfVFJVRSh1YVN0cmluZy5pc051bGwoKSk7CiAKICAgICBhc3NlcnRVc2VyQWdlbnRGb3JVUkxI
YXNDaHJvbWVCcm93c2VyUXVpcmsoImh0dHA6Ly90eXBla2l0LmNvbS8iKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9jdXJsL0Nvb2tpZXMuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKaW5kZXggMGQw
YjAwN2Y2NGVkZTVjNDNkM2FkZGIwYjM4NzI3ZTJhODM3YzNmMC4uNjQzOGYxY2E2YWIxNmFjNzNm
YWI0YTdiZDRmYmY3M2RjYzhjNjgyZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAKQEAgLTY0LDMwICs2NCwzMCBAQCBwcm90ZWN0
ZWQ6CiAKIFRFU1RfRihDdXJsQ29va2llcywgUmVqZWN0VGFpbG1hdGNoRmFpbHVyZURvbWFpbikK
IHsKLSAgICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwgdXJsIHsg
Imh0dHA6Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZG9tYWluIG1hdGNo
Ci0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1i
YXI7IERvbWFpbj1leGFtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsK
KyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJh
cjsgRG9tYWluPWV4YW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7
CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwotICAgIEVYUEVDVF9UUlVFKG1f
Y29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4YW1wbGUu
Y29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9UUlVFKG1f
Y29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49LmV4YW1wbGUu
Y29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CiAgICAgLy8gZmFpbHVyZTog
c3BlY2lmaWMgc3ViIGRvbWFpbgotICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29v
a2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSIsIENvb2tpZUph
ckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNl
dENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj13d3cuZXhhbXBsZS5jb20iX3MsIENv
b2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBmYWlsdXJlOiBkaWZmZXJlbnQg
ZG9tYWluCi0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmws
ICJmb289YmFyOyBEb21haW49c2FtcGxlLmNvbSIsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspKTsKKyAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwg
ImZvbz1iYXI7IERvbWFpbj1zYW1wbGUuY29tIl9zLCBDb29raWVKYXJEQjo6U291cmNlOjpOZXR3
b3JrKSk7CiB9CiAKIFRFU1RfRihDdXJsQ29va2llcywgVGVzdEh0dHBPbmx5Q2FzZSkKIHsKLSAg
ICBVUkwgdXJsIHsgImh0dHA6Ly9leGFtcGxlLmNvbSIgfTsKKyAgICBVUkwgdXJsIHsgImh0dHA6
Ly9leGFtcGxlLmNvbSJfcyB9OwogCiAgICAgLy8gc3VjY2VzczogZnJvbSBuZXR3b3JrCi0gICAg
RVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IEh0
dHBPbmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9UUlVF
KG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSJfcywg
Q29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOwogICAgIC8vIHN1Y2Nlc3M6IHdpbGRjYXJk
IG9mIGRvbWFpbnMKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwg
dXJsLCAiYmluZ289Ym9uZ287IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CisgICAg
RVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImJpbmdvPWJvbmdv
OyJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAgICAgLy8gZmFpbHVyZTogZm9v
IGlzIGFscmVhZHkgc3RvcmVkIGFzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2ll
SmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyIsIENvb2tpZUphckRCOjpTb3VyY2U6
OlNjcmlwdCkpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwg
dXJsLCAiZm9vPWJhcjsiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwogICAgIC8v
IGZhaWx1cmU6IGluY29uc2lzdGVudC4gU291cmNlIGlzIFNjcmlwdCwgYnV0IGF0dHJpYnV0ZSBz
YXlzIEh0dHBPbmx5Ci0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJs
LCB1cmwsICJmb289YmFyOyBIdHRwT25seSIsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkp
OworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9v
PWJhcjsgSHR0cE9ubHkiX3MsIENvb2tpZUphckRCOjpTb3VyY2U6OlNjcmlwdCkpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFBy
aXZhY3lSZXBvcnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Fw
cFByaXZhY3lSZXBvcnQubW0KaW5kZXggODA4YjMwYzIzOGMzODhlOTU5NzRkMWVkYzUzMzkxMjE1
NzIwN2ZlMy4uZGRjMTg1ZDk2YmM2ZWI0ODJkNzc4NGQzOTBmMDljOTg0Y2M2NTZmZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVw
b3J0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJp
dmFjeVJlcG9ydC5tbQpAQCAtMjQ0LDcgKzI0NCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwg
Tm9uQXBwSW5pdGlhdGVkUmVxdWVzdFdpdGhTdWJGcmFtZSkKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluU1dCeXRlcyA9IFIiU1dS
RVNPVVJDRSgKIDxzY3JpcHQ+CiB0cnkgewogICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0aW9uKHJlZykgewpAQCAtMjY0LDcgKzI2NCw3IEBA
IHRyeSB7CiAgICAgYWxlcnQoJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAogZW51bSBjbGFzcyBSZXNwb25zZVR5cGUgeyBT
eW50aGV0aWMsIEZldGNoZWQgfTsKIGVudW0gY2xhc3MgSXNBcHBJbml0aWF0ZWQgOiBib29sIHsg
Tm8sIFllcyB9OwpAQCAtMjc2LDI0ICsyNzYsMjQgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChSZXNw
b25zZVR5cGUgcmVzcG9uc2VUeXBlLCBJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAg
ICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKLSAgICBjb25z
dCBjaGFyKiBqcyA9IG51bGxwdHI7CisgICAgQVNDSUlMaXRlcmFsIGpzOwogICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkQWxlcnQgPSBudWxscHRyOwogCiAgICAgc3dpdGNoIChyZXNwb25zZVR5cGUp
IHsKICAgICBjYXNlIFJlc3BvbnNlVHlwZTo6U3ludGhldGljOgotICAgICAgICBqcyA9ICJzZWxm
LmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRo
KG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0aWMgcmVzcG9u
c2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiOworICAgICAgICBq
cyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJl
c3BvbmRXaXRoKG5ldyBSZXNwb25zZShuZXcgQmxvYihbJzxzY3JpcHQ+YWxlcnQoXCJzeW50aGV0
aWMgcmVzcG9uc2VcIik8L3NjcmlwdD4nXSwge3R5cGU6ICd0ZXh0L2h0bWwnfSkpKTsgfSkiX3M7
CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAic3ludGhldGljIHJlc3BvbnNlIjsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBSZXNwb25zZVR5cGU6OkZldGNoZWQ6Ci0gICAgICAgIGpzID0gInNl
bGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdp
dGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSk7IjsKKyAgICAgICAganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KTsiX3M7CiAgICAgICAgIGV4cGVjdGVkQWxlcnQgPSAiZmV0
Y2hlZCBmcm9tIHNlcnZlciI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMg
fSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRtbCIsIHsg
IjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9LAorICAg
ICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7
IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9
IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNo
ZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1dLV2ViVmlldyBuZXddKTsKQEAgLTM2OSwxMyArMzY5LDEzIEBAIFRFU1QoQXBwUHJpdmFj
eVJlcG9ydCwgTXVsdGlwbGVXZWJWaWV3c1dpdGhTaGFyZWRTZXJ2aWNlV29ya2VyKQogICAgIH1d
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNo
YXIqIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZl
bnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiOworICAgIGNvbnN0ZXhw
ciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsg
ZXZlbnQucmVzcG9uZFdpdGgoZmV0Y2goJy9mZXRjaGVkLmh0bWwnKSkgfSkiX3M7CiAgICAgY29u
c3QgY2hhciogZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpblNX
Qnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBw
bGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfSwKLSAgICAgICAgeyAiL2ZldGNoZWQuaHRt
bCIsIHsgIjxzY3JpcHQ+YWxlcnQoJ2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiIgfSB9
LAorICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3Lmpz
Il9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH19
LCBqcyB9IH0sCisgICAgICAgIHsgIi9mZXRjaGVkLmh0bWwiX3MsIHsgIjxzY3JpcHQ+YWxlcnQo
J2ZldGNoZWQgZnJvbSBzZXJ2ZXInKTwvc2NyaXB0PiJfcyB9IH0sCiAgICAgfSwgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKIAogICAgIGF1dG8gd2ViVmlldzEg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CkBAIC00NTIsMTIgKzQ1MiwxMiBAQCBzdGF0aWMg
dm9pZCBzb2Z0VXBkYXRlVGVzdChJc0FwcEluaXRpYXRlZCBpc0FwcEluaXRpYXRlZCkKICAgICB3
ZWJWaWV3Mi5nZXQoKS5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKIAogICAg
IHVpbnQxNl90IHNlcnZlclBvcnQ7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGpzID0gInNlbGYu
YWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgo
bmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25z
ZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZl
bnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlw
dD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQv
aHRtbCd9KSkpOyB9KSJfczsKIAogICAgIHsKICAgICAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKLSAg
ICAgICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9fSwganMgfSB9LAorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRl
cyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKICAgICAgICAgfSwgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRp
dHkoKSk7CiAgICAgICAgIHNlcnZlclBvcnQgPSBzZXJ2ZXIxLnBvcnQoKTsKIApAQCAtNDc2LDgg
KzQ3Niw4IEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBw
SW5pdGlhdGVkKQogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNl
cnZlcjIoewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiIH19LCBqcyB9IH0KKyAgICAgICAgICAgIHsgIi8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAor
ICAgICAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHt7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zIH19LCBqcyB9IH0KICAgICAgICAgfSwgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCB0ZXN0SWRlbnRpdHkyKCksIHNl
cnZlclBvcnQpOwogCiAgICAgICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QyID0gW05T
TXV0YWJsZVVSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIy
LnBvcnQoKV1dXTsKQEAgLTU1OCw3ICs1NTgsNyBAQCBURVNUKEFwcFByaXZhY3lSZXBvcnQsIFdl
YlByb2Nlc3NQbHVnaW5UZXN0Tm9uQXBwSW5pdGlhdGVkKQogCiAjaWYgV0tfSEFWRV9DX1NQSQog
Ci1zdGF0aWMgY29uc3QgY2hhciogbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgPSBSIlNX
UkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtNTg5LDkgKzU4OSw5
IEBAIHRyeSB7CiAgICAgbG9nKCdFeGNlcHRpb246ICcgKyBlKTsKIH0KIDwvc2NyaXB0PgotKVNX
UkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBzY3JpcHRC
eXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBz
Y3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIHNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGFzeW5jIChldmVudCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5h
bHMpIHsKICAgICAgICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCdObyBpbnRlcm5hbHMnKTsK
QEAgLTYyMCw3ICs2MjAsNyBAQCBhc3luYyBmdW5jdGlvbiBxdWVyeUFwcFByaXZhY3lSZXBvcnRW
YWx1ZShldmVudCwgaGF2ZVNlbnRJbml0aWFsTWVzc2FnZSkKICAgICBldmVudC5zb3VyY2UucG9z
dE1lc3NhZ2UoJ25vbiBhcHAgaW5pdGlhdGVkJyk7CiB9CiAKLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCiAKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwpAQCAtNjY2LDgg
KzY2Niw4IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xp
ZW50VXBkYXRlc0FwcEluaXRpYXRlZFZhbHVlKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwgeyBtYWluU1dCeXRlc0RlZmF1
bHRWYWx1ZSB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAi
YXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0s
CisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblNXQnl0ZXNEZWZhdWx0VmFsdWUgfSB9
LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUiX3MsICJhcHBsaWNh
dGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXNEZWZhdWx0VmFsdWUgfSB9LAogICAg
IH0pOwogCiAgICAgLy8gTG9hZCBXZWJWaWV3IHdpdGggYW4gYXBwIGluaXRpYXRlZCByZXF1ZXN0
LiBXZSBleHBlY3QgdGhlIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSB0byBiZSBhcHAgaW5pdGlh
dGVkLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
ZXZpY2VPcmllbnRhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRGV2aWNlT3JpZW50YXRpb24ubW0KaW5kZXggY2RiOTEwNGFlYjVmZDAxY2E1ZTcxNDgwZWJh
MTk0OTY3NDdlNjJlZi4uMzI0YmQwMjQ2OGViM2ZkMmIwYTVkOTM4M2ViNzA2MTJiOTE3NmZlMCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VP
cmllbnRhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0RldmljZU9yaWVudGF0aW9uLm1tCkBAIC0zMTcsNyArMzE3LDcgQEAgVEVTVChEZXZpY2VPcmll
bnRhdGlvbiwgRmlyZU9yaWVudGF0aW9uRXZlbnRzUmlnaHRBd2F5SWZQZXJtaXNzaW9uQWxyZWFk
eUdyYW50ZWQKICAgICBFWFBFQ1RfV0tfU1RSRVEoQCJyZWNlaXZlZC1ldmVudCIsIHJlY2VpdmVk
TWVzc2FnZXMuZ2V0KClbMV0pOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkJ5dGVzID0g
UiJURVNUUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkJ5dGVzID0gUiJURVNU
UkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtMzMyLDEyICszMzIs
MTIgQEAgZnVuY3Rpb24gcmVxdWVzdFBlcm1pc3Npb24oKSB7CiB9CiAKIDwvc2NyaXB0PgotKVRF
U1RSRVNPVVJDRSI7CispVEVTVFJFU09VUkNFIl9zOwogCiBURVNUKERldmljZU9yaWVudGF0aW9u
LCBQZXJtaXNzaW9uU2VjdXJlQ29udGV4dENoZWNrKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhU
VFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfQorICAgICAg
ICB7ICIvIl9zLCB7IG1haW5CeXRlcyB9IH0KICAgICB9KTsKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3Rv
cmUgZGVmYXVsdERhdGFTdG9yZV07CkBAIC0zOTUsMjMgKzM5NSwyMyBAQCAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdERldmljZU9yaWVudGF0aW9uQW5kTW90aW9u
UGVybWlzc2lvbgogfQogQGVuZAogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpbkZyYW1lVGV4dCA9
IFIiRE9DRE9DRE9DKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5GcmFtZVRleHQgPSBSIkRP
Q0RPQ0RPQygKIDxodG1sPjxib2R5PgogPGlmcmFtZSBzcmM9J2h0dHBzOi8vMTI3LjAuMC4xOjkw
OTEvZnJhbWUnIGFsbG93PSdhY2NlbGVyb21ldGVyOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7Z3ly
b3Njb3BlOmh0dHBzOi8vMTI3LjAuMC4xOjkwOTE7bWFnbmV0b21ldGVyOmh0dHBzOi8vMTI3LjAu
MC4xOjkwOTEnPjwvaWZyYW1lPgogPC9ib2R5PjwvaHRtbD4KLSlET0NET0NET0MiOwotc3RhdGlj
IGNvbnN0IGNoYXIqIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAorKURPQ0RPQ0RPQyJfczsKK3N0
YXRpYyBjb25zdGV4cHIgYXV0byBmcmFtZVRleHQgPSBSIkRPQ0RPQ0RPQygKIDxodG1sPjxib2R5
PjwvYm9keT48L2h0bWw+Ci0pRE9DRE9DRE9DIjsKKylET0NET0NET0MiX3M7CiAKIFRFU1QoV2Vi
S2l0LCBEZXZpY2VPcmllbnRhdGlvblBlcm1pc3Npb25JbklGcmFtZSkKIHsKICAgICBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAgICB7ICIvIiwgeyBtYWluRnJhbWVU
ZXh0IH0gfQorICAgICAgICB7ICIvIl9zLCB7IG1haW5GcmFtZVRleHQgfSB9CiAgICAgfSwgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRy
LCA5MDkwKTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAg
ICAgIHsgIi9mcmFtZSIsIHsgZnJhbWVUZXh0IH0gfSwKKyAgICAgICAgeyAiL2ZyYW1lIl9zLCB7
IGZyYW1lVGV4dCB9IH0sCiAgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzLCBudWxscHRyLCBudWxscHRyLCA5MDkxKTsKIAogICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lu
QXBwQnJvd3NlclByaXZhY3kubW0KaW5kZXggODVmN2Q4OWRiZDgxZTQ2ZjM1MDZkNDY2Y2M5N2E2
ZDMyYzRmMDI5MC4uZjZkYjE2N2E1YmQxYzc1MGYwYWU4YTZlZTdkNWY1YTkzMjhmYTVmYyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dz
ZXJQcml2YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SW5BcHBCcm93c2VyUHJpdmFjeS5tbQpAQCAtMTMxLDE0ICsxMzEsMTQgQEAgQGVuZAogc3RhdGlj
IHZvaWQgY2xlYW5VcEluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdl
YkNvcmU6OmNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7
Ci0gICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfcyk7CiB9CiAKIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCkKIHsK
ICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpz
ZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImluQXBwQnJvd3NlclByaXZhY3lUZXN0SWRl
bnRpZmllciIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigi
aW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIl9zKTsKIH0KIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBOb25BcHBCb3VuZERvbWFpbkZhaWxlZFVzZXJTY3JpcHRBdFN0YXJ0KQpA
QCAtODI1LDcgKzgyNSw3IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJD
b250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiB9CiBAZW5kCiAKLXN0
YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3Rl
eHByIGF1dG8gbWFpbkJ5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24g
bG9nKG1zZykKQEAgLTg1MCw5ICs4NTAsOSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3RlcignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dS
RVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5VbnJl
Z2lzdGVyQnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpblVu
cmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyht
c2cpCkBAIC04NzUsMTUgKzg3NSwxNSBAQCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cignL3N3LmpzJykudGhlbihmdW5jdGlvbihyZWcpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pU1dSRVNP
VVJDRSI7CispU1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzID0gUiJT
V1JFU09VUkNFKAogCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+
IHsKICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoIlNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6
ICIgKyBldmVudC5kYXRhKTsKIH0pOwogCi0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJDRSJfczsK
IAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VX
b3JrZXJzKQogewpAQCAtODk5LDggKzg5OSw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29ya2VycykKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
ODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvbWFpbi5odG1sIiwg
eyBtYWluQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cuanMiLCB7IHsgeyAiQ29udGVudC1UeXBl
IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAorICAgICAg
ICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTEzLDcgKzkxMyw3IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQXBwQm91bmREb21haW5BbGxvd3NTZXJ2aWNlV29y
a2VycykKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICAKICAgICAvLyBFeHBlY3QgdGhlIHNlcnZp
Y2Ugd29ya2VyIGxvYWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgotICAgIGV4cGVjdGVkTWVz
c2FnZSA9ICJNZXNzYWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxs
byBmcm9tIGFuIGFwcC1ib3VuZCBkb21haW4iOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJNZXNz
YWdlIGZyb20gd29ya2VyOiBTZXJ2aWNlV29ya2VyIHJlY2VpdmVkOiBIZWxsbyBmcm9tIGFuIGFw
cC1ib3VuZCBkb21haW4iX3M7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3RXaXRoTG9jYWxob3N0KCIvbWFpbi5odG1sIildOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKQEAgLTk1Niw4ICs5NTYsOCBAQCBU
RVNUKEluQXBwQnJvd3NlclByaXZhY3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsg
Ii9tYWluLmh0bWwiLCB7IG1haW5VbnJlZ2lzdGVyQnl0ZXMgfSB9LAotICAgICAgICB7ICIvc3cu
anMiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH0gfSwg
c2NyaXB0Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvbWFpbi5odG1sIl9zLCB7IG1haW5VbnJlZ2lz
dGVyQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsgeyB7ICJDb250ZW50LVR5cGUi
X3MsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Il9zIH0gfSwgc2NyaXB0Qnl0ZXMgfSB9LAogICAg
IH0pOwogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNG
b3JBbGxPcmlnaW5zXTsKQEAgLTk2Nyw3ICs5NjcsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIFVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIjsKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiVW5yZWdp
c3RyYXRpb24gc3VjY2VzcyJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdFdpdGhMb2NhbGhvc3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZpc0RvbmUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBi
ZjQ4MmUzYWI4Y2JhNTU4OWVmNDY0ZGU0ZmVhZGRmNDllNWY4ZWE4Li41YmNlYTgxMDkzY2ZlZTVm
ODgyZmY2OTZmNTg2ZjkyNjk4NzhiZDEzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24u
bW0KQEAgLTgzMTcsOCArODMxNyw4IEBAIFRFU1QoUHJvY2Vzc1N3YXAsIENvbnRlbnRNb2RlSW5D
YXNlT2ZDb29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9zb3VyY2UuaHRtbCIsIHsg
ImZvbyIgfSB9LAotICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50
LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJz
YW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywg
eyAiZm9vIl9zIH0gfSwKKyAgICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiX3MsIHsgeyB7ICJD
b250ZW50LVR5cGUiX3MsICJ0ZXh0L2h0bWwiX3MgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Q
b2xpY3kiX3MsICJzYW1lLW9yaWdpbiJfcyB9IH0sICJiYXIiX3MgfSB9LAogICAgIH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbiA9IHBzb25Qcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKQEAgLTgzODksMTEgKzgzODks
MTEgQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZlBTT05UaGVuQ29vcFBy
b2Nlc3NTd2FwKQogICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwogCiAgICAgSFRU
UFNlcnZlciBzZXJ2ZXIxKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0s
CisgICAgICAgIHsgIi9zb3VyY2UuaHRtbCJfcywgeyAiZm9vIl9zIH0gfSwKICAgICB9LCBIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgSFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAg
ICAgICAgeyAiL2Rlc3RpbmF0aW9uLmh0bWwiLCB7IHsgeyAiQ29udGVudC1UeXBlIiwgInRleHQv
aHRtbCIgfSwgeyAiQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kiLCAic2FtZS1vcmlnaW4iIH0g
fSwgImJhciIgfSB9LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNv
bnRlbnQtVHlwZSJfcywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBv
bGljeSJfcywgInNhbWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHApOwogCiAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBwc29uUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0KaW5kZXggMzNjOGRiYzViNzFlMWJiZjkyMmMxMTNiNGNjNWRlY2RlYWVi
MzJjOS4uZmRkNjcwODY4M2ViY2JlZjIyZTA4NTY3Zjc2YmU1OTZlMTgwZGQzOSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNh
dGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgVEVTVChX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLCBEZWxldGVPbmVDcmVkZW50aWFsKQogVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBSZWNvdmVyQWZ0ZXJBdXRoTlByb2Nlc3NDcmFzaCkKIHsKICAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi8iLCB7ICJGT08i
X3N0ciB9IH0KKyAgICAgICAgeyAiLyJfcywgeyAiRk9PIl9zIH0gfQogICAgIH0pOwogCiAgICAg
YXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50
ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdEF1dG9tYXRpb25TZXNzaW9uLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDlhNjhlNmU0NTFmZWYxM2JmNTAwN2NiMmYwMzc2NTBhYzMzZmZkYzIuLjJm
MTk1MmMyOTg5YjQxZmQ3MGFiMTdiOTRlNWQwYjdjYTc1MGY0ZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlv
blNlc3Npb24uY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgcHVibGljOgogICAgICAgICBtX2NyZWF0
ZVdlYlZpZXdXYXNDYWxsZWQgPSBmYWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0gQ1N0cmluZygp
OwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJj
cmVhdGUtd2ViLXZpZXciLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdDYWxsYmFjayksIHRoaXMp
OwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0Iik7
CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3Mp
OwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsKICAgICAgICAg
Z19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdXYXNDYWxsZWQpOwpAQCAtMjEyLDcgKzIxMiw3
IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQgPSBm
YWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0g
Z19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OndpbmRvdyIsIEdf
Q0FMTEJBQ0soY3JlYXRlV2ViVmlld0luV2luZG93Q2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAg
c2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50
YXRpb25IaW50XCI6XCJXaW5kb3dcIn0iKTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQo
ImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRv
d1wifSJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAg
ICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwog
ICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRlV2ViVmlld0luV2luZG93V2FzQ2FsbGVkKTsK
QEAgLTIzMCw3ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld0luVGFi
V2FzQ2FsbGVkID0gZmFsc2U7CiAgICAgICAgIG1fbWVzc2FnZSA9IHsgfTsKICAgICAgICAgYXV0
byBzaWduYWxJRCA9IGdfc2lnbmFsX2Nvbm5lY3QobV9zZXNzaW9uLCAiY3JlYXRlLXdlYi12aWV3
Ojp0YWIiLCBHX0NBTExCQUNLKGNyZWF0ZVdlYlZpZXdJblRhYkNhbGxiYWNrKSwgdGhpcyk7Ci0g
ICAgICAgIHNlbmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiLCAie1wi
cHJlc2VudGF0aW9uSGludFwiOlwiVGFiXCJ9Iik7CisgICAgICAgIHNlbmRDb21tYW5kVG9CYWNr
ZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiX3MsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJU
YWJcIn0iX3MpOwogICAgICAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcC5nZXQoKSk7CiAg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3Nlc3Npb24sIHNpZ25hbElEKTsK
ICAgICAgICAgZ19hc3NlcnRfdHJ1ZShtX2NyZWF0ZVdlYlZpZXdJblRhYldhc0NhbGxlZCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFNTTC5jcHAKaW5k
ZXggNTFjODE1MWM5MGFhMGU4MTI1ZTRiYTU5ZjlkZGUwYjg1NmVlMzFiMy4uMDU0MDU1MzdhNzU3
NDhkMGZlZmY4ZGY1OGQ0NjUwNmIwNmQyMTVhZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RTU0wuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcApAQCAtMjMyLDcgKzIzMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhHX09CSkVD
VChjZXJ0aWZpY2F0ZSkpOwogICAgICAgICBtX2NlcnRpZmljYXRlID0gY2VydGlmaWNhdGU7CiAg
ICAgICAgIG1fdGxzRXJyb3JzID0gdGxzRXJyb3JzOwotICAgICAgICBtX2ZhaWxpbmdVUkwgPSBV
UkwoeyB9LCBmYWlsaW5nVVJJKTsKKyAgICAgICAgbV9mYWlsaW5nVVJMID0gVVJMKFN0cmluZyB7
IGZhaWxpbmdVUkkgfSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RVSUNsaWVudC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApp
bmRleCAyODRmODA0YjY0MTA1Yjg0YjY3NjI4Mzc4Y2U4Y2YwYzE5NzJhY2Y4Li5iN2MxY2MxYzVj
NTNiOTcwNmVkZDRiYzRmNzcyY2EyOTYzZDEzNDJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHdpbmRvd1Byb3BlcnRpZXNOb3RpZnlD
YWxsYmFjayhHT2JqZWN0KiwgR1BhcmFtU3BlYyogcGFyYW1TcGVjLCBVSUNsaWVudFRlc3QqIHRl
c3QpCiAgICAgewotICAgICAgICB0ZXN0LT5tX3dpbmRvd1Byb3BlcnRpZXNDaGFuZ2VkLmFkZChn
X3BhcmFtX3NwZWNfZ2V0X25hbWUocGFyYW1TcGVjKSk7CisgICAgICAgIHRlc3QtPm1fd2luZG93
UHJvcGVydGllc0NoYW5nZWQuYWRkKFN0cmluZyB7IGdfcGFyYW1fc3BlY19nZXRfbmFtZShwYXJh
bVNwZWMpIH0pOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJLaXRXZWJWaWV3KiB2aWV3Q3JlYXRl
Q2FsbGJhY2soV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0TmF2aWdhdGlvbkFjdGlvbiog
bmF2aWdhdGlvbiwgVUlDbGllbnRUZXN0KiB0ZXN0KQpAQCAtNzYwLDExICs3NjAsMTEgQEAgc3Rh
dGljIHZvaWQgdGVzdFdlYlZpZXdXaW5kb3dQcm9wZXJ0aWVzKFVJQ2xpZW50VGVzdCogdGVzdCwg
Z2NvbnN0cG9pbnRlcikKICAgICB0ZXN0LT5sb2FkSHRtbChodG1sU3RyaW5nLmdldCgpLCBudWxs
cHRyKTsKICAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7CiAKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogcHJvcGVydGllc0NoYW5nZWRbXSA9IHsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIEFTQ0lJTGl0ZXJhbCBwcm9wZXJ0aWVzQ2hhbmdlZFtdID0gewogI2lmIFBMQVRGT1JNKEdU
SykKLSAgICAgICAgImdlb21ldHJ5IiwKKyAgICAgICAgImdlb21ldHJ5Il9zLAogI2VuZGlmCi0g
ICAgICAgICJsb2NhdGlvbmJhci12aXNpYmxlIiwgIm1lbnViYXItdmlzaWJsZSIsICJzdGF0dXNi
YXItdmlzaWJsZSIsICJ0b29sYmFyLXZpc2libGUiLCAic2Nyb2xsYmFycy12aXNpYmxlIgorICAg
ICAgICAibG9jYXRpb25iYXItdmlzaWJsZSJfcywgIm1lbnViYXItdmlzaWJsZSJfcywgInN0YXR1
c2Jhci12aXNpYmxlIl9zLCAidG9vbGJhci12aXNpYmxlIl9zLCAic2Nyb2xsYmFycy12aXNpYmxl
Il9zCiAgICAgfTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyhwcm9w
ZXJ0aWVzQ2hhbmdlZCk7ICsraSkKICAgICAgICAgZ19hc3NlcnRfdHJ1ZSh0ZXN0LT5tX3dpbmRv
d1Byb3BlcnRpZXNDaGFuZ2VkLmNvbnRhaW5zKHByb3BlcnRpZXNDaGFuZ2VkW2ldKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVu
c2lvbnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJF
eHRlbnNpb25zLmNwcAppbmRleCA0MGVhZWI3YmYyN2E0Yjg0ZDczMGI0MzlmNzFmNjk2YmVkY2Vm
YjExLi5jNTY5MDJhMjI5NzA3MjJkM2NjMTE2YmJhMzEwZGRiNmI0M2RlODliIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0
ZW5zaW9ucy5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5z
aW9uUGFnZUlEKFdlYlZpZXdUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIC8vIFJlZ2lz
dGVyIGEgY3VzdG9tIFVSSSBzY2hlbWUgdG8gdGVzdCBoaXN0b3J5IG5hdmlnYXRpb24uCiAgICAg
d2Via2l0X3dlYl9jb250ZXh0X3JlZ2lzdGVyX3VyaV9zY2hlbWUodGVzdC0+bV93ZWJDb250ZXh0
LmdldCgpLCAiZm9vIiwKICAgICAgICAgW10oV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVz
dCwgZ3BvaW50ZXIpIHsKLSAgICAgICAgICAgIFVSTCB1cmwgPSBVUkwoeyB9LCB3ZWJraXRfdXJp
X3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkpOworICAgICAgICAgICAgVVJMIHVybCA9
IFVSTChTdHJpbmcgeyB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2dldF91cmkocmVxdWVzdCkg
fSk7CiAgICAgICAgICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9w
dEdSZWYoZ19tZW1vcnlfaW5wdXRfc3RyZWFtX25ldygpKTsKICAgICAgICAgICAgIGNoYXIqIGh0
bWwgPSBnX3N0cmR1cF9wcmludGYoIjxodG1sPjxoZWFkPjx0aXRsZT4lczwvdGl0bGU+PC9oZWFk
Pjxib2R5PjwvYm9keT48L2h0bWw+IiwgdXJsLmhvc3QoKSA9PSAiaG9zdDUiID8gIlRpdGxlNSIg
OiAiVGl0bGU2Iik7CiAgICAgICAgICAgICBnX21lbW9yeV9pbnB1dF9zdHJlYW1fYWRkX2RhdGEo
R19NRU1PUllfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtLmdldCgpKSwgaHRtbCwgc3RybGVuKGh0
bWwpLCBnX2ZyZWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9nbGliL1dlYktp
dEdMaWIvV2ViS2l0VGVzdFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2Vi
S2l0R0xpYi9XZWJLaXRUZXN0U2VydmVyLmNwcAppbmRleCBmMGJkODY2NWY3MGEwZDQ1MTRmMWQx
ZDA4OTA1ZjVhYzJlYjk0MTI5Li4yODAzNDExNDBmMDJmODRmNzk0OTRlZWM0YjdlMzZiMTFjMDk5
ZDgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJL
aXRUZXN0U2VydmVyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xp
Yi9XZWJLaXRUZXN0U2VydmVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYktpdFRlc3RT
ZXJ2ZXI6OnJ1bihTb3VwU2VydmVyQ2FsbGJhY2sgc2VydmVyQ2FsbGJhY2spCiAKIHZvaWQgV2Vi
S2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxlcihTb3VwU2VydmVyV2Vic29ja2V0Q2Fs
bGJhY2sgY2FsbGJhY2ssIGdwb2ludGVyIHVzZXJEYXRhKQogewotICAgIG1fYmFzZVdlYlNvY2tl
dFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyIpOworICAgIG1fYmFzZVdlYlNvY2tl
dFVSTCA9IFVSTChtX2Jhc2VVUkwsICIvd2Vic29ja2V0LyJfcyk7CiAgICAgbV9iYXNlV2ViU29j
a2V0VVJMLnNldFByb3RvY29sKG1fYmFzZVdlYlNvY2tldFVSTC5wcm90b2NvbElzKCJodHRwIikg
PyAid3MiIDogIndzcyIpOwogCiAgICAgaWYgKG1fcXVldWUpIHsKQEAgLTEwMSwxMiArMTAxLDEy
IEBAIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6Z2V0V2ViU29ja2V0VVJJRm9yUGF0aChjb25z
dCBjaGFyKiBwYXRoKSBjb25zdAogewogICAgIGdfYXNzZXJ0X2ZhbHNlKG1fYmFzZVdlYlNvY2tl
dFVSTC5pc051bGwoKSk7CiAgICAgZ19hc3NlcnRfdHJ1ZShwYXRoICYmICpwYXRoID09ICcvJyk7
Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VXZWJTb2NrZXRVUkwsIHBhdGggKyAxKS5zdHJpbmcoKS51
dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGluZyBzbGFzaC4KKyAgICByZXR1cm4gVVJMKG1fYmFz
ZVdlYlNvY2tldFVSTCwgU3RyaW5nIHsgcGF0aCArIDEgfSkuc3RyaW5nKCkudXRmOCgpOyAvLyBJ
Z25vcmUgdGhlIGxlYWRpbmcgc2xhc2guCiB9CiAKIENTdHJpbmcgV2ViS2l0VGVzdFNlcnZlcjo6
Z2V0VVJJRm9yUGF0aChjb25zdCBjaGFyKiBwYXRoKSBjb25zdAogewotICAgIHJldHVybiBVUkwo
bV9iYXNlVVJMLCBwYXRoKS5zdHJpbmcoKS51dGY4KCk7CisgICAgcmV0dXJuIFVSTChtX2Jhc2VV
UkwsIFN0cmluZyB7IHBhdGggfSkuc3RyaW5nKCkudXRmOCgpOwogfQogCiB1bnNpZ25lZCBXZWJL
aXRUZXN0U2VydmVyOjpwb3J0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
UHJlZmVycmVkQ29udGVudE1vZGUubW0KaW5kZXggZjIyYzM3MjI3OTY5NDRiNTZmYWY0NWM4MDUw
ZDc0NGRiODZhMjlmNC4uOTg1ZDQ5MTVjNmFiOTFmMzNjYTkwNDE3OGMzYzVkNGQ0MTE0MGI5MiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0K
QEAgLTE2OSw3ICsxNjksNyBAQCBAZW5kCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBWaWV3Q2xhc3M+Ci1SZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVn
YXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAi
VGVzdFdlYktpdEFQSSIgfSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitS
ZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRl
c3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9k
ZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6
ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGlmIChk
ZWZhdWx0Q29udGVudE1vZGUpCkBAIC0xODIsNyArMTgyLDcgQEAgUmV0YWluUHRyPFZpZXdDbGFz
cz4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmln
YXRpb24KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KLXN0ZDo6cGFpcjxSZXRh
aW5QdHI8Vmlld0NsYXNzPiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRl
Pj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9u
YWw8V0tDb250ZW50TW9kZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSIg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCitzdGQ6OnBhaXI8UmV0YWlu
UHRyPFZpZXdDbGFzcz4sIFJldGFpblB0cjxDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZT4+
IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZyhzdGQ6Om9wdGlvbmFs
PFdLQ29udGVudE1vZGU+IGRlZmF1bHRDb250ZW50TW9kZSA9IHsgfSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCA9IHsgIlRlc3RXZWJLaXRBUEkiX3Mg
fSwgQ0dTaXplIHNpemUgPSBDR1NpemVNYWtlKDEwMjQsIDc2OCkpCiB7CiAgICAgYXV0byB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5h
dmlnYXRpb25EZWxlZ2F0ZTxWaWV3Q2xhc3M+KGRlZmF1bHRDb250ZW50TW9kZSwgYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50LCBzaXplKTsKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tDb250ZW50TW9kZU5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwpA
QCAtMzcyLDcgKzM3Miw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIFJlY29tbWVuZGVk
Q29udGVudE1vZGVBdFZhcmlvdXNWaWV3V2lkdGhzKQogewogICAgIElQYWRVc2VySW50ZXJmYWNl
U3dpenpsZXIgaVBhZFVzZXJJbnRlcmZhY2U7CiAKLSAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0
ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3
Pih7IH0sIHsgIlRlc3RXZWJLaXRBUEkiIH0sIENHU2l6ZVplcm8pOworICAgIGF1dG8gW3dlYlZp
ZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGlu
ZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemVaZXJvKTsKICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgYW5kRXhwZWN0RWZmZWN0aXZl
Q29udGVudE1vZGU6V0tDb250ZW50TW9kZURlc2t0b3Agd2l0aFBvbGljeURlY2lzaW9uSGFuZGxl
cjpuaWxdOwogICAgIFtbd2ViVmlldyBuYXZpZ2F0b3JVc2VyQWdlbnRdIHNob3VsZENvbnRhaW5T
dHJpbmdzOkAiTW96aWxsYS81LjAgKE1hY2ludG9zaCIsIEAiVGVzdFdlYktpdEFQSSIsIG5pbF07
CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBURVNUKFByZWZlcnJlZENvbnRlbnRNb2RlLCBBcHBsaWNh
dGlvbk5hbWVGb3JEZXNrdG9wVXNlckFnZW50KQogICAgIH0KICAgICB7CiAgICAgICAgIC8vIE1h
bnVhbGx5IHNldCB0aGUgYXBwbGljYXRpb24gbmFtZSBmb3IgdXNlciBhZ2VudCB0byB0aGUgZGVm
YXVsdCB2YWx1ZSwgTW9iaWxlLzE1RTE0OC4KLSAgICAgICAgYXV0byBbd2ViVmlldywgZGVsZWdh
dGVdID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmll
dz4oV0tDb250ZW50TW9kZURlc2t0b3AsIHsgIk1vYmlsZS8xNUUxNDgiIH0pOworICAgICAgICBh
dXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50
TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1
RTE0OCJfcyB9KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUi
IHdpdGhQb2xpY3lEZWNpc2lvbkhhbmRsZXI6bmlsXTsKICAgICAgICAgTlNTdHJpbmcgKnVzZXJB
Z2VudCA9IFt3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF07CiAgICAgICAgIEVYUEVDVF9UUlVF
KFt1c2VyQWdlbnQgY29udGFpbnNTdHJpbmc6QCJNb2JpbGUiXSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdHNwaS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
c3BpL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKaW5kZXggOGNkMjJlNGQzNzJhNTlj
Njg3Mzk2MjhiYmU5ZWI1OGY1ZWMxN2MzNi4uODk1ZjJlNjk5MDM1NzJjNjc4YzdhNjI1NzJkMjJj
NzFlZGE4MTY3OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0c3BpLmNwcApAQCAtMzk4LDE4ICszOTgsMTggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmUK
ICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRl
cyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJB
WFBsYWNlaG9sZGVyVmFsdWUiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZShhdHRyaWJ1dGVzLmdldCgicGxhY2Vob2xkZXItdGV4dCIpKS5sZWFrUmVmKCk7CisgICAg
ICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJwbGFj
ZWhvbGRlci10ZXh0Il9zKSkubGVha1JlZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJB
WEludmFsaWQiKSB7CiAgICAgICAgIGF1dG8gdGV4dEF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPnRl
eHRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGF1dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRy
aWJ1dGVzLmdldCgiaW52YWxpZCIpOworICAgICAgICBhdXRvIHZhbHVlID0gdGV4dEF0dHJpYnV0
ZXMuYXR0cmlidXRlcy5nZXQoImludmFsaWQiX3MpOwogICAgICAgICBpZiAodmFsdWUuaXNFbXB0
eSgpKQotICAgICAgICAgICAgdmFsdWUgPSBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQuZ2V0
KCksIFdlYkNvcmU6OkF0c3BpOjpTdGF0ZTo6SW52YWxpZEVudHJ5KSA/ICJ0cnVlIiA6ICJmYWxz
ZSI7CisgICAgICAgICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5nZXQo
KSwgV2ViQ29yZTo6QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50cnkpID8gInRydWUiX3MgOiAiZmFs
c2UiX3M7CiAgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKHZhbHVlKS5s
ZWFrUmVmKCk7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikK
LSAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQo
ImxpdmUiKSkubGVha1JlZigpOworICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNy
ZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSJfcykpLmxlYWtSZWYoKTsKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAgICByZXR1cm4gT3BhcXVlSlNTdHJp
bmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVsZXZhbnQiKSkubGVha1JlZigpOworICAg
ICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgicmVs
ZXZhbnQiX3MpKS5sZWFrUmVmKCk7CiAKICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycyhudWxscHRyLCAwKTsKIH0KQEAgLTQyMCwyMSArNDIwLDIxIEBAIGRvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0
dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0
c2l6ZSIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgic2V0c2l6
ZSJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9zSW5T
ZXQiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInBvc2luc2V0IikudG9Eb3VibGUo
KTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJwb3NpbnNldCJfcykudG9Eb3VibGUo
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uQ291bnQiKQotICAgICAg
ICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGNvdW50IikudG9Eb3VibGUoKTsKKyAgICAgICAg
cmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xjb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAo
YXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93Q291bnQiKQotICAgICAgICByZXR1cm4gYXR0cmli
dXRlcy5nZXQoInJvd2NvdW50IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0
ZXMuZ2V0KCJyb3djb3VudCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9
PSAiQVhBUklBQ29sdW1uSW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNv
bGluZGV4IikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJjb2xp
bmRleCJfcykudG9Eb3VibGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93
SW5kZXgiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2luZGV4IikudG9Eb3Vi
bGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dpbmRleCJfcykudG9Eb3Vi
bGUoKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBQ29sdW1uU3BhbiIpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29sc3BhbiJfcykudG9Eb3VibGUoKTsKICAgICBpZiAo
YXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUm93U3BhbiIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1
dGVzLmdldCgicm93c3BhbiIpLnRvRG91YmxlKCk7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVz
LmdldCgicm93c3BhbiJfcykudG9Eb3VibGUoKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDQy
LDggKzQ0Miw4IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1
dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUoKSBjb25zdAogewogICAg
IG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1fZWxl
bWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCIpOwotICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051bGwoKSA/IHZhbHVlIDogImZhbHNlIikubGVha1Jl
ZigpOworICAgIGF1dG8gdmFsdWUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImN1cnJl
bnQiX3MpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKCF2YWx1ZS5pc051
bGwoKSA/IHZhbHVlIDogImZhbHNlIl9zKS5sZWFrUmVmKCk7CiB9CiAKIEpTVmFsdWVSZWYgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1dGVWYWx1ZShKU1N0cmlu
Z1JlZiBhdHRyaWJ1dGUpIGNvbnN0CkBAIC01MTQsNyArNTE0LDcgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQog
ICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEludGVyZmFjZVRhYmxlQ2VsbCIpCiAgICAgICAg
IHJldHVybiBtX2VsZW1lbnQtPmludGVyZmFjZXMoKS5jb250YWlucyhXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0QXRzcGk6OkludGVyZmFjZTo6VGFibGVDZWxsKTsKICAgICBpZiAoYXR0cmli
dXRlTmFtZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0
cmlidXRlcygpLmdldCgiYXRvbWljIikgPT0gInRydWUiOworICAgICAgICByZXR1cm4gbV9lbGVt
ZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMiX3MpID09ICJ0cnVlIjsKIAogICAgIHJldHVy
biBmYWxzZTsKIH0KQEAgLTUzNiw3ICs1MzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+YXR0cmlidXRl
cygpOwotICAgIFN0cmluZyBpc1JlYWRPbmx5ID0gYXR0cmlidXRlcy5nZXQoInJlYWRvbmx5Iik7
CisgICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiX3MpOwog
ICAgIGlmICghaXNSZWFkT25seS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpc1JlYWRPbmx5
ID09ICJ0cnVlIiA/IGZhbHNlIDogdHJ1ZTsKIApAQCAtNTczLDE3ICs1NzMsMTcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRv
IGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBU2V0U2l6ZSIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRh
aW5zKCJzZXRzaXplIik7CisgICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJzZXRz
aXplIl9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUG9zSW5TZXQiKQotICAg
ICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicG9zaW5zZXQiKTsKKyAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInBvc2luc2V0Il9zKTsKICAgICBpZiAoYXR0cmlidXRl
TmFtZSA9PSAiQVhBUklBTGl2ZSIpIHsKLSAgICAgICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZXMu
Z2V0KCJsaXZlIik7CisgICAgICAgIGF1dG8gdmFsdWUgPSBhdHRyaWJ1dGVzLmdldCgibGl2ZSJf
cyk7CiAgICAgICAgIHJldHVybiAhdmFsdWUuaXNFbXB0eSgpICYmIHZhbHVlICE9ICJvZmYiOwog
ICAgIH0KICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhBUklBUmVsZXZhbnQiKQotICAgICAg
ICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygicmVsZXZhbnQiKTsKKyAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZXMuY29udGFpbnMoInJlbGV2YW50Il9zKTsKICAgICBpZiAoYXR0cmlidXRlTmFt
ZSA9PSAiQVhBUklBQXRvbWljIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMo
ImF0b21pYyIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIl9z
KTsKICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSAiQVhFbGVtZW50QnVzeSIpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCkBAIC01OTgsMjcgKzU5OCwyNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVzKCkK
IHN0YXRpYyBTdHJpbmcgeG1sUm9sZVZhbHVlU3RyaW5nKGNvbnN0IFN0cmluZyYgeG1sUm9sZXMp
CiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+PiByZWdpb25Sb2xlcyA9IEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJ
bnNlbnNpdGl2ZUhhc2g+KHsKLSAgICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMiLAotICAgICAg
ICAiZG9jLWFmdGVyd29yZCIsCi0gICAgICAgICJkb2MtYXBwZW5kaXgiLAotICAgICAgICAiZG9j
LWJpYmxpb2dyYXBoeSIsCi0gICAgICAgICJkb2MtY2hhcHRlciIsCi0gICAgICAgICJkb2MtY29u
Y2x1c2lvbiIsCi0gICAgICAgICJkb2MtY3JlZGl0cyIsCi0gICAgICAgICJkb2MtZW5kbm90ZXMi
LAotICAgICAgICAiZG9jLWVwaWxvZ3VlIiwKLSAgICAgICAgImRvYy1lcnJhdGEiLAotICAgICAg
ICAiZG9jLWZvcmV3b3JkIiwKLSAgICAgICAgImRvYy1nbG9zc2FyeSIsCi0gICAgICAgICJkb2Mt
Z2xvc3NyZWYiLAotICAgICAgICAiZG9jLWluZGV4IiwKLSAgICAgICAgImRvYy1pbnRyb2R1Y3Rp
b24iLAotICAgICAgICAiZG9jLXBhZ2VsaXN0IiwKLSAgICAgICAgImRvYy1wYXJ0IiwKLSAgICAg
ICAgImRvYy1wcmVmYWNlIiwKLSAgICAgICAgImRvYy1wcm9sb2d1ZSIsCi0gICAgICAgICJkb2Mt
dG9jIiwKLSAgICAgICAgInJlZ2lvbiIKKyAgICAgICAgImRvYy1hY2tub3dsZWRnbWVudHMiX3Ms
CisgICAgICAgICJkb2MtYWZ0ZXJ3b3JkIl9zLAorICAgICAgICAiZG9jLWFwcGVuZGl4Il9zLAor
ICAgICAgICAiZG9jLWJpYmxpb2dyYXBoeSJfcywKKyAgICAgICAgImRvYy1jaGFwdGVyIl9zLAor
ICAgICAgICAiZG9jLWNvbmNsdXNpb24iX3MsCisgICAgICAgICJkb2MtY3JlZGl0cyJfcywKKyAg
ICAgICAgImRvYy1lbmRub3RlcyJfcywKKyAgICAgICAgImRvYy1lcGlsb2d1ZSJfcywKKyAgICAg
ICAgImRvYy1lcnJhdGEiX3MsCisgICAgICAgICJkb2MtZm9yZXdvcmQiX3MsCisgICAgICAgICJk
b2MtZ2xvc3NhcnkiX3MsCisgICAgICAgICJkb2MtZ2xvc3NyZWYiX3MsCisgICAgICAgICJkb2Mt
aW5kZXgiX3MsCisgICAgICAgICJkb2MtaW50cm9kdWN0aW9uIl9zLAorICAgICAgICAiZG9jLXBh
Z2VsaXN0Il9zLAorICAgICAgICAiZG9jLXBhcnQiX3MsCisgICAgICAgICJkb2MtcHJlZmFjZSJf
cywKKyAgICAgICAgImRvYy1wcm9sb2d1ZSJfcywKKyAgICAgICAgImRvYy10b2MiX3MsCisgICAg
ICAgICJyZWdpb24iX3MKICAgICB9KTsKIAogICAgIGlmIChyZWdpb25Sb2xlcy0+Y29udGFpbnMo
eG1sUm9sZXMpKQpAQCAtNzYyLDcgKzc2Miw3IEBAIHN0YXRpYyBTdHJpbmcgcm9sZVZhbHVlVG9T
dHJpbmcodW5zaWduZWQgcm9sZVZhbHVlKQogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6
OlNjcm9sbEJhcjoKICAgICAgICAgcmV0dXJuICJBWFNjcm9sbEJhciJfczsKICAgICBjYXNlIFdl
YkNvcmU6OkF0c3BpOjpSb2xlOjpTY3JvbGxQYW5lOgotICAgICAgICByZXR1cm4gIkFYU2Nyb2xs
QXJlYSI7CisgICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIl9zOwogICAgIGNhc2UgV2ViQ29y
ZTo6QXRzcGk6OlJvbGU6OlNlY3Rpb246CiAgICAgICAgIHJldHVybiAiQVhTZWN0aW9uIl9zOwog
ICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNlcGFyYXRvcjoKQEAgLTgxNyw3ICs4MTcs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9s
ZSgpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIHJv
bGVWYWx1ZSA9IG1fZWxlbWVudC0+cm9sZSgpOwotICAgIGF1dG8gcm9sZVZhbHVlU3RyaW5nID0g
cm9sZVZhbHVlID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpMYW5kbWFyayA/IHhtbFJvbGVWYWx1
ZVN0cmluZyhtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInhtbC1yb2xlcyIpKSA6IHJvbGVW
YWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7CisgICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSByb2xl
VmFsdWUgPT0gV2ViQ29yZTo6QXRzcGk6OlJvbGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVlU3Ry
aW5nKG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgieG1sLXJvbGVzIl9zKSkgOiByb2xlVmFs
dWVUb1N0cmluZyhyb2xlVmFsdWUpOwogICAgIGlmIChyb2xlVmFsdWVTdHJpbmcuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAw
KTsKIApAQCAtODMyLDE0ICs4MzIsMTQgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxl
bWVudC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9uIik7CisgICAgYXV0byByb2xl
RGVzY3JpcHRpb24gPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoInJvbGVkZXNjcmlwdGlv
biJfcyk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobWFrZVN0cmluZygi
QVhSb2xlRGVzY3JpcHRpb246ICIsIHJvbGVEZXNjcmlwdGlvbikpLmxlYWtSZWYoKTsKIH0KIAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVk
Um9sZVN0cmluZygpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAg
ICBhdXRvIGNvbXB1dGVkUm9sZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY29tcHV0
ZWQtcm9sZSIpOworICAgIGF1dG8gY29tcHV0ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVz
KCkuZ2V0KCJjb21wdXRlZC1yb2xlIl9zKTsKICAgICBpZiAoY29tcHV0ZWRSb2xlLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwg
MCk7CiAKQEAgLTk3Miw3ICs5NzIsNyBAQCBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW50VmFsdWUoKSBjb25zdAogCiAgICAgLy8gQ29uc2lkZXIgaGVhZGluZ3MgYXMgYW4gc3BlY2lh
bCBjYXNlIHdoZW4gcmV0dXJuaW5nIHRoZSBpbnQgdmFsdWUuCiAgICAgaWYgKG1fZWxlbWVudC0+
cm9sZSgpID09IFdlYkNvcmU6OkF0c3BpOjpSb2xlOjpIZWFkaW5nKQotICAgICAgICByZXR1cm4g
bV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZlbCIpLnRvRG91YmxlKCk7CisgICAgICAg
IHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIl9zKS50b0RvdWJsZSgp
OwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC05OTksNyArOTk5LDcgQEAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQogewog
ICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVz
ID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgYXV0byB2YWx1ZSA9IG1ha2VTdHJpbmco
IkFYVmFsdWVEZXNjcmlwdGlvbjogIiwgYXR0cmlidXRlcy5nZXQoInZhbHVldGV4dCIpKTsKKyAg
ICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAiLCBhdHRyaWJ1
dGVzLmdldCgidmFsdWV0ZXh0Il9zKSk7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKIH0KIApAQCAtMTA3Niw3ICsxMDc2LDcgQEAgYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsKICAgICBtX2Vs
ZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gbGV2ZWwgPSBtX2VsZW1lbnQt
PmF0dHJpYnV0ZXMoKS5nZXQoImxldmVsIik7CisgICAgYXV0byBsZXZlbCA9IG1fZWxlbWVudC0+
YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3MpOwogICAgIGlmIChsZXZlbC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiAwOwogCkBAIC0xMDkxLDEzICsxMDkxLDEzIEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVz
KCkuZ2V0KCJncmFiYmVkIikgPT0gInRydWUiOworICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJp
YnV0ZXMoKS5nZXQoImdyYWJiZWQiX3MpID09ICJ0cnVlIjsKIH0KIAogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0
CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIGRyb3BF
ZmZlY3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Iik7CisgICAg
YXV0byBkcm9wRWZmZWN0cyA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZHJvcGVmZmVj
dCJfcyk7CiAgICAgaWYgKGRyb3BFZmZlY3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIEpT
U3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAgICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUoZHJvcEVmZmVjdHMpLmxlYWtSZWYoKTsKQEAgLTE0MjksNyAr
MTQyOSw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudEVuY29kaW5nKCkKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9y
ZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9j
dW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIikpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJFbmNvZGlu
ZyJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgp
CiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDAp
OwogCiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtX2VsZW1lbnQtPmRvY3VtZW50QXR0cmlidXRlKCJVUkki
KSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1fZWxl
bWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSJfcykpLmxlYWtSZWYoKTsKIH0KIAogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNwcApp
bmRleCAwMzY2NTJlYzM4OTk5ZjVmMTNiYWYwMGU2YzVjOTBhYTk0NjYyNzNhLi4yYTg4NTI3MTRh
ZWZmMWEyMTlkMTdkYTUyZjhlNTdlN2ViNjVlOTE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAKQEAgLTE4NSwxMSArMTg1
LDExIEBAIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoR1ZhcmlhbnQqIHZh
cmlhbnQpCiAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoJml0ZXIsICJ7JnN2fSIsICZr
ZXksICZ2YWx1ZSkpIHsKICAgICAgICAgY29uc3QgR1ZhcmlhbnRUeXBlKiB0eXBlID0gZ192YXJp
YW50X2dldF90eXBlKHZhbHVlKTsKICAgICAgICAgaWYgKHR5cGUgJiYgZ192YXJpYW50X3R5cGVf
ZXF1YWwodHlwZSwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCkpCi0gICAgICAgICAgICBqc29uT2Jq
ZWN0LT5zZXRPYmplY3Qoa2V5LCB0b0pTT05PYmplY3QodmFsdWUpKTsKKyAgICAgICAgICAgIGpz
b25PYmplY3QtPnNldE9iamVjdChTdHJpbmcgeyBrZXkgfSwgdG9KU09OT2JqZWN0KHZhbHVlKSk7
CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgJiYgZ192YXJpYW50X3R5cGVfZXF1YWwodHlwZSwgR19W
QVJJQU5UX1RZUEVfU1RSSU5HKSkKLSAgICAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZyhr
ZXksIGdfdmFyaWFudF9nZXRfc3RyaW5nKHZhbHVlLCBudWxscHRyKSk7CisgICAgICAgICAgICBq
c29uT2JqZWN0LT5zZXRTdHJpbmcoU3RyaW5nIHsga2V5IH0sIFN0cmluZyB7IGdfdmFyaWFudF9n
ZXRfc3RyaW5nKHZhbHVlLCBudWxscHRyKSB9KTsKICAgICAgICAgZWxzZSBpZiAodHlwZSAmJiBn
X3ZhcmlhbnRfdHlwZV9lcXVhbCh0eXBlLCBHX1ZBUklBTlRfVFlQRV9ET1VCTEUpKQotICAgICAg
ICAgICAganNvbk9iamVjdC0+c2V0RG91YmxlKGtleSwgZ192YXJpYW50X2dldF9kb3VibGUodmFs
dWUpKTsKKyAgICAgICAgICAgIGpzb25PYmplY3QtPnNldERvdWJsZShTdHJpbmcgeyBrZXkgfSwg
Z192YXJpYW50X2dldF9kb3VibGUodmFsdWUpKTsKICAgICB9CiAgICAgcmV0dXJuIGpzb25PYmpl
Y3Q7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAg
Yi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKaW5kZXggMTIwNGNiNTI4YmM2
YTgzMTBiMmVmYzdiNmVkMjA1YWI4ZjFiMjQwYi4uY2YxMzFhZWJhMGFlMzg2ODkzNzgzODYwZWRm
Yzg0MTUyNGUxNzg4YyAxMDA2NDQKLS0tIGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21h
aW4uY3BwCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtOTMs
NyArOTMsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCiAgICAgQ29tcGFj
dFBvaW50ZXJUdXBsZTxTdHJpbmcqLCB1aW50OF90PiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBs
ZU1heFR5cGVWYWx1ZSB7ICZhbjhCaXRTdHJpbmcsIDI1NSB9OwogICAgIENvbXBhY3RQb2ludGVy
VHVwbGU8U3RyaW5nKiwgYm9vbD4gZXhhbXBsZUNvbXBhY3RQb2ludGVyVHVwbGVTaW1wbGVCb29s
IHsgJmFuOEJpdFN0cmluZywgdHJ1ZSB9OwogICAgIAotICAgIFVSTCBhVVJMKHsgfSwgImh0dHBz
Oi8vd3d3LmV4YW1wbGUuY29tIik7CisgICAgVVJMIGFVUkwoImh0dHBzOi8vd3d3LmV4YW1wbGUu
Y29tIl9zKTsKIAogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456606</attachid>
            <date>2022-04-04 12:32:13 -0700</date>
            <delta_ts>2022-04-05 10:09:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238693-20220404123212.patch</filename>
            <type>text/plain</type>
            <size>415685</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
NWIxYWJhYjQ3OTk1NWExYzIzM2FiMTJlMjMxNjRjODMwNTg3NmM1Li5lNmIxNjU3ODYyNGQ1YWY1
MDA2MjkxNjc2Yzg1YjE3MjJiYzYxYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Njkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBUEkv
Z2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAgKGpzY19jb250ZXh0X2NoZWNrX3N5bnRheCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdGFydEF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyk6CisKIDIwMjItMDQt
MDIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgZGVmYXVs
dCBjb25zdHJ1Y3RvciB0byBBU0NJSUxpdGVyYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZGQ4OWZhYjRlODE4NmM2N2EwZDU4
M2QwZjczN2UyMGYyNzViYzc0MC4uMTlkZTMwYzNjNjViYjY3MTFiYWRkOTU2MDRmOGZkYmU5ZWQ5
NTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMi0wNC0wNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1
Y3RvciBhcyBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1J
bXBsOjpmaWxlc0hhdmVTYW1lVm9sdW1lKToKKyAgICAgICAgKiB3dGYvRmlsZVN5c3RlbS5oOgor
ICAgICAgICAqIHd0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcDoKKyAgICAgICAgKFdURjo6Rmls
ZVN5c3RlbUltcGw6OmdldEZpbGVEZXZpY2VJZCk6CisgICAgICAgICogd3RmL3Bvc2l4L0ZpbGVT
eXN0ZW1QT1NJWC5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0ZW1JbXBsOjpnZXRGaWxlRGV2
aWNlSWQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5oOgorICAgICAgICAqIHd0Zi91
bml4L0xvZ2dpbmdVbml4LmNwcDoKKyAgICAgICAgKFdURjo6bG9nTGV2ZWxTdHJpbmcpOgorICAg
ICAgICAqIHd0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHA6CisgICAgICAgIChXVEY6OkZpbGVTeXN0
ZW1JbXBsOjpnZXRGaWxlRGV2aWNlSWQpOgorICAgICAgICAqIHd0Zi93aW4vTGFuZ3VhZ2VXaW4u
Y3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwogMjAyMi0wNC0wNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgbW9zdGx5IHVudXNl
ZCBTdHJpbmcoY29uc3QgTENoYXIqKSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU1N2QzNWJh
MzJmZjFkNzNmMmQxZjJkMjAwMWI5MDBhZjVmMzdjNjEuLjdkM2E2NWMwZWMzOTEwZDA3YWNmZjQ3
MzdlYTE3ZTEzMzkyNmZhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNTIgQEAKKzIwMjItMDQt
MDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmlu
Zyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmZXRj
aERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6
OnN0b3JlUmVtb3RlTUxpbmVJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlh
RW5kcG9pbnQ6OmFkZEljZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJN
ZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y3JlYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uRmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNv
bGxlY3RUcmFuc2NlaXZlcnMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpnc3RyZWFtZXJSdHBDYXBhdGlibGl0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1l
clBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIpOgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ6Om1p
ZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyU3Rh
dHNDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJUQ1N0YXRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmZpbGxSVENSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpm
aWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dG9SVENFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0b1JUQ0VuY29kaW5nUGFyYW1ldGVycyk6
CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIp
OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6YXR0cmlidXRlcyBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmVmZmVjdGl2ZVJvbGVO
YW1lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6
cm9sZU5hbWUgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eU9iamVjdFRleHRBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0QXRzcGk6OnRleHRBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6ZW1iZWRkZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbToKKyAgICAgICAgKC1b
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVNjcm9sbDpdKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKToKKyAgICAgICAgKiBl
ZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldl
YkNvbnRlbnRSZWFkZXI6OnJlYWRGaWxlUGF0aCk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9y
Q2hhbmdlZEJhc2VXcml0aW5nRGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6
cmVtb3ZlVW5jaGFuZ2VhYmxlU3R5bGVzKToKKyAgICAgICAgKiBlZGl0aW5nL2xpYndwZS9FZGl0
b3JMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVi
b2FyZERhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAg
IChXVEY6OkxvZ0FyZ3VtZW50PFVSTD46OnRvU3RyaW5nKToKKyAgICAgICAgKiBodG1sL09mZnNj
cmVlbkNhbnZhcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEpOgorICAgICAg
ICAqIGxvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6bG9hZEdSZXNvdXJjZSk6CisgICAgICAgICogcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9EZWJ1Z1BhZ2VP
dmVybGF5cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6
OnZhbHVlRm9yU2V0dGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3Zl
cmxheTo6bW91c2VFdmVudCk6CisgICAgICAgICogcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzQmFzZTo6aW5pdGlhbGl6ZURlZmF1bHRG
b250RmFtaWxpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vVXNlckFnZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcjo6QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnBsYXRmb3JtVmVyc2lvbkZvclVBU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YW5k
YXJkVXNlckFnZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJy
aWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNo
YWRlclNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3ND
b250ZXh0R0xBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTEFO
R0xFOjp2YWxpZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwOgorICAgICAgICAocHJpbnRDb2xvcik6
CisgICAgICAgIChwcmludExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlckNhaXJvQmFja2VuZDo6dG9EYXRhVVJMIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpnZXRGYW1pbHlOYW1lU3RyaW5nRnJvbUZhbWlseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9u
RnJvbUNhcHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFt
ZXJDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5
U2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6
OkVsZW1lbnRGYWN0b3JpZXM6Omhhc0VsZW1lbnRGb3JNZWRpYVR5cGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpjcmVhdGVBdWRpb1NpbmspOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpoYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29uZmlndXJlRG93
bmxvYWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpkb3dubG9hZEJ1ZmZlckZpbGVDcmVhdGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJp
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhcnNl
SW5pdERhdGFGcm9tUHJvdGVjdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVQcm90ZWN0aW9uRXZlbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyOjpnZXRMYW5ndWFnZUNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhY2tQcml2YXRlQmFz
ZUdTdHJlYW1lcjo6Z2V0VGFnKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKHdlYmtpdEdzdFRy
YWNlUHJvY2Vzc2luZ1RpbWVGb3JFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9t
Q2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNv
dXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRlcik6
CisgICAgICAgICh3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdCk6CisgICAgICAgIChjb252ZXJ0UGxh
eWJpblVSSSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBlbmRQaXBlbGluZTo6cGFyc2VE
ZW11eGVyU3JjUGFkQ2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0w6OmlzVmVydGV4QXJyYXlPYmplY3RT
dXBwb3J0ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
R0xPcGVuR0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xFUzo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxp
ZGF0ZURlcHRoU3RlbmNpbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6dmFsaWRhdGVBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJp
YnV0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExh
eWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJGUFNDb3VudGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJGUFND
b3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0
ZWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6ZHVtcEFkZGl0aW9uYWxQcm9wZXJ0aWVzIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JDb3B5QW5kUGFzdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6Y3JlYXRl
Rm9yR2xvYmFsU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXli
b2FyZEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6a2V5SWRlbnRpZmllckZvckdka0tleUNvZGUpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6bmFtZU9mRHJh
Z1Bhc3RlYm9hcmQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpvc05hbWVGb3JVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbToKKyAgICAgICAgKFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQp
OgorICAgICAgICAqIHBsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlm
aWVyRm9yV1BFS2V5Q29kZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJl
Y29yZGVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29udGFpbmVyUHJvZmlsZSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVIZWFk
ZXI6OnBhcnNlSGVhZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUxh
enlJbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3Ip
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1S
ZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZv
Q3VybC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OnZlcmlmaWNhdGlv
bkVycm9yRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVKYXJEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVKYXJEQjo6c2VhcmNo
Q29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6ZGVmYXVsdFBhdGhGb3JVUkwpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRyeTo6Q3VybENhY2hlRW50cnkpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VybENhY2hlRW50cnk6OnNhdmVSZXNwb25zZUhlYWRlcnMpOgorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNldENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxIYW5kbGU6
OmFwcGVuZFJlcXVlc3RIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6cmVt
b3ZlUmVxdWVzdEhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsRG93bmxvYWQ6OndpbGxTZW5kUmVx
dWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpzZXR1cFBVVCk6CisgICAgICAgIChXZWJD
b3JlOjpDdXJsUmVxdWVzdDo6c2V0dXBTZW5kRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkUmVjZWl2ZVJlc3BvbnNlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZWZhdWx0Q29va2llSmFyUGF0aCk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwOgorICAgICAgICAoT3Bl
blNTTDo6dGxzVmVyc2lvbik6CisgICAgICAgIChPcGVuU1NMOjp0bHNDaXBoZXJOYW1lKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluSW50ZXJuYWwpOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgICog
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpMZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzQ29va2ll
cyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JT
b3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OmF1dGhlbnRpY2F0aW9uRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjp0bHNFcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0
L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2Fu
RGlyZWN0b3J5Rm9yRGljdGlvbmFyaWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9jYWxlV2luOjppbml0aWFsaXplTG9j
YWxlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dXBsb2FkRmlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6YWxsRmlsZXNUZXh0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRkTWlt
ZVR5cGVzRm9yRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnR5cGVzU2Fm
ZUZvckJpbmRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
U3lzdGVtSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvc1ZlcnNpb25Gb3JVQVN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjphcmNoaXRlY3R1cmVUb2tlbkZvclVBU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oOgorICAgICAgICAo
UGxhdGZvcm1YUjo6YnV0dG9uVHlwZVRvU3RyaW5nKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OmF4
aXNUeXBldG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGls
cy5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6aGFuZGVuZXNzVG9TdHJpbmcpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6cmVz
ZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisKIDIwMjItMDQtMDQgIFbDrWN0b3IgTWFudWVsIErDoXF1
ZXogTGVhbCAgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIENvbXBp
bGF0aW9uIGVycm9yIGluIGRlYnVnIG1vZGUgYWZ0ZXIgcjI5MjI3OQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cK
aW5kZXggOWI5MzZlMmMyNDRlYzI3Y2VlYjVkYWZkNmJlMjdiYTZmYjU2ZjU5OC4uZDY2NjlmNmVh
MzhiZWUyNGFlOGIwM2NjMjQ2YmRmNjc0ZjExYjFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGlj
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcDoKKyAgICAgICAgKFBB
TDo6V2ViR1BVOjphZGFwdGVyTmFtZSk6CisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9J
bXBsL1dlYkdQVURldmljZUltcGwuY3BwOgorICAgICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUlt
cGw6OnBvcEVycm9yU2NvcGUpOgorCiAyMDIyLTA0LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIF9XS0RhdGFUYXNrIGRvZXNuJ3Qgd29yayBpbiBt
YWNDYXRhbHlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA1NmY5Zjg1ZjViNjY1OWRmNDZhYzU2MWI1MGE4
YjAyMGMzNDhmZjkxLi40ZDU0OWY1MTE2MzhjMzExNTA3NmIwODNmYTI0MzQzN2VlZjY0ODQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIyLTA0LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNv
bnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpD
b21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KToKKyAgICAgICAgKiBTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMpOgorICAgICAgICAo
V2ViRHJpdmVyOjpTZXNzaW9uOjpnZXRDdXJyZW50VVJMKToKKyAgICAgICAgKFdlYkRyaXZlcjo6
U2Vzc2lvbjo6c2V0V2luZG93UmVjdCk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVs
ZW1lbnRJc0ZpbGVVcGxvYWQpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVtZW50
SXNFZGl0YWJsZSk6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmVsZW1lbnRTZW5kS2V5
cyk6CisgICAgICAgIChXZWJEcml2ZXI6OmJ1aWx0QXV0b21hdGlvbkNvb2tpZSk6CisgICAgICAg
IChXZWJEcml2ZXI6OmF1dG9tYXRpb25Tb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkRyaXZlcjo6
YXV0b21hdGlvbk9yaWdpblR5cGUpOgorICAgICAgICAqIFdlYkRyaXZlclNlcnZpY2UuY3BwOgor
ICAgICAgICAoV2ViRHJpdmVyOjpXZWJEcml2ZXJTZXJ2aWNlOjpydW4pOgorICAgICAgICAoV2Vi
RHJpdmVyOjpkZXNlcmlhbGl6ZVByb3h5KToKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVy
U2VydmljZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAgICAgICogc29ja2V0L0NhcGFiaWxpdGllc1Nv
Y2tldC5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OkNhcGFiaWxpdGllc1NvY2tldDo6cGFyc2VD
YXBhYmlsaXRpZXMpOgorICAgICAgICAqIHNvY2tldC9IVFRQU2VydmVyU29ja2V0LmNwcDoKKyAg
ICAgICAgKFdlYkRyaXZlcjo6SFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKToKKwogMjAy
Mi0wMy0zMSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAg
IFtQbGF5U3RhdGlvbl0gRW5hYmxlIFdlYkRyaXZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQ
VS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwppbmRleCA3NWI1MzRiNTQ0NGU0
NTE4NTBiMGZkZWY3YzRiMzMxNjY0MzU1NDk2Li4yNjdiZDgwYjgyNjg5YmUyMWE3MTNlZGVlNGY2
YzA5MGZlZTQ1NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3Qg
Y2hhciopIGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVS9Db21tYW5kRW5jb2Rlci5tbToKKyAgICAg
ICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUpOgorICAgICAg
ICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcik6CisgICAgICAg
IChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZSk6CisKIDIwMjIt
MDQtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Rv
cCBjb3B5aW5nIFN0YWdlZEZyYW1ld29ya3MgdG8gdGhlIHNlY29uZGFyeSBwYXRoIGJ5IGRlZmF1
bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMDQ1ZWMyZDIyYjJiNzI4NGIxOGVjNjdmNTA4YzY1MDM2ZjE4MDc5My4u
YWRhM2VhYWE5OTIwMmY0MDlhMTY1NDQ1MWQzNGY5MjU2NDVmY2UxNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjAgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGlj
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHN0cmlu
Z0ZvclNTTFByb3RvY29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291
cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFU
YXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
RGF0YVRhc2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRh
VGFza1NvdXA6OndyaXRlRG93bmxvYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtEYXRhVGFza1NvdXA6OmRpZEZpbmlzaERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZGlkR2V0RmlsZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrRGF0YVRhc2tTb3VwOjpyZWFkRmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0RhdGFUYXNrU291cDo6ZW51bWVyYXRlRmlsZUNoaWxkcmVuQ2FsbGJhY2spOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJTb2NrZXRUYXNrOjpkaWRDb25uZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29h
L1dLUmVtb3RlT2JqZWN0Q29kZXIubW06CisgICAgICAgIChXZWJLaXQ6Om1ldGhvZFNpZ25hdHVy
ZXNBcmVDb21wYXRpYmxlKToKKyAgICAgICAgKGRlY29kZUludm9jYXRpb24pOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgIChy
ZXBseUJsb2NrU2lnbmF0dXJlKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkg
X2ludm9rZU1ldGhvZDpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVx
dWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSk6CisgICAgICAg
ICogU2hhcmVkL2d0ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpwcmludGVy
Tm90Rm91bmRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OmludmFsaWRQYWdlUmFuZ2VUb1ByaW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24u
Y3BwOgorICAgICAgICAod2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwOgorICAgICAg
ICAod2Via2l0X2NyZWRlbnRpYWxfbmV3X2Zvcl9jZXJ0aWZpY2F0ZV9waW4pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9X
ZWJLaXRTZXR0aW5nc1ByaXZhdGU6Ol9XZWJLaXRTZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAo
d2Via2l0X3NldHRpbmdzX3NldF91c2VyX2FnZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRVUklTY2hl
bWVSZXF1ZXN0UmVhZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZmluaXNoX2Vycm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNl
R3RrNC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdTb3VyY2U6OmJlZ2luKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkRyb3BUYXJnZXQ6OkRyb3BUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ry
b3BUYXJnZXRHdGs0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6RHJvcFRhcmdl
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJv
dG9jb2xIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjp+UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJnZXRMaXN0
Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF9j
b2xvcl9wYXJzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5p
bmdDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6bWFsd2FyZURldGFpbHNCYXNlKToKKyAgICAg
ICAgKFdlYktpdDo6cmVwb3J0QW5FcnJvckJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2Nv
YS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5k
UGFnZUFuZFdpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OnJlbW90ZUZpbGVSZXBsYWNlQ29udGVu
dHNDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVj
dG9yVUlQcm94eUd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6ZmlsZVJlcGxh
Y2VDb250ZW50c0NhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZv
cm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6YmluZFN5bWxpbmtzUmVhbFBhdGgpOgorICAgICAgICAoV2ViS2l0OjpidWJi
bGV3cmFwU3Bhd24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAg
ICogVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2Fy
ZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9n
dGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1Bvb2xXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpiYWNrZW5kQ29tbWFuZHNQYXRo
KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJl
Y2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
dGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fZG9j
dW1lbnRfZ2V0X3Zpc2liaWxpdHlfc3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6Omhh
bmRsZUtleVByZXNzKToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlS2V5RG93bik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpydW5KYXZhU2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9X
ZWJQYWdlR0xpYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRp
dG9yU3RhdGUgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJp
bnRPcGVyYXRpb25HdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtVXNlckFn
ZW50IGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVu
dCk6CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAg
IChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
cik6CisKIDIwMjItMDQtMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNlcnZpY2UtV29ya2VyLU5hdmlnYXRpb24tUHJlbG9hZCBoZWFkZXIgbm90IGJlaW5n
IHNlbnQgd2hlbiBOYXZpZ2F0aW9uIFByZWxvYWQgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwppbmRleCBlYTM5ODg4MTRkNjQ5NGVlZDIzNTBjZGY4Nzc2OWVjOWZhZmE5ODll
Li4zYTlhM2Q3NTFmZjY3MDIzNTMxY2U4ZGMyZjI5N2E4OGIyOTgyNDA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikg
Y29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAgKC1bRE9NSFRNTExpbmtFbGVt
ZW50IF9tZWRpYVF1ZXJ5TWF0Y2hlc10pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50OjpnZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICogV2ViVmlldy9XZWJEYXRhU291
cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXRPdmVycmlkZVRleHRFbmNvZGlu
Z05hbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJW
aWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3Jv
dXBOYW1lOl0pOgorCiAyMDIyLTA0LTA0ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNv
bT4KIAogICAgICAgICBbWENCdWlsZF0gV2ViS2l0TGVnYWN5J3MgIk1pZ3JhdGVkIGhlYWRlcnMi
IHNjcmlwdCBkb2VzIG5vdCBlbWl0IHRhc2sgaW5mb3JtYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0No
YW5nZUxvZwppbmRleCA0NTBkZTZiYmE4ZmYyYTFkY2Y3ZGE2ZTdlZjc3NDdlZWM2NjdkYjNiLi4z
ZGU0Mzg2MWRiMjBhZDQ3Y2ZmYTJiOTcyNGQyNDNiYjQ2ODYyZTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTc1IEBACisyMDIyLTA0LTA0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFyayBTdHJpbmcoY29uc3QgY2hhciopIGNv
bnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIEFjY2Vzc2libGVCYXNlLmNwcDoKKyAgICAgICAgKEFjY2Vzc2libGVC
YXNlOjpBY2Nlc3NpYmxlQmFzZSk6CisgICAgICAgIChBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vzc2li
bGVCYXNlKToKKyAgICAgICAgKiBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHA6CisgICAgICAg
IChDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Q0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcpOgorICAg
ICAgICAoQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyk6
CisgICAgICAgICogRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRGVmYXVs
dERvd25sb2FkRGVsZWdhdGU6OkRlZmF1bHREb3dubG9hZERlbGVnYXRlKToKKyAgICAgICAgKERl
ZmF1bHREb3dubG9hZERlbGVnYXRlOjp+RGVmYXVsdERvd25sb2FkRGVsZWdhdGUpOgorICAgICAg
ICAqIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVs
ZWdhdGU6OkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChEZWZhdWx0UG9saWN5RGVs
ZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUpOgorICAgICAgICAqIE1lbW9yeVN0cmVhbS5j
cHA6CisgICAgICAgIChNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbSk6CisgICAgICAgIChNZW1v
cnlTdHJlYW06On5NZW1vcnlTdHJlYW0pOgorICAgICAgICAqIFdlYkFjdGlvblByb3BlcnR5QmFn
LmNwcDoKKyAgICAgICAgKFdlYkFjdGlvblByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJh
Zyk6CisgICAgICAgIChXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFn
KToKKyAgICAgICAgKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkFwcGxp
Y2F0aW9uQ2FjaGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQXBwbGljYXRp
b25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQXBwbGljYXRpb25D
YWNoZTo6c3RvcmFnZSk6CisgICAgICAgICogV2ViQXJjaGl2ZS5jcHA6CisgICAgICAgIChXZWJB
cmNoaXZlOjpXZWJBcmNoaXZlKToKKyAgICAgICAgKFdlYkFyY2hpdmU6On5XZWJBcmNoaXZlKToK
KyAgICAgICAgKiBXZWJCYWNrRm9yd2FyZExpc3QuY3BwOgorICAgICAgICAoV2ViQmFja0Zvcndh
cmRMaXN0OjpXZWJCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQmFja0ZvcndhcmRMaXN0
Ojp+V2ViQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKiBXZWJDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDYWNoZTo6V2ViQ2FjaGUpOgorICAgICAgICAoV2ViQ2FjaGU6On5XZWJDYWNoZSk6Cisg
ICAgICAgICogV2ViQ29yZVN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3Rp
Y3M6OldlYkNvcmVTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjp+V2Vi
Q29yZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRQ
cm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjpq
YXZhU2NyaXB0T2JqZWN0VHlwZUNvdW50cyk6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6
bWVtb3J5U3RhdGlzdGljcyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJv
bUV2ZW50KToKKyAgICAgICAgKiBXZWJEYXRhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkRhdGFT
b3VyY2U6On5XZWJEYXRhU291cmNlKToKKyAgICAgICAgKiBXZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjpXZWJEYXRhYmFzZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViRGF0YWJhc2VNYW5hZ2VyOjp+V2ViRGF0YWJhc2VNYW5hZ2VyKToKKyAgICAgICAg
KiBXZWJEb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJEb2N1bWVudExvYWRlcjo6V2Vi
RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVu
dExvYWRlcik6CisgICAgICAgICogV2ViRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViRG93bmxv
YWQ6OldlYkRvd25sb2FkKToKKyAgICAgICAgKFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQpOgor
ICAgICAgICAqIFdlYkRvd25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViRG93bmxvYWQ6OmNh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBXZWJEcm9wU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkRyb3BTb3VyY2U6OldlYkRyb3BTb3VyY2UpOgorICAgICAgICAoV2Vi
RHJvcFNvdXJjZTo6fldlYkRyb3BTb3VyY2UpOgorICAgICAgICAqIFdlYkVsZW1lbnRQcm9wZXJ0
eUJhZy5jcHA6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6OldlYkVsZW1lbnRQcm9w
ZXJ0eUJhZyk6CisgICAgICAgIChXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJv
cGVydHlCYWcpOgorICAgICAgICAqIFdlYkVycm9yLmNwcDoKKyAgICAgICAgKFdlYkVycm9yOjpX
ZWJFcnJvcik6CisgICAgICAgIChXZWJFcnJvcjo6fldlYkVycm9yKToKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6V2ViRnJhbWUpOgorICAgICAgICAoV2ViRnJh
bWU6On5XZWJGcmFtZSk6CisgICAgICAgIChXZWJGcmFtZTo6bG9hZERhdGEpOgorICAgICAgICAo
V2ViRnJhbWU6OnNlbGVjdEFsbCk6CisgICAgICAgICogV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJGcmFtZVBvbGljeUxpc3RlbmVyOjpXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGljeUxp
c3RlbmVyKToKKyAgICAgICAgKiBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6OldlYkdlb2xvY2F0aW9uUG9saWN5
TGlzdGVuZXIpOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6fldlYkdl
b2xvY2F0aW9uUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAqIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Q
b3NpdGlvbik6CisgICAgICAgIChXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbik6CisgICAgICAgICogV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKToKKyAgICAg
ICAgKFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbik6CisgICAg
ICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KToK
KyAgICAgICAgKFdlYkhpc3Rvcnk6On5XZWJIaXN0b3J5KToKKyAgICAgICAgKiBXZWJIaXN0b3J5
SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0pOgorICAg
ICAgICAoV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSk6CisgICAgICAgICogV2ViSW5z
cGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkluc3BlY3Rvcjo6V2ViSW5zcGVjdG9yKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3Rvcik6CisgICAgICAgICogV2ViSmF2YVNjcmlw
dENvbGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJKYXZhU2NyaXB0Q29sbGVjdG9yOjpXZWJKYXZh
U2NyaXB0Q29sbGVjdG9yKToKKyAgICAgICAgKFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6On5XZWJK
YXZhU2NyaXB0Q29sbGVjdG9yKToKKyAgICAgICAgKiBXZWJLaXRDbGFzc0ZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViS2l0Q2xhc3NGYWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkpOgorICAgICAg
ICAoV2ViS2l0Q2xhc3NGYWN0b3J5Ojp+V2ViS2l0Q2xhc3NGYWN0b3J5KToKKyAgICAgICAgKiBX
ZWJLaXRNZXNzYWdlTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXRNZXNzYWdlTG9vcDo6V2ViS2l0
TWVzc2FnZUxvb3ApOgorICAgICAgICAoV2ViS2l0TWVzc2FnZUxvb3A6On5XZWJLaXRNZXNzYWdl
TG9vcCk6CisgICAgICAgICogV2ViS2l0U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJLaXRT
dGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKToKKyAgICAgICAgKFdlYktpdFN0YXRpc3RpY3M6
On5XZWJLaXRTdGF0aXN0aWNzKToKKyAgICAgICAgKiBXZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJNdXRhYmxlVVJMUmVxdWVzdDo6V2ViTXV0YWJsZVVSTFJlcXVlc3QpOgor
ICAgICAgICAoV2ViTXV0YWJsZVVSTFJlcXVlc3Q6On5XZWJNdXRhYmxlVVJMUmVxdWVzdCk6Cisg
ICAgICAgICogV2ViTmF2aWdhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViTmF2aWdhdGlvbkRh
dGE6OldlYk5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYk5hdmlnYXRpb25EYXRhOjp+V2Vi
TmF2aWdhdGlvbkRhdGEpOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbi5jcHA6CisgICAgICAg
IChXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJOb3RpZmlj
YXRpb246On5XZWJOb3RpZmljYXRpb24pOgorICAgICAgICAqIFdlYk5vdGlmaWNhdGlvbkNlbnRl
ci5jcHA6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6OldlYk5vdGlmaWNhdGlvbkNl
bnRlcik6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DZW50ZXI6On5XZWJOb3RpZmljYXRpb25D
ZW50ZXIpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYlByZWZl
cmVuY2VzOjpXZWJQcmVmZXJlbmNlcyk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6fldlYlBy
ZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJSZXNv
dXJjZTo6V2ViUmVzb3VyY2UpOgorICAgICAgICAoV2ViUmVzb3VyY2U6On5XZWJSZXNvdXJjZSk6
CisgICAgICAgICogV2ViU2NyaXB0T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYlNjcmlwdE9iamVj
dDo6V2ViU2NyaXB0T2JqZWN0KToKKyAgICAgICAgKFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlw
dE9iamVjdCk6CisgICAgICAgICogV2ViU2NyaXB0V29ybGQuY3BwOgorICAgICAgICAoV2ViU2Ny
aXB0V29ybGQ6OldlYlNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYlNjcmlwdFdvcmxkOjp+V2Vi
U2NyaXB0V29ybGQpOgorICAgICAgICAqIFdlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAg
KFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJTZWN1
cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBXZWJTZXJpYWxpemVk
SlNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJTZXJpYWxpemVkSlNWYWx1ZTo6V2ViU2VyaWFsaXpl
ZEpTVmFsdWUpOgorICAgICAgICAoV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVk
SlNWYWx1ZSk6CisgICAgICAgICogV2ViVGV4dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYlRl
eHRSZW5kZXJlcjo6V2ViVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYlRleHRSZW5kZXJlcjo6
fldlYlRleHRSZW5kZXJlcik6CisgICAgICAgICogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuY3BwOgorICAgICAgICAoV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OldlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bmRlcik6CisgICAgICAgIChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKToKKyAgICAgICAgKiBXZWJVUkxDcmVk
ZW50aWFsLmNwcDoKKyAgICAgICAgKFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwp
OgorICAgICAgICAoV2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwpOgorICAgICAg
ICAqIFdlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHA6CisgICAgICAgIChXZWJVUkxQcm90ZWN0aW9u
U3BhY2U6OldlYlVSTFByb3RlY3Rpb25TcGFjZSk6CisgICAgICAgIChXZWJVUkxQcm90ZWN0aW9u
U3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UpOgorICAgICAgICAqIFdlYlVSTFJlc3BvbnNl
LmNwcDoKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSk6CisgICAgICAg
IChXZWJVUkxSZXNwb25zZTo6fldlYlVSTFJlc3BvbnNlKToKKyAgICAgICAgKFdlYlVSTFJlc3Bv
bnNlOjpjcmVhdGVJbnN0YW5jZSk6CisgICAgICAgICogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcDoKKyAgICAgICAgKFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6V2ViVXNlckNvbnRlbnRV
UkxQYXR0ZXJuKToKKyAgICAgICAgKFdlYlVzZXJDb250ZW50VVJMUGF0dGVybjo6fldlYlVzZXJD
b250ZW50VVJMUGF0dGVybik6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJW
aWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6On5XZWJWaWV3KToKKyAgICAgICAgKFdl
YlZpZXc6OmV4ZWNDb21tYW5kKToKKyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXli
b2FyZEV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHkpOgorICAgICAgICAoV2ViVmlldzo6
Y3V0KToKKyAgICAgICAgKFdlYlZpZXc6OnBhc3RlKToKKyAgICAgICAgKFdlYlZpZXc6OmNvcHlV
UkwpOgorICAgICAgICAoV2ViVmlldzo6ZGVsZXRlXyk6CisgICAgICAgICogV2ViV29ya2Vyc1By
aXZhdGUuY3BwOgorICAgICAgICAoV2ViV29ya2Vyc1ByaXZhdGU6OldlYldvcmtlcnNQcml2YXRl
KToKKyAgICAgICAgKFdlYldvcmtlcnNQcml2YXRlOjp+V2ViV29ya2Vyc1ByaXZhdGUpOgorCiAy
MDIyLTAzLTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU3Ry
aW5nJ3MgZmluZCgpIC8gcmV2ZXJzZUZpbmQoKSAvIHJlcGxhY2UoKSBzaG91bGQgdGFrZSBpbiBh
IFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IDY1OGUwNGJmNWFkN2ViNjEzNjMwYjdiNzEx
MWE5YmYyYWQyM2NkMzEuLjBkMzU4Mzg1MzJmODk0NmM5NzQ5YTcxYjIxYzQ3NTA0MzFlMzM2NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKQEAg
LTk3MSw3ICs5NzEsNyBAQCBKU0NDaGVja1N5bnRheFJlc3VsdCBqc2NfY29udGV4dF9jaGVja19z
eW50YXgoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogYwogICAgIEpTQzo6Vk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CiAKLSAgICBVUkwgc291cmNlVVJMID0gdXJpID8gVVJMKHsgfSwgdXJpKSA6IFVSTCgpOworICAg
IFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBVUkwoU3RyaW5nIHsgdXJpIH0pIDogVVJMKCk7CiAgICAg
SlNDOjpTb3VyY2VDb2RlIHNvdXJjZSA9IEpTQzo6bWFrZVNvdXJjZShTdHJpbmc6OmZyb21VVEY4
KGNvZGUsIGxlbmd0aCA8IDAgPyBzdHJsZW4oY29kZSkgOiBsZW5ndGgpLCBKU0M6OlNvdXJjZU9y
aWdpbiB7IHNvdXJjZVVSTCB9LAogICAgICAgICBzb3VyY2VVUkwuc3RyaW5nKCkgLCBUZXh0UG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyKCkpKTsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JT
b2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0
L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXggNWUyMzZhMmM0ZTAyNjc4YTE1YjgzZTg3
ZmY3N2ZmZDBlMWEzZGEzYi4uZTdjMDE5ZGZhZjdiYTViZjYyODYyMThlNjM1MDRlMjIzNTk2MWU4
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29j
a2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKQEAgLTM2
Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rvcjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lv
bihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0byBjYXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJp
bGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2UgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwot
ICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nlck5hbWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBh
YmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAgICBtZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dz
ZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2FwYWJpbGl0eS0+YnJvd3NlclZlcnNpb24gOiAi
Iik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/
IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1wdHlTdHJpbmcoKSk7CisgICAgbWVzc2FnZS0+
c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJy
b3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7CiAgICAgc2VuZEV2ZW50LT5zZXRTdHJpbmco
Im1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKICAgICBzZW5kV2ViSW5zcGVj
dG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJpbmcoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1MGIyZGZmYmMxZjcxYjU4ZmI3NzZmYTQ4
NzE2YzdlZjVmMjZhZmE1Li5hNzQ2NmM5NzI0ZjRkOTA5OTMyNTMxMzBhYmYxMWY4YzExODBhYjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCkBAIC0yODc0
LDcgKzI4NzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT05fV0lUSF9BVFRSSUJVVEVTKGZ1
bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUsIFNVUFBSRVNTX0FTQQogCiAjZWxzZSAvLyBub3QgRU5B
QkxFKEFTU0VNQkxFUikKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKLSAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9y
IHRoaXMgcGxhdGZvcm0iKTsKKyAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwg
dGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgcGxhdGZvcm0iX3MpOwogI2VuZGlm
IC8vIEVOQUJMRShBU1NFTUJMRVIpCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0Zp
bGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNzFlNGRj
ZmE1Y2Q2OTQxN2RiZWNjY2M5Y2FjYWU4ZjE1NDg1YWQ1ZC4uMzlmMmUyY2EyYTFkOGMyZTZiNDhi
MmM3ZTMzMjViMzNjNzQxMWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvRmlsZVN5c3Rl
bS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKQEAgLTI4NiwxNiArMjg2
LDEzIEBAIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9GaWxlSGFuZGxlKGNvbnN0IFN0cmluZyYg
cGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0YXJnCiAKIGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVt
ZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJpbmcmIGZpbGVCKQogewotICAgIGF1dG8g
ZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlQSk7Ci0gICAgYXV0byBm
c1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVCKTsKLQotICAgIGlmIChm
c1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIuaXNOdWxsKCkpCisgICAgaWYgKGZpbGVB
LmlzTnVsbCgpIHx8IGZpbGVCLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwogCi0gICAgYXV0byBmaWxlQURldiA9IGdldEZpbGVEZXZp
Y2VJZChmc1JlcEZpbGVBKTsKLSAgICBhdXRvIGZpbGVCRGV2ID0gZ2V0RmlsZURldmljZUlkKGZz
UmVwRmlsZUIpOworICAgIGF1dG8gZmlsZUFEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZmlsZUEpOwor
ICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNlSWQoZmlsZUIpOwogCiAgICAgaWYgKGZp
bGVBRGV2ICYmIGZpbGVCRGV2KQogICAgICAgICByZXN1bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJE
ZXYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oIGIvU291cmNlL1dU
Ri93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDIxMTgzYWE3ZWIyZjY3ZTk0N2M0OGM1ZDkxNzMyMDVh
ODYxY2ZhYjkuLmJjYWUxMDZiM2UzNDVlMWRiZjhkZWI1YmQ0Zjc5NzM4ZjA2ODVhOWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9G
aWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcg
cGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlv
bmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JU
X1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gdm9sdW1lRmlsZUJsb2NrU2l6ZShjb25z
dCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdl
dEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpv
cHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJik7CiBXVEZfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xpbmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQ
YXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1BhdGgpOwogV1RGX0VYUE9SVF9QUklWQVRF
IFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZlKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAppbmRleCA2ZTBlNDc2NzIy
NjY0NGE5NjIzYjJiYzYzMWFhNTA5MTAxZTU4ZjcxLi44NTEwMDQwNjNlY2UzMzBhZDhhYzczZTQ2
ZGRlMGRhNWQwOTg0MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0
ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcApA
QCAtMjQ3LDggKzI0NywxMiBAQCBpbnQgcmVhZEZyb21GaWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBo
YW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiAgICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6
Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUp
CitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBTdHJpbmcmIHBh
dGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocGF0aCk7
CisgICAgaWYgKGZzRmlsZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxHRmlsZUluZm8+IGZpbGVJbmZvID0gYWRv
cHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2luZm8oZmlsZS5nZXQoKSwgR19GSUxFX0FU
VFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVsbHB0cikpOwogICAgIGlmICghZmlsZUlu
Zm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3Bw
IGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcAppbmRleCA3ZjllOGZj
M2QwZmMzZTNjNjg3NGNlNjcyOGUzNmVkMjRjODBmMzhjLi45MzMyNDUwZmZiZTY5ODg1MjNlZDYx
OWFmODNhZGVmMWJiM2I4ZTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxl
U3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJ
WC5jcHAKQEAgLTI0MSw4ICsyNDEsMTIgQEAgZW5kOgogfQogI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkKIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0
cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQoY29u
c3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNGaWxlID0gZmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKICAgICBzdHJ1Y3Qgc3RhdCBmaWxlU3RhdDsKICAgICBpZiAoc3RhdChm
c0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0xKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggYTQzZWEyZTQ2NTBlMDMzZThlZDFiZWZi
NzdjNTAwODA5MTNkNGRiYS4uNjcxYmY4ODIyNmRiMGY2ODZlNzMwZDZiNmRmMGU0YTJhOGMyMDY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC04MCw4ICs4MCwxMSBAQCBwdWJsaWM6CiAg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAKLSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJp
bmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwtdGVybWluYXRlZCBzb3VyY2UuCi0gICAg
V1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKTsKKyAgICAv
LyBUaGlzIGNvbnN0cnVjdG9yIGlzIGV4cGxpY2l0IHRvIGVuY291cmFnZSBkZXZlbG9wZXJzIHRv
IHVzZSBBU0NJSUxpdGVyYWwgYW5kIHRoZSAiIl9zIHN1ZmZpeCB3aGVuIHBvc3NpYmxlLAorICAg
IC8vIGFzIHRoZSBTdHJpbmcoQVNDSUlMaXRlcmFsKSBpcyBtb3JlIGVmZmljaWVudC4gQWxzbyBu
b3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3RvciB0cmVhdHMgaW5wdXQgYXMgTGF0aW4tMS4KKyAgICAv
LyBEZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBTdHJpbmc6OmZyb21VVEY4KCkgaW5zdGVh
ZC4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IHJlbmFtZSB0aGlzIHRvIGZyb21M
YXRpbjEoKS4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5n
IGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCiAgICAgU3RyaW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwIGIvU291cmNlL1dURi93
dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKaW5kZXggYjAxMmM4YzFjZjM5YWQ4OTkxZjRmYzRlMDYx
OGUyNzk4NWM4YmI5MS4uOThiZjU2NmNlMjVjYTVlNmNmMWY0MTlkNDMwNzUyMmE5MzUxYzU0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKKysrIGIvU291
cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3RyaW5n
IGxvZ0xldmVsU3RyaW5nKCkKICAgICBXVEZMb2dBbHdheXMoIldFQktJVF9ERUJVRyBpcyBub3Qg
ZW1wdHksIGJ1dCB0aGlzIGlzIGEgcmVsZWFzZSBidWlsZC4gTm90aWNlIHRoYXQgbWFueSBsb2cg
bWVzc2FnZXMgd2lsbCBvbmx5IGFwcGVhciBpbiBhIGRlYnVnIGJ1aWxkLiIpOwogI2VuZGlmCiAK
LSAgICByZXR1cm4gbG9nRW52OworICAgIHJldHVybiBTdHJpbmcgeyBsb2dFbnYgfTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5
c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAKaW5kZXgg
MjhkMWNlNWY2ZWUxOGJkMDY5ZDdmNjc2ZGI1MTI1NGY0YTM1ZWZhOC4uOTc5MTVhMjM4MWZjMjMz
Njc4ZDUyZGMzZjBkMGRhNTczY2NlOTg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2lu
L0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyByb2FtaW5nVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQ
REFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0
IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8aW50MzJfdD4gZ2V0RmlsZURldmljZUlk
KGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNG
aWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsKICAgICBpZiAoIWlzSGFuZGxlVmFsaWQo
aGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5n
dWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4OTkzMWM0YzJkNTMzMTdlOGM1ZTAxN2UyYWEx
Mi4uYzkyYTc3YThjMTY0MjllMGZkNjI0NDI0MTIwMWIzZTk2NTMzMGRkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93
aW4vTGFuZ3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZv
cm1MYW5ndWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRMYW5ndWFnZS5pc29sYXRlZENvcHkoKTsK
IAotICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFO
R05BTUUsICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FM
RV9TSVNPNjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAgU3RyaW5nIGNvdW50cnlOYW1lID0gbG9j
YWxlSW5mbyhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwgU3RyaW5nKCkpOwogCiAgICAgaWYgKGNv
dW50cnlOYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRw
b2ludC5jcHAKaW5kZXggMWFlNjIyOTg1OGZlNGU5Y2U2ODNjMzJjMmU2YWI3YjkwMThiODA2Zi4u
MjllMjU1NzY0ZWEzNWYxMjRlMWM5YmRhMTNmOTgzNTkwYTA4MTJiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFF
bmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UlRDU2RwVHlwZSwgU3RyaW5nPj4gZmV0Y2hEZXNj
cmlwdGlvbihHc3RFbGVtZW50KgogCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBzZHBTdHJpbmcoZ3N0
X3NkcF9tZXNzYWdlX2FzX3RleHQoZGVzY3JpcHRpb24tPnNkcCkpOwogICAgIEdTVF9UUkFDRV9P
QkpFQ1Qod2VicnRjQmluLCAiJXMtZGVzY3JpcHRpb24gU0RQOiAlcyIsIG5hbWUsIHNkcFN0cmlu
Zy5nZXQoKSk7Ci0gICAgcmV0dXJuIHsgeyBmcm9tU2Vzc2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVz
Y3JpcHRpb24uZ2V0KCkpLCBzZHBTdHJpbmcuZ2V0KCkgfSB9OworICAgIHJldHVybiB7IHsgZnJv
bVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0aW9uLmdldCgpKSwgU3RyaW5nIHsgc2Rw
U3RyaW5nLmdldCgpIH0gfSB9OwogfQogCiBzdGF0aWMgR3N0V2ViUlRDU2lnbmFsaW5nU3RhdGUg
ZmV0Y2hTaWduYWxpbmdTdGF0ZShHc3RFbGVtZW50KiB3ZWJydGNCaW4pCkBAIC00NTYsNyArNDU2
LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjpzdG9yZVJlbW90ZU1MaW5lSW5mbyhH
c3RTRFBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0K
IAotICAgICAgICBtX21lZGlhRm9yTWlkLnNldCh7IG1pZCB9LCBnX3N0cl9lcXVhbChtZWRpYVR5
cGUsICJhdWRpbyIpID8gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7CisgICAgICAgIG1fbWVkaWFGb3JNaWQuc2V0KFN0
cmluZyB7IG1pZCB9LCBnX3N0cl9lcXVhbChtZWRpYVR5cGUsICJhdWRpbyJfcykgPyBSZWFsdGlt
ZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZp
ZGVvKTsKIAogICAgICAgICAvLyBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVh
bWVyL2dzdC1wbHVnaW5zLWJhZC8tL21lcmdlX3JlcXVlc3RzLzE5MDcKICAgICAgICAgaWYgKHNk
cE1lZGlhSGFzQXR0cmlidXRlS2V5KG1lZGlhLCAiaWNlLWxpdGUiKSkgewpAQCAtOTI0LDcgKzky
NCw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRlKEdTdHJl
YW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAKICAgICBpZiAoIWNhbmRpZGF0ZS5jYW5k
aWRhdGUuc3RhcnRzV2l0aCgiY2FuZGlkYXRlOiIpKSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJDb25uZWN0aW9uQmFja2VuZDo6QWRkSWNl
Q2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92ZShjYWxsYmFjaykpXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhw
ZWN0IGxpbmU6IGNhbmRpZGF0ZTo8Y2FuZGlkYXRlLXN0cj4iIH0pOworICAgICAgICAgICAgdGFz
ay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNhbmRpZGF0
ZTo8Y2FuZGlkYXRlLXN0cj4iX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRk
SWNlQ2FuZGlkYXRlKEdTdHJlYW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAgICAgYXV0
byBwYXJzZWRDYW5kaWRhdGUgPSBwYXJzZUljZUNhbmRpZGF0ZVNEUChjYW5kaWRhdGUuY2FuZGlk
YXRlKTsKICAgICBpZiAoIXBhcnNlZENhbmRpZGF0ZSkgewogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0YXNrID0gY3JlYXRlU2hhcmVkVGFzazxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OkFkZElj
ZUNhbmRpZGF0ZUNhbGxiYWNrRnVuY3Rpb24+KFdURk1vdmUoY2FsbGJhY2spKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIHRhc2stPnJ1bihFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgIkVy
cm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRpZGF0ZSIgfSk7CisgICAgICAgICAgICB0YXNrLT5ydW4o
RXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFcnJvciBwcm9jZXNzaW5nIElDRSBjYW5kaWRh
dGUiX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA4NSw5
ICsxMDg1LDkgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVz
Y3JpcHRpb25TdWNjZWVkZWQoR1VuaXF1ZVB0cjxHc3RXZWIKIAogICAgICAgICBHVW5pcXVlUHRy
PGNoYXI+IHNkcChnc3Rfc2RwX21lc3NhZ2VfYXNfdGV4dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAg
ICAgICAgIGlmIChtX2lzSW5pdGlhdG9yKQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoc2RwLmdldCgpKTsKKyAgICAgICAgICAgIG1fcGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyU3VjY2VlZGVkKFN0cmluZyB7IHNkcC5nZXQo
KSB9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3JlYXRlQW5zd2VyU3VjY2VlZGVkKHNkcC5nZXQoKSk7CisgICAgICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uQmFja2VuZC5jcmVhdGVBbnN3ZXJTdWNjZWVkZWQoU3RyaW5nIHsgc2RwLmdldCgpIH0p
OwogICAgIH0pOwogfQogCkBAIC0xMDk3LDcgKzEwOTcsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlh
RW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlvbkZhaWxlZChHVW5pcXVlUHRyPEdFcnJv
cj4mJgogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgYXV0byBleGMgPSBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciwgZXJyb3IgPyBlcnJv
ci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIiB9OworICAgICAgICBhdXRvIGV4YyA9IEV4Y2Vw
dGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpIDogIlVua25vd24gRXJyb3IiX3MgfTsKICAgICAgICAgaWYgKG1faXNJbml0aWF0b3Ip
CiAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVPZmZlckZhaWxlZChX
VEZNb3ZlKGV4YykpOwogICAgICAgICBlbHNlCkBAIC0xMTI1LDcgKzExMjUsNyBAQCB2b2lkIEdT
dHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFuc2NlaXZlcnMoKQogICAgICAgICBpZiAo
IXJlY2VpdmVyIHx8ICFtaWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBtX3Bl
ZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFuc2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8
R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihXVEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRp
YUZvck1pZC5nZXQobWlkLmdldCgpKSk7CisgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5k
Lm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVuaXF1ZTxHU3RyZWFtZXJSdHBUcmFuc2Nl
aXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBtX21lZGlhRm9yTWlkLmdldChTdHJpbmcg
eyBtaWQuZ2V0KCkgfSkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dT
dHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMjU2NGU5YTQ2NDgwOGJiMDhj
YjQwNjNjYWFjNjEyNDAyYmRmZDVjMi4uMzBmZWYwZTAyMjc4NWIxNWExMTY4YjNkNGZiYzY2Njkx
YmUxNTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAgQEAgQ3JlYXRlUGVlckNvbm5lY3Rpb25C
YWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlID0gY3JlYXRlR1N0cmVhbWVyUGVl
ckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0cmVhbWVyUnRwQ2FwYXRpYmxpdGllcyhj
b25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRwQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGll
czsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5zaW9ucy5hcHBlbmQoeyAiaHR0cDovL3d3
dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQtdHJhbnNwb3J0LXdpZGUtY2MtZXh0ZW5z
aW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsg
Imh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9sbWVyLXJtY2F0LXRyYW5zcG9ydC13aWRl
LWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYgKGtpbmQgPT0gImF1ZGlvIl9zKSB7CiAg
ICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2ZUNhcGFjaXR5KDQpOwotICAgICAgICBj
YXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9P
UFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA0ODAwMCwK
ICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
IiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0
cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7
IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDgw
MDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5l
ID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsg
Lm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gZW1w
dHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBl
bmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUg
PSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0gMSwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9
IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2Vk
QXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUiX3MsCiAgICAgICAgICAgICAuY2xvY2tS
YXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDEsCi0gICAgICAgICAgICAuc2Rw
Rm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5n
KCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lv
bnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIiB9KTsKKyAgICAgICAgY2Fw
YWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVu
dGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnJlc2VydmVDYXBhY2l0
eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWlt
ZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNr
ZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4Il9zLAogICAgICAgICAgICAgLmNsb2Nr
UmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAgICAg
IGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVv
L1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOworICAg
ICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2
aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVz
LmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA5IiwKKyAgICAg
ICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTAiX3MgfSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQOSJf
cywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAwMCwKLSAgICAgICAgICAgIC5zZHBGbXRw
TGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVu
Y2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9IMjY0IiwKKyAgICAgICAgICAgIC5z
ZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL0gyNjQiX3MsCiAgICAg
ICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAi
cGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZlbC1pZD00MmUwMWYiIH0pOworICAgICAg
ICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRpb24tbW9kZT0xO3Byb2ZpbGUtbGV2ZWwt
aWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1cm4gY2FwYWJpbGl0aWVzOwogfQpAQCAt
MjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkb0Ny
ZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlvbnMpCiB2b2lkIEdTdHJlYW1lclBlZXJD
b25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2VyT3B0aW9ucyYmKQogewog
ICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0KSB7Ci0gICAgICAgIGNyZWF0ZUFuc3dl
ckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIk5vIHJlbW90ZSBkZXNjcmlw
dGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3ZXJGYWlsZWQoRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3JpcHRpb24gc2V0Il9zIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQtPmRvQ3JlYXRlQW5zd2VyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3Ry
ZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcApp
bmRleCAyNDQ5YWU4NWYxNmRkNDFiMWEzOWEyMDgwYjQ2M2E1ODY3MDA4NDljLi5lNzc4ZjZkNGYw
YzBiNDY3ODIzMGM2MmNkNjYwMmE4ZTljNjEzZmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJh
Y2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVh
bWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
U3RyaW5nIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6bWlkKCkKIHsKICAgICBHVW5p
cXVlT3V0UHRyPGNoYXI+IG1pZDsKICAgICBnX29iamVjdF9nZXQobV9ydGNUcmFuc2NlaXZlci5n
ZXQoKSwgIm1pZCIsICZtaWQub3V0UHRyKCksIG51bGxwdHIpOwotICAgIHJldHVybiBtaWQuZ2V0
KCk7CisgICAgcmV0dXJuIFN0cmluZyB7IG1pZC5nZXQoKSB9OwogfQogCiB2b2lkIEdTdHJlYW1l
clJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcCgpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgR1N0
cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9wcGVkKCkgY29uc3QKIHN0YXRpYyBpbmxp
bmUgV0FSTl9VTlVTRURfUkVUVVJOIEV4Y2VwdGlvbk9yPEdzdENhcHMqPiB0b1J0cENvZGVjQ2Fw
YWJpbGl0eShjb25zdCBSVENSdHBDb2RlY0NhcGFiaWxpdHkmIGNvZGVjKQogewogICAgIGlmICgh
Y29kZWMubWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8vIikgJiYgIWNvZGVjLm1pbWVUeXBlLnN0
YXJ0c1dpdGgoImF1ZGlvLyIpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IGJhZCBtaW1lVHlwZSIgfTsK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlJU
Q1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUiX3MgfTsKIAogICAgIGF1dG8gY29tcG9u
ZW50cyA9IGNvZGVjLm1pbWVUeXBlLnNwbGl0KCcvJyk7CiAgICAgYXV0byogY2FwcyA9IGdzdF9j
YXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtcnRwIiwgIm1lZGlhIiwgR19UWVBFX1NUUklO
RywgY29tcG9uZW50c1swXS5hc2NpaSgpLmRhdGEoKSwgImVuY29kaW5nLW5hbWUiLCBHX1RZUEVf
U1RSSU5HLCBjb21wb25lbnRzWzFdLmFzY2lpKCkuZGF0YSgpLCBudWxscHRyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
clN0YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcAppbmRleCBlM2I4MjMyYWJhMmEz
N2U1OTY1MjFjMDBiZTFiY2ZhYTYzMzhmNjY4Li5kY2Y3YWQxZThjNzA4YWFmY2VlNWM5MGYwNjkw
MzQyMWVjNTFhZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0
b3IuY3BwCkBAIC00MywxNSArNDMsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxSVENTdGF0
cyhSVENTdGF0c1JlcG9ydDo6U3RhdHMmIHN0YXRzLCBjb25zdCBHc3RTdHJ1Y3R1cmUKICAgICBk
b3VibGUgdGltZXN0YW1wOwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUoc3RydWN0
dXJlLCAidGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCiAgICAgICAgIHN0YXRzLnRpbWVzdGFtcCA9
IHRpbWVzdGFtcDsKLSAgICBzdGF0cy5pZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1
Y3R1cmUsICJpZCIpOworICAgIHN0YXRzLmlkID0gU3RyaW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRf
c3RyaW5nKHN0cnVjdHVyZSwgImlkIikgfTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGZpbGxS
VENSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6UnRwU3RyZWFtU3RhdHMmIHN0YXRzLCBj
b25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBmaWxsUlRDU3RhdHMoc3RhdHMs
IHN0cnVjdHVyZSk7CiAKLSAgICBzdGF0cy50cmFuc3BvcnRJZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0
X3N0cmluZyhzdHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQiKTsKLSAgICBzdGF0cy5jb2RlY0lkID0g
Z3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgImNvZGVjLWlkIik7CisgICAgc3Rh
dHMudHJhbnNwb3J0SWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcoc3RydWN0
dXJlLCAidHJhbnNwb3J0LWlkIikgfTsKKyAgICBzdGF0cy5jb2RlY0lkID0gU3RyaW5nIHsgZ3N0
X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgImNvZGVjLWlkIikgfTsKIAogICAgIHVu
c2lnbmVkIHZhbHVlOwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91aW50KHN0cnVjdHVyZSwg
InNzcmMiLCAmdmFsdWUpKQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBm
aWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6T3V0Ym91bmRSdHBTdHJl
YW1TCiAgICAgICAgIHN0YXRzLm5hY2tDb3VudCA9IG5hY2tDb3VudDsKIAogICAgIGlmIChjb25z
dCBjaGFyKiByZW1vdGVJZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJy
ZW1vdGUtaWQiKSkKLSAgICAgICAgc3RhdHMucmVtb3RlSWQgPSByZW1vdGVJZDsKKyAgICAgICAg
c3RhdHMucmVtb3RlSWQgPSBTdHJpbmcgeyByZW1vdGVJZCB9OwogCiAgICAgLy8gRklYTUUKICAg
ICAvLyBzdGF0cy50YXJnZXRCaXRyYXRlID0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJUQ1V0aWxzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lcldlYlJU
Q1V0aWxzLmNwcAppbmRleCA1NGI5NzRkM2E3MmQ2YjdhNDlkMzI4YzEyYjNhMTQyYjFhMWVhM2Qx
Li42YTE2MzZjNmRkYjZlNmZiNTk1YThjNWQyZmUyMGJkNzM3NDYxYTQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJXZWJS
VENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIFJlZlB0cjxS
VENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vycm9yKQogICAgIGF1dG8gZGV0YWlsID0g
dG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8R3N0V2ViUlRDRXJyb3I+KHJ0Y0Vycm9y
LT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWwsIHJ0Y0Vycm9yLT5tZXNzYWdlKTsKKyAg
ICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWlsLCBTdHJpbmc6OmZyb21VVEY4KHJ0Y0Vy
cm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZG91YmxlIHRvV2ViUlRDQml0UmF0
ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0eSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBz
dGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1ldGVycyB0b1JUQ0VuY29kaW5nUGFyYW1l
dGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF91aW50NjQo
cnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAmbWF4RnJhbWVyYXRlKSkKICAgICAgICAg
cGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFtZXJhdGU7CiAKLSAgICBwYXJhbWV0ZXJz
LnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhydGNQYXJhbWV0ZXJzLCAicmlkIik7Cisg
ICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcocnRj
UGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3VibGUgc2NhbGVSZXNvbHV0aW9uRG93bkJ5
OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUocnRjUGFyYW1ldGVycywgInNjYWxl
LXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29sdXRpb25Eb3duQnkpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5j
cHAKaW5kZXggOTJlMWExOGVhNzg5N2Y2YTQyMmQyZjQ5N2NiNjk0MTJmMDE1OTE1Yi4uNjc2MTAx
OTcxODE2MzE3NGEwMmNmZmYwNzU1ZjczMjA0ZjNhMjMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwCkBAIC0y
NzUsMTIgKzI3NSwxMiBAQCBib29sIFdlYlhST3BhcXVlRnJhbWVidWZmZXI6OnNldHVwRnJhbWVi
dWZmZXIoKQogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0lOREVYODsKICNl
bGlmIFVTRShPUEVOR0xfRVMpCiAgICAgYXV0byYgZXh0ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmPihnbCkuZ2V0RXh0ZW5zaW9ucygpOwotICAgIGJv
b2wgcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2ls
ICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwor
ICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JT
dGVuY2lsICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNp
bCJfcyk7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0
aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6IEdMOjpERVBUSF9DT01QT05FTlQxNjsK
ICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RFTkNJTF9JTkRFWDg7CiAjZWxzZQogICAg
IGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsKLSAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNr
ZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRz
KCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICBib29sIHBsYXRmb3JtU3VwcG9y
dHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNpbCAmJiBleHRlbnNpb25zLnN1
cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiX3MpOwogICAgIGF1dG8gZGVwdGhG
b3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVwdGhTdGVuY2lsID8gR0w6OkRFUFRIMjRf
U1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9
IEdMOjpTVEVOQ0lMX0NPTVBPTkVOVDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJ
bXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWFiYTYzOThlNmZkYzUyMDMyMjA5NzdlZGJkZWIwLi5i
ZTdmYzRiODZlZjlkMjk4ZmRiN2NkOTE4MGViM2E5ZWNiOWVlOTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dl
YkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyArMzksNyBAQCBzdGF0aWMgU3RyaW5nIGFkYXB0
ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7CiAgICAgV0dQVUFkYXB0ZXJQcm9wZXJ0aWVz
IHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJHZXRQcm9wZXJ0aWVzKGFkYXB0ZXIsICZwcm9w
ZXJ0aWVzKTsKLSAgICByZXR1cm4gcHJvcGVydGllcy5uYW1lOworICAgIHJldHVybiBTdHJpbmcg
eyBwcm9wZXJ0aWVzLm5hbWUgfTsKIH0KIAogc3RhdGljIFJlZjxTdXBwb3J0ZWRGZWF0dXJlcz4g
c3VwcG9ydGVkRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRhcHRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURl
dmljZUltcGwuY3BwCmluZGV4IDk2OWE3YTJjYTdiOWJhNjJjYTI1Y2VhYzI4ZjNhMzlkYjM0YjA5
OTMuLjhjOTQ3NWFmNTAxZTYzZDZmMmQ5YTYyNDA1Y2I3NTEyODA1YTEwODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNl
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1w
bC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcgKzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1w
bDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJy
b3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9Gb3JjZTMyOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9yVHlwZV9WYWxpZGF0aW9uOgotICAgICAg
ICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUobWVzc2FnZSkgfSB9Owor
ICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9yOjpjcmVhdGUoU3RyaW5nIHsg
bWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVRXJy
b3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAgZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlF
cnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGFmMzU0MjViODdiMDBkNjViYzQ0NjczMDFhZGQ2
Li4wZDRkNDZhMGVkOGM4ZTExMDNiNjk3NjFlNWQ1ZTNjN2M5ZjAwYjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtMzY4LDcgKzM2OCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1Rl
eHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBjb25zdCBTdHJpbmcmKTsKIAotICAgIHN0
YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uKTsKKyAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlvblBsYXRmb3JtTmFtZShBWE5vdGlmaWNh
dGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVj
dEF0c3BpLmNwcAppbmRleCBhNmI1MTE5YmU4MmFjYjA4MWU5NjNmYWZiYjM2NWIwZjExZWMwZjlm
Li5kYTkyZmQ0MTNmMTA3N2M3MTI5MGUxM2EzZTU0ODYyMGJlN2M4OTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmls
aXR5T2JqZWN0QXRzcGkuY3BwCkBAIC04NjksNzIgKzg2OSw3MiBAQCBIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogewog
ICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcDsKICNpZiBQTEFURk9STShHVEspCi0gICAg
bWFwLmFkZCgidG9vbGtpdCIsICJXZWJLaXRHVEsiKTsKKyAgICBtYXAuYWRkKCJ0b29sa2l0Il9z
LCAiV2ViS2l0R1RLIl9zKTsKICNlbGlmIFBMQVRGT1JNKFdQRSkKLSAgICBtYXAuYWRkKCJ0b29s
a2l0IiwgIldQRVdlYktpdCIpOworICAgIG1hcC5hZGQoInRvb2xraXQiX3MsICJXUEVXZWJLaXQi
X3MpOwogI2VuZGlmCiAgICAgaWYgKCFtX2NvcmVPYmplY3QpCiAgICAgICAgIHJldHVybiBtYXA7
CiAKICAgICBTdHJpbmcgdGFnTmFtZSA9IG1fY29yZU9iamVjdC0+dGFnTmFtZSgpOwogICAgIGlm
ICghdGFnTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoInRhZyIsIHRhZ05hbWUpOwor
ICAgICAgICBtYXAuYWRkKCJ0YWciX3MsIHRhZ05hbWUpOwogCiAgICAgaWYgKGF1dG8qIGVsZW1l
bnQgPSBtX2NvcmVPYmplY3QtPmVsZW1lbnQoKSkgewogICAgICAgICBTdHJpbmcgaWQgPSBlbGVt
ZW50LT5nZXRJZEF0dHJpYnV0ZSgpLnN0cmluZygpOwogICAgICAgICBpZiAoIWlkLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIG1hcC5hZGQoImlkIiwgaWQpOworICAgICAgICAgICAgbWFwLmFkZCgi
aWQiX3MsIGlkKTsKICAgICB9CiAKICAgICBpbnQgbGV2ZWwgPSBtX2NvcmVPYmplY3QtPmlzSGVh
ZGluZygpID8gbV9jb3JlT2JqZWN0LT5oZWFkaW5nTGV2ZWwoKSA6IG1fY29yZU9iamVjdC0+aGll
cmFyY2hpY2FsTGV2ZWwoKTsKICAgICBpZiAobGV2ZWwpCi0gICAgICAgIG1hcC5hZGQoImxldmVs
IiwgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKKyAgICAgICAgbWFwLmFkZCgibGV2ZWwiX3MsIFN0
cmluZzo6bnVtYmVyKGxldmVsKSk7CiAKICAgICBpbnQgcm93Q291bnQgPSBtX2NvcmVPYmplY3Qt
PmF4Um93Q291bnQoKTsKICAgICBpZiAocm93Q291bnQpCi0gICAgICAgIG1hcC5hZGQoInJvd2Nv
dW50IiwgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsKKyAgICAgICAgbWFwLmFkZCgicm93Y291
bnQiX3MsIFN0cmluZzo6bnVtYmVyKHJvd0NvdW50KSk7CiAKICAgICBpbnQgY29sdW1uQ291bnQg
PSBtX2NvcmVPYmplY3QtPmF4Q29sdW1uQ291bnQoKTsKICAgICBpZiAoY29sdW1uQ291bnQpCi0g
ICAgICAgIG1hcC5hZGQoImNvbGNvdW50IiwgU3RyaW5nOjpudW1iZXIoY29sdW1uQ291bnQpKTsK
KyAgICAgICAgbWFwLmFkZCgiY29sY291bnQiX3MsIFN0cmluZzo6bnVtYmVyKGNvbHVtbkNvdW50
KSk7CiAKICAgICBpbnQgcm93SW5kZXggPSBtX2NvcmVPYmplY3QtPmF4Um93SW5kZXgoKTsKICAg
ICBpZiAocm93SW5kZXggIT0gLTEpCi0gICAgICAgIG1hcC5hZGQoInJvd2luZGV4IiwgU3RyaW5n
OjpudW1iZXIocm93SW5kZXgpKTsKKyAgICAgICAgbWFwLmFkZCgicm93aW5kZXgiX3MsIFN0cmlu
Zzo6bnVtYmVyKHJvd0luZGV4KSk7CiAKICAgICBpbnQgY29sdW1uSW5kZXggPSBtX2NvcmVPYmpl
Y3QtPmF4Q29sdW1uSW5kZXgoKTsKICAgICBpZiAoY29sdW1uSW5kZXggIT0gLTEpCi0gICAgICAg
IG1hcC5hZGQoImNvbGluZGV4IiwgU3RyaW5nOjpudW1iZXIoY29sdW1uSW5kZXgpKTsKKyAgICAg
ICAgbWFwLmFkZCgiY29saW5kZXgiX3MsIFN0cmluZzo6bnVtYmVyKGNvbHVtbkluZGV4KSk7CiAK
ICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4obV9jb3JlT2JqZWN0KSkgewogICAg
ICAgICBhdXRvJiBjZWxsID0gZG93bmNhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4oKm1fY29y
ZU9iamVjdCk7CiAgICAgICAgIGludCByb3dTcGFuID0gY2VsbC5heFJvd1NwYW4oKTsKICAgICAg
ICAgaWYgKHJvd1NwYW4gIT0gLTEpCi0gICAgICAgICAgICBtYXAuYWRkKCJyb3dzcGFuIiwgU3Ry
aW5nOjpudW1iZXIocm93U3BhbikpOworICAgICAgICAgICAgbWFwLmFkZCgicm93c3BhbiJfcywg
U3RyaW5nOjpudW1iZXIocm93U3BhbikpOwogCiAgICAgICAgIGludCBjb2x1bW5TcGFuID0gY2Vs
bC5heENvbHVtblNwYW4oKTsKICAgICAgICAgaWYgKGNvbHVtblNwYW4gIT0gLTEpCi0gICAgICAg
ICAgICBtYXAuYWRkKCJjb2xzcGFuIiwgU3RyaW5nOjpudW1iZXIoY29sdW1uU3BhbikpOworICAg
ICAgICAgICAgbWFwLmFkZCgiY29sc3BhbiJfcywgU3RyaW5nOjpudW1iZXIoY29sdW1uU3Bhbikp
OwogICAgIH0KIAogICAgIFN0cmluZyBwbGFjZWhvbGRlciA9IG1fY29yZU9iamVjdC0+cGxhY2Vo
b2xkZXJWYWx1ZSgpOwogICAgIGlmICghcGxhY2Vob2xkZXIuaXNFbXB0eSgpKQotICAgICAgICBt
YXAuYWRkKCJwbGFjZWhvbGRlci10ZXh0IiwgcGxhY2Vob2xkZXIpOworICAgICAgICBtYXAuYWRk
KCJwbGFjZWhvbGRlci10ZXh0Il9zLCBwbGFjZWhvbGRlcik7CiAKICAgICBpZiAobV9jb3JlT2Jq
ZWN0LT5zdXBwb3J0c0F1dG9Db21wbGV0ZSgpKQotICAgICAgICBtYXAuYWRkKCJhdXRvY29tcGxl
dGUiLCBtX2NvcmVPYmplY3QtPmF1dG9Db21wbGV0ZVZhbHVlKCkpOworICAgICAgICBtYXAuYWRk
KCJhdXRvY29tcGxldGUiX3MsIG1fY29yZU9iamVjdC0+YXV0b0NvbXBsZXRlVmFsdWUoKSk7CiAK
ICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0hhc1BvcHVwKCkpCi0gICAgICAgIG1hcC5h
ZGQoImhhc3BvcHVwIiwgbV9jb3JlT2JqZWN0LT5wb3B1cFZhbHVlKCkpOworICAgICAgICBtYXAu
YWRkKCJoYXNwb3B1cCJfcywgbV9jb3JlT2JqZWN0LT5wb3B1cFZhbHVlKCkpOwogCiAgICAgaWYg
KG1fY29yZU9iamVjdC0+c3VwcG9ydHNDdXJyZW50KCkpCi0gICAgICAgIG1hcC5hZGQoImN1cnJl
bnQiLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgpKTsKKyAgICAgICAgbWFwLmFkZCgiY3Vy
cmVudCJfcywgbV9jb3JlT2JqZWN0LT5jdXJyZW50VmFsdWUoKSk7CiAKICAgICBpZiAobV9jb3Jl
T2JqZWN0LT5zdXBwb3J0c1Bvc0luU2V0KCkpCi0gICAgICAgIG1hcC5hZGQoInBvc2luc2V0Iiwg
U3RyaW5nOjpudW1iZXIobV9jb3JlT2JqZWN0LT5wb3NJblNldCgpKSk7CisgICAgICAgIG1hcC5h
ZGQoInBvc2luc2V0Il9zLCBTdHJpbmc6Om51bWJlcihtX2NvcmVPYmplY3QtPnBvc0luU2V0KCkp
KTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzU2V0U2l6ZSgpKQotICAgICAgICBt
YXAuYWRkKCJzZXRzaXplIiwgU3RyaW5nOjpudW1iZXIobV9jb3JlT2JqZWN0LT5zZXRTaXplKCkp
KTsKKyAgICAgICAgbWFwLmFkZCgic2V0c2l6ZSJfcywgU3RyaW5nOjpudW1iZXIobV9jb3JlT2Jq
ZWN0LT5zZXRTaXplKCkpKTsKIAogICAgIC8vIFRoZSBDb3JlIEFBTSBzdGF0ZXMgdGhhdCBhbiBl
eHBsaWNpdGx5LXNldCB2YWx1ZSBzaG91bGQgYmUgZXhwb3NlZCwgaW5jbHVkaW5nICJub25lIi4K
ICAgICBpZiAoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KG1fY29yZU9iamVjdCkt
Pmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfc29ydEF0dHIpKSB7CkBAIC05NDIsMjcgKzk0
MiwyNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0
aW9uOjpJbnZhbGlkOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNzaWJp
bGl0eVNvcnREaXJlY3Rpb246OkFzY2VuZGluZzoKLSAgICAgICAgICAgIG1hcC5hZGQoInNvcnQi
LCAiYXNjZW5kaW5nIik7CisgICAgICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAiYXNjZW5kaW5n
Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0
RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgotICAgICAgICAgICAgbWFwLmFkZCgic29ydCIsICJkZXNj
ZW5kaW5nIik7CisgICAgICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAiZGVzY2VuZGluZyJfcyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVj
dGlvbjo6T3RoZXI6Ci0gICAgICAgICAgICBtYXAuYWRkKCJzb3J0IiwgIm90aGVyIik7CisgICAg
ICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAib3RoZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246Ok5vbmU6Ci0gICAgICAg
ICAgICBtYXAuYWRkKCJzb3J0IiwgIm5vbmUiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInNvcnQi
X3MsICJub25lIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBtX2NvcmVPYmplY3QtPnJlYWRPbmx5VmFsdWUoKTsKICAg
ICBpZiAoIWlzUmVhZE9ubHkuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJyZWFkb25seSIs
IGlzUmVhZE9ubHkpOworICAgICAgICBtYXAuYWRkKCJyZWFkb25seSJfcywgaXNSZWFkT25seSk7
CiAKICAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbiA9IG1fY29yZU9iamVjdC0+dmFsdWVEZXNj
cmlwdGlvbigpOwogICAgIGlmICghdmFsdWVEZXNjcmlwdGlvbi5pc0VtcHR5KCkpCi0gICAgICAg
IG1hcC5hZGQoInZhbHVldGV4dCIsIHZhbHVlRGVzY3JpcHRpb24pOworICAgICAgICBtYXAuYWRk
KCJ2YWx1ZXRleHQiX3MsIHZhbHVlRGVzY3JpcHRpb24pOwogCiAgICAgLy8gQWNjb3JkaW5nIHRv
IHRoZSBXM0MgQ29yZSBBY2Nlc3NpYmlsaXR5IEFQSSBNYXBwaW5ncyAxLjEsIHNlY3Rpb24gNS40
LjEgR2VuZXJhbCBSdWxlczoKICAgICAvLyAiVXNlciBhZ2VudHMgbXVzdCBleHBvc2UgdGhlIFdB
SS1BUklBIHJvbGUgc3RyaW5nIGlmIHRoZSBBUEkgc3VwcG9ydHMgYSBtZWNoYW5pc20gdG8gZG8g
c28uIgpAQCAtOTcxLDU5ICs5NzEsNTkgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gQWNjZXNz
aWJpbGl0eU9iamVjdEF0c3BpOjphdHRyaWJ1dGVzKCkgY29uc3QKICAgICAvLyB3aXRoIEFSSUEg
cm9sZXMsIGFuZCBpdCBtaWdodCBub3QgY29udGFpbiB0aGUgYWN0dWFsIEFSSUEgcm9sZSB2YWx1
ZSAoZS5nLiBEUHViIEFSSUEpLgogICAgIFN0cmluZyByb2xlU3RyaW5nID0gc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eU9iamVjdCo+KG1fY29yZU9iamVjdCktPmdldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OnJvbGVBdHRyKTsKICAgICBpZiAoIXJvbGVTdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICBt
YXAuYWRkKCJ4bWwtcm9sZXMiLCByb2xlU3RyaW5nKTsKKyAgICAgICAgbWFwLmFkZCgieG1sLXJv
bGVzIl9zLCByb2xlU3RyaW5nKTsKIAogICAgIFN0cmluZyBjb21wdXRlZFJvbGVTdHJpbmcgPSBt
X2NvcmVPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpOwogICAgIGlmICghY29tcHV0ZWRSb2xl
U3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBtYXAuYWRkKCJjb21wdXRlZC1yb2xlIiwgY29t
cHV0ZWRSb2xlU3RyaW5nKTsKKyAgICAgICAgbWFwLmFkZCgiY29tcHV0ZWQtcm9sZSJfcywgY29t
cHV0ZWRSb2xlU3RyaW5nKTsKIAogICAgICAgICAvLyBUaGUgSFRNTCBBQU0gbWFwcyBzZXZlcmFs
IGVsZW1lbnRzIHRvIEFSSUEgbGFuZG1hcmsgcm9sZXMuIEluIG9yZGVyIGZvciB0aGUgdHlwZSBv
ZiBsYW5kbWFyawogICAgICAgICAvLyB0byBiZSBvYnRhaW5hYmxlIGluIHRoZSBzYW1lIGZhc2hp
b24gYXMgYW4gQVJJQSBsYW5kbWFyaywgZmFsbCBiYWNrIG9uIHRoZSBjb21wdXRlZFJvbGVTdHJp
bmcuCiAgICAgICAgIC8vIFdlIGFsc28gd2FudCB0byBkbyB0aGlzIGZvciB0aGUgc3R5bGUtZm9y
bWF0LWdyb3VwIGVsZW1lbnQgdHlwZXMgc28gdGhhdCB0aGUgdHlwZSBvZiBmb3JtYXQKICAgICAg
ICAgLy8gZ3JvdXAgaXQgaXMgZG9lc24ndCBnZXQgbG9zdCB0byBhIGdlbmVyaWMgcGxhdGZvcm0g
cm9sZS4KICAgICAgICAgaWYgKG1fY29yZU9iamVjdC0+YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBB
Y2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiAobV9jb3JlT2JqZWN0LT5pc0xhbmRtYXJrKCkg
fHwgbV9jb3JlT2JqZWN0LT5pc1N0eWxlRm9ybWF0R3JvdXAoKSkpCi0gICAgICAgICAgICBtYXAu
c2V0KCJ4bWwtcm9sZXMiLCBjb21wdXRlZFJvbGVTdHJpbmcpOworICAgICAgICAgICAgbWFwLnNl
dCgieG1sLXJvbGVzIl9zLCBjb21wdXRlZFJvbGVTdHJpbmcpOwogICAgIH0KIAogICAgIFN0cmlu
ZyByb2xlRGVzY3JpcHRpb24gPSBtX2NvcmVPYmplY3QtPnJvbGVEZXNjcmlwdGlvbigpOwogICAg
IGlmICghcm9sZURlc2NyaXB0aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgicm9sZWRl
c2NyaXB0aW9uIiwgcm9sZURlc2NyaXB0aW9uKTsKKyAgICAgICAgbWFwLmFkZCgicm9sZWRlc2Ny
aXB0aW9uIl9zLCByb2xlRGVzY3JpcHRpb24pOwogCiAgICAgU3RyaW5nIGRyb3BFZmZlY3QgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4obV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6YXJpYV9kcm9wZWZmZWN0QXR0cik7CiAgICAgaWYgKCFkcm9wRWZmZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgiZHJvcGVmZmVjdCIsIGRyb3BFZmZlY3QpOwor
ICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0Il9zLCBkcm9wRWZmZWN0KTsKIAogICAgIGlmICht
X2NvcmVPYmplY3QtPnN1cHBvcnRzRHJhZ2dpbmcoKSkKLSAgICAgICAgbWFwLmFkZCgiZ3JhYmJl
ZCIsIG1fY29yZU9iamVjdC0+aXNHcmFiYmVkKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAg
ICAgbWFwLmFkZCgiZ3JhYmJlZCJfcywgbV9jb3JlT2JqZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVl
Il9zIDogImZhbHNlIl9zKTsKIAogICAgIFN0cmluZyBrZXlTaG9ydGN1dHMgPSBtX2NvcmVPYmpl
Y3QtPmtleVNob3J0Y3V0c1ZhbHVlKCk7CiAgICAgaWYgKCFrZXlTaG9ydGN1dHMuaXNFbXB0eSgp
KQotICAgICAgICBtYXAuYWRkKCJrZXlzaG9ydGN1dHMiLCBrZXlTaG9ydGN1dHMpOworICAgICAg
ICBtYXAuYWRkKCJrZXlzaG9ydGN1dHMiX3MsIGtleVNob3J0Y3V0cyk7CiAKICAgICBpZiAobV9j
b3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRp
c2NyaXB0T2JqZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQpIHx8IG1fY29yZU9iamVjdC0+aXNNYXRo
TXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6
OlByZVN1YnNjcmlwdCkpCi0gICAgICAgIG1hcC5hZGQoIm11bHRpc2NyaXB0LXR5cGUiLCAicHJl
Iik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2NyaXB0LXR5cGUiX3MsICJwcmUiX3MpOwogICAg
IGVsc2UgaWYgKG1fY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJp
bGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBvc3RTdXBlcnNjcmlwdCkgfHwgbV9jb3Jl
T2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2Ny
aXB0T2JqZWN0VHlwZTo6UG9zdFN1YnNjcmlwdCkpCi0gICAgICAgIG1hcC5hZGQoIm11bHRpc2Ny
aXB0LXR5cGUiLCAicG9zdCIpOworICAgICAgICBtYXAuYWRkKCJtdWx0aXNjcmlwdC10eXBlIl9z
LCAicG9zdCJfcyk7CiAKICAgICBpZiAoYXV0byogbGl2ZUNvbnRhaW5lciA9IG1fY29yZU9iamVj
dC0+bGl2ZVJlZ2lvbkFuY2VzdG9yKGZhbHNlKSkgewogICAgICAgICBhdXRvIGxpdmVTdGF0dXMg
PSBsaXZlQ29udGFpbmVyLT5saXZlUmVnaW9uU3RhdHVzKCk7Ci0gICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1saXZlIiwgbGl2ZVN0YXR1cyk7CisgICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1s
aXZlIl9zLCBsaXZlU3RhdHVzKTsKICAgICAgICAgYXV0byByZWxldmFudCA9IGxpdmVDb250YWlu
ZXItPmxpdmVSZWdpb25SZWxldmFudCgpOwotICAgICAgICBtYXAuYWRkKCJjb250YWluZXItcmVs
ZXZhbnQiLCByZWxldmFudCk7CisgICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1yZWxldmFudCJf
cywgcmVsZXZhbnQpOwogICAgICAgICBib29sIGlzQXRvbWljID0gbGl2ZUNvbnRhaW5lci0+bGl2
ZVJlZ2lvbkF0b21pYygpOwogICAgICAgICBpZiAoaXNBdG9taWMpCi0gICAgICAgICAgICBtYXAu
YWRkKCJjb250YWluZXItYXRvbWljIiwgInRydWUiKTsKKyAgICAgICAgICAgIG1hcC5hZGQoImNv
bnRhaW5lci1hdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBsaXZl
Um9sZSA9IHJvbGVTdHJpbmcuaXNFbXB0eSgpID8gY29tcHV0ZWRSb2xlU3RyaW5nIDogcm9sZVN0
cmluZzsKICAgICAgICAgaWYgKCFsaXZlUm9sZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtYXAu
YWRkKCJjb250YWluZXItbGl2ZS1yb2xlIiwgbGl2ZVJvbGUpOworICAgICAgICAgICAgbWFwLmFk
ZCgiY29udGFpbmVyLWxpdmUtcm9sZSJfcywgbGl2ZVJvbGUpOwogCiAgICAgICAgIGlmIChsaXZl
Q29udGFpbmVyID09IG1fY29yZU9iamVjdCkgewotICAgICAgICAgICAgbWFwLmFkZCgibGl2ZSIs
IGxpdmVTdGF0dXMpOwotICAgICAgICAgICAgbWFwLmFkZCgicmVsZXZhbnQiLCByZWxldmFudCk7
CisgICAgICAgICAgICBtYXAuYWRkKCJsaXZlIl9zLCBsaXZlU3RhdHVzKTsKKyAgICAgICAgICAg
IG1hcC5hZGQoInJlbGV2YW50Il9zLCByZWxldmFudCk7CiAgICAgICAgICAgICBpZiAoaXNBdG9t
aWMpCi0gICAgICAgICAgICAgICAgbWFwLmFkZCgiYXRvbWljIiwgInRydWUiKTsKKyAgICAgICAg
ICAgICAgICBtYXAuYWRkKCJhdG9taWMiX3MsICJ0cnVlIl9zKTsKICAgICAgICAgfSBlbHNlIGlm
ICghaXNBdG9taWMgJiYgbV9jb3JlT2JqZWN0LT5saXZlUmVnaW9uQXRvbWljKCkpCi0gICAgICAg
ICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIpOworICAgICAgICAgICAgbWFwLmFkZCgiYXRv
bWljIl9zLCAidHJ1ZSJfcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1hcDsKQEAgLTEyOTEsMzQg
KzEyOTEsMzQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZWZmZWN0aXZlUm9s
ZU5hbWUoKSBjb25zdAogCiAgICAgc3dpdGNoICgqZWZmZWN0aXZlKSB7CiAgICAgY2FzZSBBdHNw
aTo6Um9sZTo6SW1hZ2U6Ci0gICAgICAgIHJldHVybiAiaW1hZ2UiOworICAgICAgICByZXR1cm4g
ImltYWdlIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRleHQ6CiAgICAgY2FzZSBBdHNwaTo6
Um9sZTo6U3RhdGljOgotICAgICAgICByZXR1cm4gInRleHQiOworICAgICAgICByZXR1cm4gInRl
eHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6SW52YWxpZFJvbGU6Ci0gICAgICAgIHJldHVy
biAiaW52YWxpZCI7CisgICAgICAgIHJldHVybiAiaW52YWxpZCJfczsKICAgICBjYXNlIEF0c3Bp
OjpSb2xlOjpQYW5lbDoKLSAgICAgICAgcmV0dXJuICJwYW5lbCI7CisgICAgICAgIHJldHVybiAi
cGFuZWwiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6UGFzc3dvcmRUZXh0OgotICAgICAgICBy
ZXR1cm4gInBhc3N3b3JkIHRleHQiOworICAgICAgICByZXR1cm4gInBhc3N3b3JkIHRleHQiX3M7
CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGU6Ci0gICAgICAgIHJldHVybiAidGFibGUiOwor
ICAgICAgICByZXR1cm4gInRhYmxlIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRhYmxlUm93
OgotICAgICAgICByZXR1cm4gInRhYmxlIHJvdyI7CisgICAgICAgIHJldHVybiAidGFibGUgcm93
Il9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRhYmxlQ2VsbDoKLSAgICAgICAgcmV0dXJuICJ0
YWJsZSBjZWxsIjsKKyAgICAgICAgcmV0dXJuICJ0YWJsZSBjZWxsIl9zOwogICAgIGNhc2UgQXRz
cGk6OlJvbGU6OlNlY3Rpb246Ci0gICAgICAgIHJldHVybiAic2VjdGlvbiI7CisgICAgICAgIHJl
dHVybiAic2VjdGlvbiJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpNYXRoRnJhY3Rpb246Ci0g
ICAgICAgIHJldHVybiAibWF0aCBmcmFjdGlvbiI7CisgICAgICAgIHJldHVybiAibWF0aCBmcmFj
dGlvbiJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpNYXRoUm9vdDoKLSAgICAgICAgcmV0dXJu
ICJtYXRoIHJvb3QiOworICAgICAgICByZXR1cm4gIm1hdGggcm9vdCJfczsKICAgICBjYXNlIEF0
c3BpOjpSb2xlOjpTdWJzY3JpcHQ6Ci0gICAgICAgIHJldHVybiAic3Vic2NyaXB0IjsKKyAgICAg
ICAgcmV0dXJuICJzdWJzY3JpcHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6U3VwZXJzY3Jp
cHQ6Ci0gICAgICAgIHJldHVybiAic3VwZXJzY3JpcHQiOworICAgICAgICByZXR1cm4gInN1cGVy
c2NyaXB0Il9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OkxhbmRtYXJrOgotICAgICAgICByZXR1
cm4gImxhbmRtYXJrIjsKKyAgICAgICAgcmV0dXJuICJsYW5kbWFyayJfczsKICAgICBkZWZhdWx0
OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzI5LDcgKzEzMjksNyBAQCBTdHJpbmcgQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpOjplZmZlY3RpdmVSb2xlTmFtZSgpIGNvbnN0CiBTdHJpbmcg
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb2xlTmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvcmVPYmplY3QpCi0gICAgICAgIHJldHVybiAiaW52YWxpZCI7CisgICAgICAgIHJldHVybiAi
aW52YWxpZCJfczsKIAogICAgIGF1dG8gZWZmZWN0aXZlID0gZWZmZWN0aXZlUm9sZU5hbWUoKTsK
ICAgICBpZiAoIWVmZmVjdGl2ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4
dEF0c3BpLmNwcAppbmRleCBlNGNmNmMwZGEwZTVkN2QzMGNkN2UyNzljYTdlMDI2ZGQzZGE5Nzc0
Li4xOGI5ZDZkYzk0NWJmMDJmZjg4ZjUwNDZhYjY2NDRkMmY0N2U2ZjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0
QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNz
aWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4MywxMiArNzgzLDEyIEBAIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3Bp
Ojp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJmYW1pbHktbmFt
ZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZhbWlseSgpKTsKICAgICAgICAgYWRkQXR0
cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJpbmcoc3RkOjpyb3VuZChzdHlsZS5jb21w
dXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29yZTo6c2NyZWVuRFBJKCkpLCAicHQiKSk7
CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3ZWlnaHQiX3MsIG1ha2VTdHJpbmcoc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRlKCkud2VpZ2h0KCkpKSk7Ci0gICAgICAg
IGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFs
aWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRl
ZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5lKCkgJiBUZXh0RGVj
b3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUiIDogImZhbHNlIik7Ci0gICAgICAgIGFk
ZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGlu
ZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUgPyAic2luZ2xlIiA6ICJub25lIik7
Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZpc2li
aWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAg
ICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxlIl9zLCBtX2NvcmVPYmplY3QtPmNhblNl
dFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAgYWRkQXR0cmli
dXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVj
dGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiX3MgOiAi
bm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInN0cmlrZXRocm91Z2gi
X3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpMaW5l
VGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRlSWZO
ZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERlY29yYXRpb25MaW5lKCkgJiBUZXh0RGVj
b3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUiX3MgOiAibm9uZSJfcyk7CisgICAgICAg
IGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUiX3MsIHN0eWxlLnZpc2liaWxpdHkoKSA9
PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6ICJmYWxzZSJfcyk7CisgICAgICAgIGFk
ZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywgbV9jb3JlT2JqZWN0LT5jYW5TZXRWYWx1
ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAgICBhZGRBdHRyaWJ1
dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAKICAgICAgICAgaWYgKCFzdHlsZS50ZXh0
SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVk
KCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JMZW5ndGgoc3R5bGUudGV4dEluZGVudCgp
LCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50b0ludCgpKSk7CkBAIC03OTksMTggKzc5
OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OlRleHRBdHRyaWJ1dGVzIEFjY2Vzc2li
aWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2Rl
OjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmlj
YXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVz
dGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2Vi
S2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlv
biJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlm
aWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlv
biJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3Rp
ZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVl
ZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOworICAgICAgICAgICAgYWRkQXR0cmlidXRl
SWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxsIl9zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRzcGkuY3BwCmluZGV4IGVlNmZhZDAyMGJj
M2Y4OGEwODRiNmRmYWYxNmFmYzVkNDIxYzc2ODUuLmQyMDNmNTc0MmE5MTVhOTVmNDEwYTNlOWNk
NDdjNzhmNTdmNjU1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9vdEF0c3BpLmNwcApAQCAtMTc1LDggKzE3
NSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNwaTo6c2V0UGF0aChTdHJpbmcmJiBwYXRo
KQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6OmVtYmVkZGVkKGNvbnN0IGNoYXIqIHBh
cmVudFVuaXF1ZU5hbWUsIGNvbnN0IGNoYXIqIHBhcmVudFBhdGgpCiB7Ci0gICAgbV9wYXJlbnRV
bmlxdWVOYW1lID0gcGFyZW50VW5pcXVlTmFtZTsKLSAgICBtX3BhcmVudFBhdGggPSBwYXJlbnRQ
YXRoOworICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IFN0cmluZzo6ZnJvbVVURjgocGFyZW50VW5p
cXVlTmFtZSk7CisgICAgbV9wYXJlbnRQYXRoID0gU3RyaW5nOjpmcm9tVVRGOChwYXJlbnRQYXRo
KTsKICAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmdsZXRvbigpLnBhcmVudENoYW5nZWQoKnRo
aXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9B
WE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhP
YmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZjNWE5OWExZjI4YTBmZjNkYTY3NzU1ZDFi
ODJhNTNmLi43OWI5MTVmYmFjMTFhZDNmMTc0OGY5MzJhNjVjOWNlZDA0YjcwNjRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1Mu
bW0KQEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIo
QVhDb3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRXcmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwog
fQogCi1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90
aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0ZXJhbCBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewotICAg
IFN0cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBuYW1lOwogCiAgICAgc3dpdGNoIChub3Rp
ZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0aXZlRGVzY2VuZGFudENoYW5nZWQ6CiAgICAgY2Fz
ZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRm9jdXNDaGFu
Z2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFn
ZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQi
X3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhQYWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5h
bWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAgICAgICBuYW1lID0gIkFYUGFnZVNjcm9sbGVkIl9z
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2VsZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAg
ICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhT
ZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWFNlbGVj
dGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsK
KyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoKICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNy
ZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCI7CisgICAgICAgIG5h
bWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBB
WEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0No
YW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgogICAgIGNhc2UgQVhW
YWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhWYWx1ZUNoYW5nZWQiOworICAgICAgICBu
YW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYRXhw
YW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFYRXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAg
ICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhDdXJyZW50U3RhdGVD
aGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEN1cnJlbnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0RGlyZWN0aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFt
ZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJl
Y3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdCwgQVhOb3RpZmljYXRpbwogICAgIC8v
IGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0aW1hdGVseSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJp
bGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAgLy8gQnV0IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3
aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQgaXMgdG8gb3ZlcnJpZGUgdGhlIHdyYXBwZXIncwog
ICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0aG9kIGluIHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNz
aWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxpbmsgVUlLaXQuCi0gICAgU3RyaW5nIG5vdGlmaWNh
dGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUobm90aWZpY2F0aW9uKTsKLSAgICBp
ZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgYXV0byBub3RpZmljYXRpb25OYW1l
ID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlmaWNhdGlvbik7CisgICAgaWYgKG5vdGlm
aWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtvYmplY3QtPndy
YXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIGF1dG8gbnNO
b3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uTmFtZS5jcmVhdGVOU1N0cmluZygpOworICAg
IFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5n
ZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0ZSBBWCBub3RpZmljYXRpb25zIGZvciBMYXlvdXRU
ZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxsCiAgICAgLy8gdGhlIHdyYXBwZXIncyBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgotICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3Np
YmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbk5hbWVdOworICAgIFtvYmplY3Qt
PndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9u
TmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5n
ZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVjdCogb2JqZWN0LCBjb25zdCBBWFRleHRT
dGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA3OTE5MGMxOTViNzdlMTY2NGVlMDdmMzI3
MzZiM2RhZDE2MTA1MTNhLi41MzhiNzg1ZDY5ZDkwZmY2MWVlNzc2YWFiMzJmOTU0Y2U1ZTU4Njc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTY3MSwxMiAr
MTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlTY3JvbGw6KFVJQWNjZXNzaWJpbGl0eVNj
cm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09MIHJlc3VsdCA9IHNlbGYuYXhCYWNraW5n
T2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0aW9uKTsKIAogICAgIGlmIChyZXN1bHQp
IHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNoZTo6QVhOb3RpZmljYXRpb246OkFYUGFn
ZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25O
YW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gQVhPYmplY3RDYWNoZTo6bm90
aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2FjaGU6OkFYTm90aWZpY2F0aW9uOjpBWFBh
Z2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAgICAgICAgW3NlbGYgcG9zdE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAogICAgICAgICBDR1BvaW50IHNjcm9sbFBv
cyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9zaXRpb25dOwogICAgICAgICBOU1N0cmlu
ZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQVhTY3JvbGwgW3Bv
c2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngsIHNjcm9sbFBvcy55XTsKLSAgICAgICAg
W3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lIHVz
ZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcgfV07CisgICAgICAgIFtzZWxmIGFjY2Vz
c2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZpY2F0aW9uTmFtZS5nZXQoKSB1c2VySW5m
bzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwogICAgIH0KIAogICAgIC8vIFRoaXMgbWVh
bnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBzY3JvbGwgYW5kIG5vIG90aGVyIGFuY2Vz
dG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNjM2OTY3MDFmNDQyOTcxZDFjMDI1Zjg3
ODNmZGY4MjNmM2I5OGQxMC4uNjRiOGNhZTc2NDNkMTIzMDY1NDlmOGI3OGY2NGJiZWY1NDk0ZDI1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTU2OSw3ICs1NjksNyBAQCBWYWx1ZU9yRXhjZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6
OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJXb3JsZCYgd29ybGQsCiAjaWYgRU5BQkxF
KEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnNo
b3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3Vt
ZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBw
IGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3Jp
bmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwog
ICAgICAgICBTQ1JJUFRDT05UUk9MTEVSX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJleGVj
dXRlU2NyaXB0SW5Xb3JsZDogSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24g
YXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0
aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbi1hcHAg
Ym91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggZDNlOTgxOWJkNTMxZjg0ODZhMzE3
YWI5ZjllZDgzYTk4ODViZTJiYS4uODJmYTc1Zjk2NzMxZmI0MTVkYTM1Yzk0ZGM1ZmNjM2Q5N2Ew
NDc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJl
YWRlckd0ay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFk
RmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBQcmVzZW50YXRpb25TaXplLCBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG1hcmt1cCA9IHVybFRvTWFya3VwKFVSTCh7
IH0sIHBhdGgpLCBwYXRoKTsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cCwgImZpbGU6Ly8iLCBEaXNhbGxvd1NjcmlwdGlu
Z0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cCwgImZpbGU6Ly8iX3MsIERpc2FsbG93U2Ny
aXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5kZXggOTAwZWQ1ZmY4NGI5MzFhNjlmZmNh
YjgwYWU1ZTNkYTIxYzVmNjRkYi4uNjM2MjkzNjU3M2JhZWM2OGEyNTZlNWNhNmNlYjgxNzZmNDMz
ODMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQpAQCAtOTAsNyAr
OTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGlu
Z0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghdmFsdWUpCiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hhciAqbmV3VmFsdWUgPSBudWxscHRyOwor
ICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBUZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9
ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikgewogICAgIGNhc2UgVGV4dEFsaWduTW9k
ZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdu
bWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgog
ICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdy
aXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAgICAgICAgICAgbmV3VmFsdWUgPSAibGVm
dCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCJfczsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAg
ICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJL
aXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgIG5ld1ZhbHVlID0g
InJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0
OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVl
ID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0Il9zOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6
OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFs
aWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRp
cgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBpZiAoIW5ld1ZhbHVlKQorICAgIGlmIChu
ZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRWxlbWVudCogZm9jdXNl
ZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVtZW50KCk7CkBAIC0xNTAsNyArMTUwLDcg
QEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiAgICAgYXV0byBkZWZh
dWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAg
ICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlW
aWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCi0gICAg
ZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgInJn
YmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRlZmF1bHRTdHlsZS0+c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMCkiX3Mp
OwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVzIHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlm
eSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxzbyByZW1vdmUgZm9udC1mYW1pbHksIHBl
ciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRp
dG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQ
RS5jcHAKaW5kZXggYjk3OGUyZThmOGU4ODJiYmM3ZDBmOTFjYWQ3NmMzODI1MDhlOWEzZi4uNDkx
NDkwNTc5ZTZiOTExNDk4NDQ5Y2E4MjlmYzkxNTg4NTFhYjhkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0
YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2Fy
ZERhdGEoUGFzdGVib2FyZCYgcGFzCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIpICYmIGZyYW1lLmRvY3Vt
ZW50KCkpIHsKLSAgICAgICAgU3RyaW5nIG1hcmt1cCA9IHBhc3RlYm9hcmQucmVhZFN0cmluZygi
dGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiKTsKKyAgICAgICAgU3RyaW5nIG1hcmt1cCA9IHBhc3Rl
Ym9hcmQucmVhZFN0cmluZygidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiX3MpOwogICAgICAgICBy
ZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBtYXJrdXAs
IGVtcHR5U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CiAgICAg
fQogCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoUGFzdGVib2FyZCYgcGFzCiAKICAgICBpZiAo
dHlwZXMuY29udGFpbnMoInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCIpKSB7CiAgICAgICAgIGNo
b3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRl
eHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04
IikpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChyYW5nZSwgcGFzdGVi
b2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiX3MpKTsKICAgICB9CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDM4NGE2MDhiYTMzZDRkMzFiYTE5ZjU3MzAxZmY4ZWM5Y2YyMTZhZTIuLmI3Yjkw
M2ViZjcwZGZhYjYzNzQwNThmNjFkNTUwZDg5YzU4YmM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0cnVjdCBMb2dBcmd1
bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4
aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7CiAjZWxzZQogICAgICAgICBVTlVTRURf
UEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJsXSI7CisgICAgICAgIHJldHVybiAiW3Vy
bF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFz
LmgKaW5kZXggNDU3YjVhMTFhZDhjMGMwMTI1OWE4OGMyODQ0OWEyMTA1Zjg2MjZhMy4uM2QyN2U4
NjY0OTg5Y2Y0NzVkZGFjMzI0YzA4ODI3NjgzZDViZjY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09m
ZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcgQEAgY2xhc3MgT2Zmc2NyZWVuQ2FudmFz
IGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2NyZWVuQ2FudmFzPiwgcHVibGljIENhbnZh
c0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVuY29kZU9wdGlvbnMgewotICAgICAgICBT
dHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9w
bmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0gMS4wOwogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5kZXggNGRmZGU2NjNlOGJi
ODMzMjlmNTYyMDUxMzM0OTVhN2FiYjMyYmNkMC4uNTBhZDVjYmM5NjVkZTAwMGI4ODE2ODk3YmFl
OTgxN2EzZWRjOWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhcy5jcHAKQEAgLTExNzIsNyArMTE3Miw3IEBAIGludCBJbnNwZWN0b3JDYW52YXM6OmluZGV4
Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogCiAgICAgICAgICAgICBpZiAob2Zm
c2NyZWVuQ2FudmFzLT5vcmlnaW5DbGVhbigpICYmIG9mZnNjcmVlbkNhbnZhcy0+aGFzQ3JlYXRl
ZEltYWdlQnVmZmVyKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byAqYnVmZmVyID0gb2Zm
c2NyZWVuQ2FudmFzLT5idWZmZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGJ1
ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YVVS
TCA9IGJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciX3MpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShkYXRhVVJMKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRlclNvdXAuY3BwCmluZGV4IDEyNjMyZDZl
NjdkMzgzN2ExZWQ2ODQxNWQwNDI5MTA4MWQ2NTI2ZDguLmFhMjRmNTMzNTgzODM2Mzg2ZDdkNTY1
MzRjYjg5OTQ4NTM1NTRlMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3Vw
L1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAv
UmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9y
OwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBhZG9wdEdSZWYoc3RhdGljX2Nhc3Q8
R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVyKHRhc2ssICZlcnJvci5vdXRQdHIoKSkp
KTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAgICAgICAgbG9hZGVyLT5kaWRGYWlsKFJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2Rl
LCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgICAgICBs
b2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhl
cnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJsLCBTdHJpbmc6OmZyb21VVEY4KGVycm9y
LT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTY0LDEw
ICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAg
Y29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IGd1Y2hhcio+KGdfYnl0ZXNfZ2V0
X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJsLnBhdGgoKS51dGY4KCkuZGF0YSgpKSk7
CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVudFR5cGUoZ19jb250ZW50X3R5cGVfZ3Vl
c3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXplLCBudWxscHRyKSk7Ci0gICAgICAgIFJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5
cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KGRhdGFTaXplKSwg
ZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmdldCgpKSB9OworICAgICAg
ICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250ZW50VHlwZS5nZXQoKSB9OworICAgICAg
ICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJsLCBleHRyYWN0TUlNRVR5cGVGcm9tTWVk
aWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihkYXRhU2l6
ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZVN0cmluZykgfTsKICAg
ICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsKICAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSwgY29udGVudFR5cGUuZ2V0KCkpOwor
ICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRl
bnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAgICAgIHJlc3BvbnNlLnNldFNvdXJjZShS
ZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmspOwogICAgICAgICBsb2FkZXItPmRlbGl2
ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdl
dCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFrUmVmKCkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBlOTI4Y2U5YTE0ZmFiZmVl
ZWZkNDkwOWVkZDFjMGRiOWE0Y2ZmMmM2Li5kNzFjM2Y3ODRiMmVmY2IzYTFlMjc2NDZhNGVkYWQy
OTA3ZTQ3NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNv
bnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51QWN0aW9uIGFjdGlvbiwgY28KICAgICAg
ICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
UGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlBhc3Rl
QXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5k
KCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucGVy
Zm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9s
bGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNv
CiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIoemVyb1dpZHRoTm9uSm9pbmVyLCAqZnJh
bWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1NlbGVjdEFs
bDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUo
KTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0
ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0luc2VydEVt
b2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9qaSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRleCA1MTIzYmIyZDBjMDQxZGM0NzY5NzNj
ZjAwMjhlYjkzMjM5ZmE0N2M4Li4yNTljNzIyNTM2NzFiNWEwYWUwODViYzA3MTJhNGIxNWViMjc5
NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMjUy
LDE0ICsyNTIsMTQgQEAgcHJpdmF0ZToKICAgICBib29sIG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkm
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5hbDsKIAogICAgIEZsb2F0UmVjdCByZWN0
Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQpOwotICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNv
bnN0IFN0cmluZyYpOworICAgIGJvb2wgdmFsdWVGb3JTZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAg
ICAgICAgIAogICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJhY3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lv
bigpOwogCiAgICAgc3RydWN0IFNldHRpbmcgewotICAgICAgICBTdHJpbmcga2V5OwotICAgICAg
ICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCB2YWx1ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFs
IGtleTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7CisgICAgICAgIGJvb2wgdmFsdWUgeyBm
YWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRWZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5n
cyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0IEludGVyYWN0aW9uUmVnaW9uT3Zlcmxh
eTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgIH07CiB9CiAKLWJv
b2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1ZUZvclNldHRpbmcoY29uc3QgU3RyaW5n
JiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhB
U0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNldHRpbmcgOiBtX3Nl
dHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNldHRpbmcua2V5KQpAQCAtNDI2LDcgKzQy
Niw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3Zlcmxh
eSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAgICAKICAgICBjb250ZXh0LmNsZWFyUmVj
dChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyIpKSB7Cisg
ICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJfcykpIHsKICAgICAgICAgY29udGV4dC5z
ZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29s
b3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25P
dmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwK
IAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9uKCk7CiAKLSAgICBpZiAocmVnaW9uIHx8
ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFs
dWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAgICAgICAgIGF1dG8gZ3JhZGllbnREYXRh
ID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAgICAgIEdyYWRpZW50OjpSYWRpYWxEYXRh
IGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRpZW50RGF0YS5wb2ludDAgPSBtX21vdXNl
TG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAgLTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQg
SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRvIG1ha2VHcmFkaWVudCA9IFsmXSAoYm9v
bCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YSkg
ewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdyYWRpZW50OjpjcmVhdGUoV1RGTW92ZShn
cmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhh
UHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKLSAgICAgICAgICAgIGlmIChy
ZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikgJiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlw
IikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9z
KSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7CiAgICAgICAgICAgICAgICAgZ3JhZGll
bnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBo
YSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAxLCBo
YXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAu
MDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjEpIH0pOwotICAgICAg
ICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0
dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0
dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIl9zKSkgewogICAg
ICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3
aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAgICAgICAgICAgICAgICBncmFkaWVudC0+
YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYsMTggKzQ2NiwxOCBAQCB2b2lkIEludGVy
YWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBjb25zdGV4cHIgZmxv
YXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBib29sIHNob3VsZENsaXAgPSB2YWx1ZUZv
clNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBzaG91bGRDbGlwID0gdmFsdWVGb3JTZXR0
aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBhdGg+IGNsaXBQYXRoczsKIAogICAgICAg
ICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNsaXBQYXRocyA9IHBhdGhzRm9yUmVnaW9u
KCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFz
aG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2giKSAmJiB2YWx1
ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJvb2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFk
aWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZvclNldHRpbmcoIndhc2gi
X3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykpOwogCiAgICAgICAgIGlmIChzaG91bGRV
c2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2xpcCkgewogICAg
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGNsaXBQYXRocykgewotICAgICAg
ICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxT
aXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6
IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVl
Rm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8gMS41ICogcGF0aC5ib3VuZGluZ1JlY3Qo
KS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0UmFkaXVzOwogICAgICAgICAgICAgICAg
ICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFkaWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0
YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xhdGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCB9KTsKICAgICAgICAgICAgICAg
ICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6
YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAgICAgICAgICAgICAgICAgICAgIGJhY2tk
cm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENvbG9yKENvbG9yOjpibGFjaykuY29sb3JX
aXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5NiwxMiBAQCB2b2lkIEludGVyYWN0aW9uUmVn
aW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNl
OwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9wR3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0
aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAgaWYgKCFzaG91bGRVc2VCYWNrZHJvcEdy
YWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbENvbG9yIl9zKSkKICAgICAgICAg
ICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAg
ICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHBh
dGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZv
clNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNp
emUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAgZmxv
YXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBw
YXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7
CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsR3JhZGllbnQobWFrZUdyYWRpZW50KGhh
c0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJhZGl1cykpKTsKICAgICAgICAgICAgICAg
ICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAgICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5
IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5
JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAgICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4g
Y3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9yU2V0dGluZygiY3Vyc29yIikpCisgICAg
aWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykpCiAgICAgICAgIGN1cnNvclRvU2V0ID0g
bm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1ZUZvclNldHRpbmcoImhvdmVyIikpCisg
ICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiX3MpKQogICAgICAgICBjdXJzb3JU
b1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRp
bmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkp
OwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3Vz
ZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgbV9tb3Vz
ZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBldmVudEluQ29udGVudHNDb29yZGluYXRl
czsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgaWYgKGV2ZW50LnR5cGUo
KSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYmICFldmVudC5idXR0b25zKCkgJiYgIXZh
bHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAoZXZlbnQudHlwZSgpID09IFBsYXRmb3Jt
RXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRvbnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5n
KCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0dGluZ3NCYXNlQ29jb2EubW0KaW5kZXgg
NDc3NGNlMDhhNWI4YjUwZjY0YTE2MjAyZjUzOGI0ZjRmN2VmMmU0OC4uZTAxNmY5MjFkNWViNWFj
MTBmMThkNmZjYTc3NjE3MTY1NjdkZmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Nv
Y29hL1NldHRpbmdzQmFzZUNvY29hLm1tCkBAIC02MywxNSArNjMsMTUgQEAgYm9vbCBTZXR0aW5n
c0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNlRW5hYmxlZCgpCiAKIHZvaWQgU2V0dGlu
Z3NCYXNlOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcygpCiB7Ci0gICAgc2V0U3RhbmRh
cmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyIsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKLSAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIiwgVVNDUklQVF9TSU1QTElGSUVE
X0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIs
IFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwotICAgIHNldFN0YW5kYXJkRm9udEZhbWls
eSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRfSEFOR1VMKTsKLQotICAgIHNldFN0YW5k
YXJkRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0Rml4ZWRGb250
RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQVF9DT01NT04pOwotICAgIHNldFNlcmlmRm9udEZhbWls
eSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgi
SGVsdmV0aWNhIiwgVVNDUklQVF9DT01NT04pOworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgi
UGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRfVFJBRElUSU9OQUxfSEFOKTsKKyAgICBzZXRTdGFuZGFy
ZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIl9zLCBVU0NSSVBUX1NJTVBMSUZJRURfSEFOKTsKKyAg
ICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5vIE1pbmNobyBQcm9OIl9zLCBVU0NSSVBU
X0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxl
IFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJUFRfSEFOR1VMKTsKKworICAgIHNldFN0YW5kYXJkRm9u
dEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRGaXhlZEZvbnRGYW1p
bHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRfQ09NTU9OKTsKKyAgICBzZXRTZXJpZkZvbnRGYW1pbHko
IlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAgc2V0U2Fuc1NlcmlmRm9udEZhbWlseSgi
SGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NPTU1PTik7CiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3Rv
bURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgK
aW5kZXggMjU2ZjQ0NTQyOTAzMmJiNDJmMzEzZDkyMGFmYmZmZDFiMDIzYTc3YS4uZDIzN2UxODhj
OTMxMzIzMTcwMjg1M2VkZjkzMGU5ZGEyYjViMmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRl
cmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0
ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1
cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNl
bmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKaW5kZXggZWJjZGIxZGQw
ODEyNGZiZWJmNTM2ODdjMjk4YTg3ZjFlYTY1MWE0NS4uNWE5NDg5MDA5NDlkMTk3N2NlNzIzYTg3
NjExOGE5ZGUwNDQ3NTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNl
ckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKQEAgLTM0
LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBl
IHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNl
ckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNpb24gPSBlbXB0eVN0cmluZygpLCBVc2VyQWdl
bnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVsdCk7CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNPUkVfRVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05h
bWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdW
ZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAjZWxzZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0
aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTQ1ZmMwNjQzMzk0ZjBmMmYwNDU2NGZmYzVhZjAx
MjAwOWE3MjQ3OS4uOGI3ZTc0MWI3YzhjOTcyNWVhZDIzMmMxY2MxOGIwYTUwZTcxNDRjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVz
dGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIo
QXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBtX3NyYyA9IEdTVF9FTEVNRU5UX0NBU1Qo
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJT19TUkMsICJyYXRlIiwgc2FtcGxlUmF0
ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdldCgpLCAiZGVzdGluYXRpb24iLCB0aGlz
LCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRlclF1YW50dW1TaXplLCBudWxscHRyKSk7
CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVk
aW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gYXVkaW9TaW5rID0gY3Jl
YXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsKICAgICBtX2F1ZGlvU2lua0F2YWlsYWJs
ZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2luaykgewogICAgICAgICBHU1RfRVJST1Io
IkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlvIHNpbmsgZWxlbWVudCIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFnZW50R0xpYi5jcHAKaW5kZXggZjYwMDAx
MGFhYzg4M2YyNDBhZWE1ZThmOGVhNWQ1MzIwMDRhYzBjNi4uMGQyOWQ1ZjNkNTdiZmUzOTRmNWUy
MTE1YmU4YmUyYjYxMjBmNDU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGli
L1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcg
cGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQogewogI2lmIE9TKFVOSVgpCiAgICAgaWYgKGNo
YXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lzVHlwZTo6TW9iaWxlKQotICAgICAgICByZXR1cm4g
Imxpa2UgQW5kcm9pZCA0LjQiOworICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7
CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAgIHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3
ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpbwogICAgIH0gZWxzZSB7CiAgICAgICAg
IFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAg
ICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9uLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
IGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1IjsKKyAgICAgICAgICAgIGZpbmFs
QXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1Il9zOwogICAgICAgICB1c2VyQWdlbnQgPSBz
dGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAnICsgYXBwbGljYXRpb25OYW1lICsgJy8nICsg
ZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKaW5kZXggYjdkNThm
NDZiOWVhNDIwNzc2ZmM1MGQwNjA1MzZiMGM1OTExMTI0ZS4uYzVkZTFiNjhiNWNjY2E0YjhjOTg1
M2IzMzhiNDk4MjE4ZTE0Mzg5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcApAQCAtMTg2LDEzICsxODYsMTMgQEAg
Ym9vbCBBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBz
aGFkZXJTb3VyY2UsIEFOR0xFU2hhZGUKICAgICBpZiAoIXZhbGlkYXRlU3VjY2VzcykgewogICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbG9nID0gc2g6OkdldEluZm9Mb2coY29tcGlsZXIpOwog
ICAgICAgICBpZiAobG9nLmxlbmd0aCgpKQotICAgICAgICAgICAgc2hhZGVyVmFsaWRhdGlvbkxv
ZyA9IGxvZy5jX3N0cigpOworICAgICAgICAgICAgc2hhZGVyVmFsaWRhdGlvbkxvZyA9IFN0cmlu
ZyB7IGxvZy5jX3N0cigpIH07CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgb2JqZWN0Q29kZSA9IHNoOjpHZXRPYmplY3RDb2RlKGNvbXBpbGVy
KTsKICAgICBpZiAob2JqZWN0Q29kZS5sZW5ndGgoKSkKLSAgICAgICAgdHJhbnNsYXRlZFNoYWRl
clNvdXJjZSA9IG9iamVjdENvZGUuY19zdHIoKTsKKyAgICAgICAgdHJhbnNsYXRlZFNoYWRlclNv
dXJjZSA9IFN0cmluZyB7IG9iamVjdENvZGUuY19zdHIoKSB9OwogICAgIAogICAgIGlmICghZ2V0
U3ltYm9sSW5mbyhjb21waWxlciwgU0hBREVSX1NZTUJPTF9UWVBFX0FUVFJJQlVURSwgc3ltYm9s
cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5j
cHAKaW5kZXggMWE1YmU2ZTFiNDgwNTAwYTM2M2Y2MzBjMzJlZjY3MjIyNTg3MDQzYi4uZTYyY2Zk
NzVkZjU5MmM3MWFlYjkzNzYxZDM3NDkyYjg0OGYzMzM0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJH
TF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1cmF0aW9uID0gNV9zOwogCkBAIC01MDUs
NyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFOjpyZWFkblBpeGVsc0ltcGwo
R0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9m
IEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9sbG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xF
LgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwoQVNDSUlMaXRlcmFsIHBhY2tlZERlcHRo
U3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhNRTogU2luY2UgdGhlIGNvbnN0cnVjdG9y
cyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNoYXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlz
IGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQsIGFsd2F5cyBpbml0
aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogd2ls
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmluZGV4IGQ5ZDM2NzQxODNhOTk1MmZhNDQz
YTc3NDZmMjRjM2RiYTJhM2UwNzkuLmZjZDU2M2E2NzMwODc2MTZmNjI0MzNlM2Q2NjhkNzgyZGI2
NGY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xl
L0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmgKQEAgLTM1Myw3ICszNTMsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMs
IGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3Jl
ZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKICAgICAvLyBpbXBsZW1l
bnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tl
ZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9pZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChB
U0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlk
YXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBH
Q0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNpemVpIGhlaWdodCwgR0NHTGVudW0gZm9y
bWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVmU2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgs
IEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiByb3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9v
bCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3Bw
CmluZGV4IDdlNjM0NmZmYTE4MTdiYTE0MTc1ODdhODg4YWRlYjllNDRkZWJmMzMuLjNmMzU0OGRh
MGZmZjRmZmRmODU0M2NiMWVhN2FmZTljNzhjN2IxMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJX
aW4uY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgc3RhdGljIHZvaWQgcHJpbnRUcmFuc2Zvcm0oU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ0FUcmFuc2Zvcm0zRCYgdHJhbnNmb3IKICAgICBi
dWlsZGVyLmFwcGVuZCgnWycsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm0xMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0u
bTEyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMp
LCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xNCksICI7
ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yMSksICcgJywg
Rm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTIyKSwgJyAnLCBGb3Jt
YXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMjMpLCAnICcsIEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0yNCksICI7ICIsIEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zMSksICcgJywgRm9ybWF0dGVkTnVtYmVy
OjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZp
eGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQ
cmVjaXNpb24odHJhbnNmb3JtLm0zNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm00MSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lv
bih0cmFuc2Zvcm0ubTQyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRy
YW5zZm9ybS5tNDMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNm
b3JtLm00NCksICddJyk7CiB9CiAKLXN0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgaW50IGluZGVudCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ0dDb2xvclJlZiBj
b2xvcikKK3N0YXRpYyB2b2lkIHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50
IGluZGVudCwgQVNDSUlMaXRlcmFsIGxhYmVsLCBDR0NvbG9yUmVmIGNvbG9yKQogewogICAgIENv
bG9yIGxheWVyQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JHQkFMb3NzeShjb2xvcikpOwogICAgIGlm
ICghbGF5ZXJDb2xvci5pc1ZhbGlkKCkpCkBAIC03NjIsMTAgKzc2MiwxMCBAQCBzdGF0aWMgdm9p
ZCBwcmludExheWVyKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IFBsYXRmb3JtQ0FMYXll
ciogbGF5ZXIsIGludAogICAgIH0KIAogICAgIC8vIFByaW50IGJhY2tncm91bmRDb2xvciBpZiBu
ZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGluZGVudCArIDEsICJiYWNrZ3JvdW5kQ29s
b3IiLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkp
OworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJhY2tncm91bmRDb2xvciJf
cywgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsK
IAogICAgIC8vIFByaW50IGJvcmRlckNvbG9yIGlmIG5lZWRlZAotICAgIHByaW50Q29sb3IoYnVp
bGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIiwgQ0FDRkxheWVyR2V0Qm9yZGVyQ29sb3Io
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50
ICsgMSwgImJvcmRlckNvbG9yIl9zLCBDQUNGTGF5ZXJHZXRCb3JkZXJDb2xvcihsYXllci0+cGxh
dGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBtYXNrc1RvQm91bmRzIGlmIG5lZWRlZAog
ICAgIGlmIChib29sIGxheWVyTWFza3NUb0JvdW5kcyA9IGxheWVyLT5tYXNrc1RvQm91bmRzKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0lt
YWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcAppbmRleCBjOGU1Njc4MjQyMzE1
YWMzOTM1MWUwMjA4ZmY4YTBlZGVlMTNkOWI1Li4zYjdhNzVkYzc4YWY3OTJhMDA1OWZmYzcyNjMw
NzE4NjI1YjliMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC0x
MjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRpb25hbDwKIHsKICAgICBWZWN0b3I8dWlu
dDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVUeXBlLCBxdWFsaXR5KTsKICAgICBpZiAo
ZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJkYXRhOiwiOworICAgICAg
ICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKCJkYXRhOiIsIG1p
bWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVkKGVuY29kZWRJbWFnZS5kYXRhKCksIGVu
Y29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZyZWVUeXBlLmNwcAppbmRl
eCBiOTNiYzM0Y2M0ZDRhMzQ0Y2I0MTJlYzcxZWYzYzgxZGRlNzUwOWQyLi4xZjUxNjkxZWY5Zjkw
OGZiZmNkZTU5NDMzZWFlZDRhOGY4NmI2MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udENhY2hlRnJlZVR5cGUu
Y3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMgU3RyaW5nIGdldEZhbWlseU5hbWVTdHJp
bmdGcm9tRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5KQogICAgICAgICByZXR1cm4gZmFtaWx5
OwogCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1p
bHlOYW1lc0luZGV4OjpTZXJpZkZhbWlseSkpCi0gICAgICAgIHJldHVybiAic2VyaWYiOworICAg
ICAgICByZXR1cm4gInNlcmlmIl9zOwogICAgIGlmIChmYW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRh
LT5hdChGYW1pbHlOYW1lc0luZGV4OjpTYW5zU2VyaWZGYW1pbHkpKQotICAgICAgICByZXR1cm4g
InNhbnMtc2VyaWYiOworICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiX3M7CiAgICAgaWYgKGZh
bWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZh
bWlseSkpCi0gICAgICAgIHJldHVybiAibW9ub3NwYWNlIjsKKyAgICAgICAgcmV0dXJuICJtb25v
c3BhY2UiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5h
bWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkpKQotICAgICAgICByZXR1cm4gImN1cnNpdmUiOworICAg
ICAgICByZXR1cm4gImN1cnNpdmUiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0Rh
dGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkZhbnRhc3lGYW1pbHkpKQotICAgICAgICByZXR1cm4g
ImZhbnRhc3kiOworICAgICAgICByZXR1cm4gImZhbnRhc3kiX3M7CiAKICNpZiBQTEFURk9STShH
VEspCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5k
ZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0gIi13ZWJraXQtc3lzdGVtLWZvbnQiKQog
ICAgICAgICByZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZvbnQoKTsKICNlbmRpZgogCi0gICAgcmV0
dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCiAjaWYgRkNfVkVSU0lPTiA8
IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCAxZDZhZTJlMTJlN2RkNGZkNmMwMDc1MTg5MGIyNWQ5NWNiYzkwN2RkLi5mZDlmNzhlN2Qy
MTRlODk5MDhhMDY1OGFiZGY2ZTk1NzA2OTdmYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRp
b1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBBdWRpb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKCkKIAogI2lm
IEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMo
Z3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29kZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNv
bmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsKKyAgICBjb25maWd1cmF0aW9uLmNvZGVj
ID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRpZgogCiAgICAgY2FsbE9uTWFpblRocmVh
ZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKaW5kZXggZDY5NDJjZTIy
NTQxZDhlYzRlZGExZWRmNTBjNDczNWVhYTZhZjY0NC4uMTIwN2MzNWExMTNjMzdiNTA1NmJmNjQ4
OThiOTIzNjQyZmEzZTdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHAKQEAgLTYxMyw3
ICs2MTMsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VHc3RTdHJ1Y3R1cmVWYWx1ZShHUXVhcmsg
ZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaQogewogICAgIGlmIChhdXRvIGpzb25W
YWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZhbHVlKSkgewogICAgICAgICBhdXRvKiBv
YmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9iamVjdCo+KHVzZXJEYXRhKTsKLSAgICAg
ICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSwganNvblZhbHVl
LT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShTdHJpbmcgeyBn
X3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29uVmFsdWUtPnJlbGVhc2VOb25OdWxsKCkp
OwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJl
Z2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0NTM4NDA2ZTZlMGZkYTU5N2NlMzVmOTNm
ZTNjODAyZi4uYmQ2YmU2ZjdhNjMwZTM2Y2M3YmYxNTg1MmI2MGUyMjFiMTY3MjQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKQEAgLTE3Niw3ICsxNzYs
NyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJlZ2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJl
YW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAgIGlmIChzaG91bGRDaGVja0hhcmR3YXJl
Q2xhc3NpZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKSB7CiAgICAgICAgIGZv
ciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7IGZhY3RvcmllczsgZmFjdG9yaWVzID0g
Z19saXN0X25leHQoZmFjdG9yaWVzKSkgewogICAgICAgICAgICAgYXV0byogZmFjdG9yeSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3RvcnkqPihmYWN0b3JpZXMtPmRhdGEpOwotICAg
ICAgICAgICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRh
dGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpOworICAgICAgICAgICAgU3Ry
aW5nIG1ldGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwg
R1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAgICAgICAgICAgICBhdXRvIGNvbXBvbmVu
dHMgPSBtZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAgICAgICAgaWYgKGNvbXBvbmVudHMuY29u
dGFpbnMoIkhhcmR3YXJlIikpIHsKICAgICAgICAgICAgICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0
cnVlOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpp
bml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgfQog
CiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0gZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JN
ZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6VmlkZW9EZWNvZGVyLCAidmlkZW8veC1h
djEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAg
ICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25m
aWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxl
KSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0
ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRlby9tcDQiX3MpKSAmJiBhdjFEZWNvZGVy
QXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJh
djAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNpbmdIYXJkd2FyZSk7CiAgICAgICAgIG1f
ZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2RlY29kZXJDb2RlY01hcC5hZGQoQXRvbVN0
cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAt
NDA5LDcgKzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXpl
RGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyCiAgICAgICAgIG1fZGVjb2Rl
ck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby9tcDIiKSk7CiAgICAgfQogCi0gICAg
YXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0
aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCIpOworICAgIGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBp
c0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJhdWRpby9t
cDQiX3MpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0ZWQpIHsKICAgICAgICAgbV9kZWNvZGVy
TWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlvL21wZWciKSk7CiAgICAgICAgIG1fZGVj
b2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRpby94LW1wZWciKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDNjMGQ4Zjcz
YzQyYjhkNDJkY2JhN2JkMjNmMDcxN2Q2OGZmZWNhNGYuLjdlYmJhNDMyMmU4NTM5MjUyMWFkNTU5
OGVjYzhlYTcxNGJkMzRmMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG5l
dHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1
ZGlvU2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9sZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxh
eWVyKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBhdXRvIHJvbGUgPSBtX3BsYXllci0+aXNW
aWRlb1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2ljIl9zOwogICAgIEdzdEVsZW1lbnQqIGF1
ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKHJvbGUpOwogICAgIFJFTEVBU0VfQVNT
RVJUKGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1NpbmspCkBAIC0xNzM1LDcgKzE3MzUsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAm
ZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwogICAgICAgICBHU1RfRVJST1IoIkVycm9y
ICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJyLT5tZXNzYWdlLCBtX3VybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vycm9yTWVzc2FnZSA9IGVyci0+bWVzc2Fn
ZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJpbmcgeyBlcnItPm1lc3NhZ2UgfTsKIAog
ICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkVtcHR5OwogICAgICAg
ICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NU
UkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0xODg5LDcgKzE4ODksNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNz
YWdlKQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwg
Imh0dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHBpcGVsaW5l
KCksICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIgR1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVy
ZSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciogdXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRf
c3RyaW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAgICAgICAgICAgICAgVVJMIHVybCB7IHVy
aSB9OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBTdHJpbmcgeyB1cmkgfSB9OwogICAgICAg
ICAgICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpKTsKIAog
ICAgICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwpIHsKQEAgLTIxMjcsNyArMjEyNyw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRz
RW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAgIGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7
CiAgICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0
aXRsZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAgICAgICAgICAgY3VlLT5zZXRDb250ZW50
KHRpdGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29udGVudChTdHJpbmc6OmZyb21VVEY4KHRp
dGxlKSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUpOwogICAgICAgICB9CiAgICAgfQpAQCAt
MjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvbmZp
Z3VyZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0
KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVs
bHB0cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUmVjb25maWd1cmVkIGZp
bGUgZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRvICclcyciLCBvbGREb3dubG9hZFRlbXBs
YXRlLmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpKTsKIAotICAgIFN0cmluZyBuZXdE
b3dubG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpOworICAgIFN0cmlu
ZyBuZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3dubG9hZFRlbXBsYXRlLmdldCgpIH07CiAg
ICAgcHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25sb2FkUHJlZml4UGF0aC5yZXBsYWNlKCJY
WFhYWFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIxNzksNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJGaWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlh
UGxheWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4gZG93bmxvYWRGaWxlOwogICAgIGdfb2Jq
ZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIuZ2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwg
JmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxlLmdldCgpKSkpIHsKKyAgICBpZiAoVU5M
SUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3RyaW5nOjpmcm9tVVRGOChkb3dubG9hZEZp
bGUuZ2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5JTkcoIkNvdWxkbid0IHVubGluayBtZWRp
YSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlvbiIsIGRvd25sb2FkRmlsZS5nZXQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcwLDExICsyNDcwLDExIEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4dExvY2F0aW9uKCkKICAgICAgICAgLy8g
dGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ugb2YgdGhlIGN1cnJlbnQgdXJsIGFuZAog
ICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5ldy1sb2NhdGlvbiB0byBpdC4KICAgICAg
ICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlkKG5ld0xvY2F0aW9uKSA/IFVSTCgpIDog
bV91cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwoYmFzZVVybCwgbmV3TG9jYXRpb24pOwor
ICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmwsIFN0cmluZyB7IG5ld0xvY2F0aW9uIH0p
OwogCiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+IHBsYXliaW5VcmxTdHI7CiAgICAgICAg
IGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAiY3VycmVudC11cmkiLCAmcGxheWJpblVy
bFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAgIFVSTCBwbGF5YmluVXJsIHsgcGxheWJp
blVybFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxheWJpblVybCB7IFN0cmluZyB7IHBsYXli
aW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlmIChwbGF5YmluVXJsID09IG5ld1VybCkg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBlbGluZSgpLCAiUGxheWJpbiBhbHJl
YWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0yNzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlR1NUUGxheUJpbihjb25zdCBVUkwmIHVy
bCkKIAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5ZXItPmVsZW1lbnRJZCgpOwogICAgIGlm
IChlbGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBlbGVtZW50SWQgPSAibWVkaWEtcGxheWVy
IjsKKyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBsYXllciJfczsKIAogICAgIGNvbnN0IGNo
YXIqIHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNFLSIgOiB1cmwucHJvdG9jb2xJcygibWVk
aWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBA
IEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Q
cm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAgICAgICBHc3RCdWZmZXIqIGRhdGEgPSBu
dWxscHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0
KCksICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVsbHB0cik7CiAKLSAgICAgICAgICAgIGlu
aXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwgZGF0YX0pOworICAgICAgICAgICAgaW5p
dERhdGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1JZCB9LCBkYXRhIH0pOwogICAg
ICAgICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShl
dmVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudChHc3RF
dmVudCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZlbnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0
cjsKICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVsbHB0cjsKICAgICBnc3RfZXZlbnRfcGFy
c2VfcHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lzdGVtVVVJRCwgJmluaXREYXRhLCBudWxs
cHRyKTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1V
VUlELCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKHsgU3Ry
aW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXREYXRhIH0pOwogfQogCiBib29sIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggZjNjYThhMzAxYzY3M2Jj
MzRmNTQ0OTI1OTE1NDlmYjlhNTlkZTE0Mi4uMzJlZDNhZThiMjljMDBmZTg4MTRiZGQwNmU2NDk2
ODU1YTdhZGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcm9jZXNzVGFibGVP
ZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lkIHByb2Nlc3NUYWJsZU9mQ29udGVudHNF
bnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5nIGVuZ2luZURlc2NyaXB0aW9uKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7IH0KKyAgICBTdHJpbmcgZW5naW5lRGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiR1N0cmVhbWVyIl9zOyB9CiAgICAg
Ym9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBj
YW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFj
a1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBkY2EyYzIxZmQ2MzBhNDI3NTIwNGI1NDU1
ZTdjNGQyOTQ3MmM1YTZmLi4wM2VkYWM4YzhlOTdiYjFlYWE0YjMzYjNmNDQ1OWFjZGFkZmI5NDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
VHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0x
OTUsNyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFn
ZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmluZyYgdmEKIHsKICAgICBTdHJpbmcgbGFu
Z3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1RfVEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1
YWdlKSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNv
XzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBsYW5ndWFnZSA9IFN0cmlu
ZyB7IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5k
YXRhKCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29udmVydGVkIHRyYWNrICVkJ3MgbGFuZ3Vh
Z2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFnZS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgaWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IGxhbmd1YWdl
OwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0
VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFyKiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1
ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfc3RyaW5n
KHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIoKSkpIHsKICAgICAgICAgR1NUX0RFQlVH
KCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwgdGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkp
OwotICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgpOworICAgICAgICB2YWx1ZSA9IFN0cmlu
Z1R5cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0
cmVhbWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDlhMTg4NDNjMTI3NTEyNThlNDY1MmRiNmE2NWUw
Li5kN2JlODA1MThlZDY5ZWNlY2Q3MTZmYWIyMzIzMGY4Yzc2MGI5NmM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFk
YXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3
IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVu
dCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9iZShzaW5rUGFkLmdldCgpLCBwcm9iZVR5
cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyogaW5mbywgZ3BvaW50ZXIgdXNlckRhdGEp
IC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAgYXV0byBbbW9kaWZpZWRCdWZmZXIsIG1l
dGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdTVF9QQURfUFJPQkVfSU5GT19CVUZGRVIo
aW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lORk9fREFUQShpbmZvKSA9IG1vZGlmaWVk
QnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9jZXNzaW5nVGltZXMuc2V0KHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjptYWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3Rp
bWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7CisgICAgICAgIG1ldGEtPnByaXYtPnBy
b2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odXNlckRh
dGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dldF90aW1lc3RhbXAoKSwgR1NUX0NMT0NL
X1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKICAgICB9LCBn
c3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19mcmVlKTsKIApAQCAtMTM1LDcgKzEzNSw3
IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZvckVsZW1lbnQoR3N0RWxlbWVu
dCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQogICAgICAgICAgICAgcmV0dXJuIEdTVF9Q
QURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxlbWVudE5hbWUgPSByZWludGVycHJldF9j
YXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0cmluZyBlbGVtZW50TmFtZSB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9OwogICAgICAgICBhdXRvIHZhbHVlID0gbWV0
YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVtZW50TmFtZSk7CiAgICAgICAgIG1ldGEt
PnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVudE5hbWUsIHN0ZDo6bWFrZV9wYWlyKHZh
bHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1wKCkpKTsKICAgICAgICAgcmV0dXJuIEdT
VF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUzMGFjNjNmMzdkYThjMTk0ZTk0MzM0ZTNmMWNhLi5k
NjQwNGMxMjBjYThhZGUxMGY3NWViN2I5YjNhZGMyZDVjM2QzOTBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2
b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1cGRhdGVDb25maWd1cmF0aW9uRnJvbUNh
cHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwgMjAsIDApCiAgICAgR1VuaXF1ZVB0cjxj
aGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19nZXRfbWltZV9jb2RlYyhjYXBzLmdldCgp
KSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNvZGVjLmdldCgpOworICAgIGNvbmZpZ3Vy
YXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQoKSB9OwogI2VuZGlmCiAKICAgICBjYWxs
T25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTBkNWZmMzM2ZDkwOWFjNTVjMDY1ODk3ZGQy
ZDgxLi5kMGFkNjcyZDcxMDk3Y2Y5MTJhMTczMjI3MDVkZjBlZWQzYzIwOGUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNTk2LDcgKzU5Niw3IEBA
IHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKEdRdWFyayBmaWVsZElkLCBj
b25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAgICBHU1RfREVCVUcoIkFwcGVuZGluZyBleHRy
YSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CiAg
ICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0
Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNldEhUVFBIZWFkZXJGaWVsZChmaWVsZE5hbWUs
IGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0
cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBmaWVsZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2NDQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5z
dG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQb3N0aW5nIHRhc2sg
dG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9zaXRpb249JSIgR19HVUlOVDY0X0ZPUk1BVCAi
IHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFULCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVy
LCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBt
ZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVSTCB1cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5k
YXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5nIHsgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgp
IH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5z
ZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMsNyArNjUzLDcgQEAgc3RhdGljIHZvaWQgd2Vi
S2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3JjKiBzcmMsIERhdGFNdXRleExvY2tlcjxX
ZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihtZW1iZXJzLT5yZWZlcnJlcik7
CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5nZXQoKSkKLSAgICAgICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkpOworICAgICAgICByZXF1ZXN0LnNldEhU
VFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1ldGhvZC5nZXQoKSB9KTsKIAogI2lmIFVTRShT
T1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAgQWNjZXB0LUVuY29kaW5nIGlzIGRpc2FibGVk
IGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2NzIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVycyBrbm93IHdlIHdhbnQgdG8gYWNjZXNz
IHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAgICAgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAo
Im1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8
ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJzLmFwcGxlLmNvbSIsIHVybC5ob3N0KCkudXRm
OCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1l
LzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcu
Ni42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5yZXF1ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJz
LT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkgewogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+
IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4MSwxOSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRX
ZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0YU11dGV4TG9ja2VyPFdlYktp
dFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmb3JtYXRlZFJhbmdlLnJlc2V0KGdfc3Ry
ZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZPUk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVl
c3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVx
dWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
SGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsK
KyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdl
LCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgpIH0pOwogICAgIH0KICAgICBBU1NFUlQobWVt
YmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKTsKIAogICAg
IEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9uIHN1cHBvcnQgJXMi
LCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKTsKICAgICBpZiAoIXBy
aXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhl
YWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBI
ZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIl9zKTsKIAogICAg
IGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChw
cml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMs
ICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0
IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0gICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOworICAgIHJlcXVlc3Quc2V0SFRU
UEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lNZXRhZGF0YSwgIjEiX3MpOwogCiAgICAg
QVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyAr
ODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJLaXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5
cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXliaW5VUkkoY29uc3QgY2hhciogdXJpU3RyaW5n
KQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJpbmcgfTsKKyAgICByZXR1cm4gVVJMIHsgU3Ry
aW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3RhdGljIGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRV
cmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBwZW5kUGlwZWxpbmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5j
cHAKaW5kZXggZmU0NzlkNmJiNTI3NGYxZTY5NjNhMzUyYmI2NmU5NWE2ZmQ5ZTg5Ny4uMWFmMGU1
NTRkODJiYWU1ODE5M2NhYzY5NzVhYTVhNzMxZTBhMzg1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBl
bmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCBzdGQ6OnR1cGxlPEdSZWZQdHI8R3N0
Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBlLCBGbG9hdFNpemU+IEFwcGVuZFBpcGVs
aQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRpYVR5cGUgPSBjYXBzTWVkaWFUeXBlKGRl
bXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RSZWdpc3RyeVNjYW5uZXIgPSBHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigpOwotICAgIGlmICghZ3N0UmVnaXN0cnlT
Y2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjpDb25maWd1
cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5cGUpKSB7CisgICAgaWYgKCFnc3RSZWdp
c3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNv
bmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBvcmlnaW5hbE1lZGlhVHlwZSB9KSkgewog
ICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6SW52YWxpZDsKICAgICB9IGVsc2UgaWYg
KGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzLCBHU1RfVklERU9fQ0FQU19UWVBFX1BS
RUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6ZSA9IGdldFZpZGVvUmVzb2x1dGlvbkZy
b21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9vcihGbG9hdFNpemUoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAK
aW5kZXggODMxYzJiMmM2ZWZiMjI0NzU5YjQzYmZlNjdmYjczYjE0ZmUwYTYzNi4uMmNlYzY4NDY2
ZmZjM2Q5MTk3NmMyOTA0YmQ3NTBiYmE2Yjg2OWU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFLmNwcApAQCAtMTI1LDcgKzEy
NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0
cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCog
bWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9iVVJJID0gbWFrZVN0cmluZygibWVkaWFz
b3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8gImJsb2I6Ly8iIDogdXJsLnN0cmluZygp
KTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3RyaW5nKCJtZWRpYXNvdXJjZSIsIHVybC5z
dHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6IHVybC5zdHJpbmcoKSk7CiAgICAgR1NU
X0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgbV9t
ZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCmlu
ZGV4IDczZTI0ODQ1Y2IzM2U1MGQ1NDU3YTYyMDYxODQ0NDI2OTUxN2Q2OGUuLjkxOTYzZDMyOTA5
M2UzNmUwNGEyZDlmYWIxYzNmZGFjMzQ2ZjBhZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wu
Y3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZv
cm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgLy8gR0xfQU5HTEVf
ZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgYXJl
ICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgb3RoZXIKICAgICAvLyBleHRlbnNp
b25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUuCiAg
ICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKQotICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxp
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9F
WFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1l
YnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIik7CisgICAgICAgIHJl
dHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9t
dWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2luc3RhbmNlZF9hcnJh
eXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAgICAgICAgICAgICYmIChtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpOworICAgICAg
ICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2luc3RhbmNl
ZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2lu
c3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAgJiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9u
cy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2VkIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVu
c2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3RhbmNlZCJfcykpOwogICAgIH0KIAogICAg
IGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiKSAmJiAobV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IiKSk7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJl
X3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9mcmFt
ZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdf
ZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJH
TF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25z
LmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7CiAKICAgICAvLyBEZXNrdG9wIEdMIGFs
d2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4KICAgICBpZiAobmFtZSA9PSAiR0xfT0VT
X3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIC8v
IElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09FU190ZXh0dXJlX2Zsb2F0IGlzIGF2YWls
YWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQsIEdM
X09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9s
aW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9mbG9h
dCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xf
T0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1lID09ICJHTF9PRVNfdGV4dHVyZV9oYWxm
X2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29u
dGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNv
bnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCJfcyk7CiAKICAg
ICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAogICAgIGlmIChuYW1lID09ICJHTF9PRVNf
dmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExBVEZPUk0oR1RLKSkKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9v
YmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygi
R0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVj
dCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTQ3LDE0
ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRl
bnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAg
ICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIpCi0gICAgICAgIHJldHVy
biBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9s
b2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAgCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJs
ZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIp
OworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
dGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwogCiAgICAgaWYgKG5hbWUgPT0gIkdMX0VY
VF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICByZXR1cm4gbV9h
dmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfZHJhd19idWZmZXJzIik7CisgICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3X2J1
ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBzdXBwb3J0IGZv
ciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIzMSw3ICsyMzEs
NyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wgRXh0ZW5zaW9uc0dMT3BlbkdMOjppc1Zl
cnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBw
b3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMoIkdMX09FU192ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9
IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCJfcyk7CiAgICAgcmV0dXJuIHN1
cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xDb21tb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKaW5kZXggY2QxYWViMDU2NjYzM2EzMDQwZDY5ZTVmMGU3YWFlMDZm
ZWQ3YWZiYy4uZTkyMzI0YWNiZjdlNGZlMGFhYmUyOTIzNzM0NTIxNDY4NGNhZTI5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNH
TE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKQEAgLTE3NCwxMiArMTc0LDEyIEBA
IFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3Vy
Y2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxzZSBpZiAoR0xzaGFkZXJUeXBlID09IEdy
YXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHNoYWRlclR5cGUgPSBT
SEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiAiIjsgLy8gSW52
YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IC8vIEludmFs
aWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBsYXRmb3JtR0xPYmplY3QsIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRyeT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1f
Y29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChzaGFkZXIpOwogCiAgICAgaWYgKHJlc3Vs
dCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCiAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRyeSA9IHJlc3VsdC0+dmFsdWU7CiAKQEAg
LTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFu
c2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1HTE9iamVjdAogICAgIH0KIAogICAgIGlm
ICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hhZGVyU291cmNlOwogfQpAQCAtMjE1LDcg
KzIxNSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZhaWxh
YmxlRXh0ZW5zaW9ucygpCiAgICAgICAgIEdMaW50IG51bUV4dGVuc2lvbnMgPSAwOwogICAgICAg
ICA6OmdsR2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lPTlMsICZudW1FeHRlbnNpb25zKTsKICAg
ICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4dGVuc2lvbnM7ICsraSkKLSAgICAgICAg
ICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
Kj4oZ2xHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkpKSk7CisgICAgICAgICAgICBtX2F2YWls
YWJsZUV4dGVuc2lvbnMuYWRkKFN0cmluZyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGdsR2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSkgfSk7CiAKICAgICAgICAgaWYgKCFtX2F2
YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX3N0b3JhZ2UiX3MpKSB7
CiAgICAgICAgICAgICBHTGludCBtYWpvclZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5H
TEVTLmNwcAppbmRleCA1NGIxNzAwMTUwOTUwZTFkYjY0NzJjY2NhYjFhYTljOTU2OGUyYTczLi5i
OTExMTAyNTk4MzU4OTBkNjUxM2ZhMDMzYzMyZjk1MWU3ZWZkYmQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIEV4dGVuc2lvbnNHTE9w
ZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJPQyA+KGVnbEdldFByb2NBZGRyZXNzKCJn
bERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fZ2xEcmF3RWxlbWVu
dHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNU
QU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEcmF3RWxlbWVudHNJbnN0YW5j
ZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNBTkdMRWluc3RhbmNlZEFycmF5cyA9
IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyIpICYmIG1f
YXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFuY2VkX2FycmF5cyJfcykgJiYgbV9hdmFp
bGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZHJhd19pbnN0YW5jZWQiX3MpKSkgewog
ICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRy
aWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6
Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAgICAgbV9nbERyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3RhbmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5H
TC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZjNTk4YjM5MGVhNTQ1MzRhYWUwOThjNDhj
OWM5MjQ2OTQuLjBhNmE4OGNmMWFkNGM4NGQxMDAxNDRkMzU5NzU5Yjk1YWU3YjIzYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNwcApAQCAtMzUyLDEzICszNTIsMTQgQEAg
c3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRD
b21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJlYWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNv
bnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKK3ZvaWQgR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVz
KCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewotICAgICAgICBpZiAoc3VwcG9ydHNFeHRl
bnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKSkgewotICAgICAgICAgICAgZW5zdXJl
RXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOworICAgICAgICBT
dHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uU3RyaW5nIHsgcGFja2VkRGVwdGhTdGVu
Y2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlmIChzdXBwb3J0c0V4dGVuc2lvbihwYWNrZWREZXB0
aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7CisgICAgICAgICAgICBlbnN1cmVFeHRlbnNpb25F
bmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvblN0cmluZyk7CiAgICAgICAgICAgICAv
LyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUuCiAgICAgICAgICAgICBhdHRycy5kZXB0
aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wu
aAppbmRleCA4NDlhN2Y1YTM5MTJkMmU1YTAyM2ZkNDg5M2NjZjY2ZDc2ZWI1NjU5Li5hZjc1ZTBk
MDk5OTYxNmJmNjMxYjU2ZjVlNTM3NzliZGFmMmQ3MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBAIHByb3RlY3RlZDoKICAgICAvLyBpbiBw
YXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3Vs
ZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRp
ZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVudGF0aW9uLgotICAgIHZvaWQgdmFsaWRh
dGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsK
KyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0
ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2
b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdDR0xpbnQgeSwgR0NHTHNpemVpIHdpZHRo
LCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3JtYXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xz
aXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwgR0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dM
c2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29sIHJlYWRpbmdUb1BpeGVsQnVmZmVyT2Jq
ZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXgg
YzM1YjJmMGYxNWQ5Y2QwOWI5YjI4YmUwYmY0NDc3ODg3NDMwNTczOC4uN2I1NGEwMWYzZTk2M2Mx
ODc5MTczNGVjNGEzYzRlYThjOGYzOGE5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1
ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlYWRQaXhlbHNGb3JQYWludFJlc3VsdHMo
KQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQog
ewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfRVhUX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXplKQogCiAgICAgICAgIEV4
dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9ucyA9IGdldEV4dGVuc2lvbnMoKTsKICAg
ICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZlciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUg
aXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNr
ZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZv
cm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcAppbmRleCA4M2I5Yjg2YzUzMjcyZmM1
NDE1N2M5MGY0NjY1YWY4MTE5OGRhNGY4Li4zYWU2MmJmNmVlYjEzNzZmNzMxNGZhMzBjNmM0YWRl
OTg4YTM4MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMRVMuY3BwCkBA
IC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZC
T3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIC8vIFdlIGRvbid0IGFsbG93IHRoZSBsb2dp
YyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBkZXB0aCBpcyBub3QuCiAgICAgLy8gU2Vl
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBz
dXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBh
dHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0
aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0g
KGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIAogICAgIC8vIFJlc2l6ZSBy
ZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3JlRkJPID0gZmFsc2U7CkBAIC0yNDAsMTEg
KzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xl
bnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVudQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVu
Y2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3Rl
bmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIAogICAgIGF1dG8gYXR0cmli
dXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxp
YXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190
ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0
ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIl9zKSkgewogICAg
ICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNlOwogICAgICAgICBzZXRDb250ZXh0QXR0
cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5H
TEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
Q29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcAppbmRleCAzMzAxMDhjNjZkYWE3ZjIwYzZj
MzIzYmQ1NDBjOTM3YTBjMjhiN2Y2Li5iMWY0YzY0N2E3NjMyZmMwOTlkNmE0NjYxNmQwMGRiZTU0
ZjdkNjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVN
YXBwZXJBTkdMRS5jcHAKQEAgLTM1MCw3ICszNTAsNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogICAgIEFTU0VSVF9VTlVT
RUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICAvLyBXZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9u
IHRvIHJlbmRlciBpbnRvIHRoZSBkbWFidWYtYmFja2VkIEVHTEltYWdlLgotICAgIFJFTEVBU0Vf
QVNTRVJUKHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIikpOworICAgIFJFTEVB
U0VfQVNTRVJUKHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNfRUdMX2ltYWdlIl9zKSk7CiAgICAg
R0xfUmVxdWVzdEV4dGVuc2lvbkFOR0xFKCJHTF9PRVNfRUdMX2ltYWdlIik7CiAKICAgICB2YWxp
ZGF0ZUF0dHJpYnV0ZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIu
Y3BwCmluZGV4IDllMGY5ZDBjZjYwZTczMTg2ZWVmZGU1NDE5YjYyZmY2ZmZmZjdmZTYuLmJjYjY3
NTFlZGIzZTZkMzVlMThlMTQ5ZmEwODJhOTk4MmVlNzVkZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAgICAgICAgIG1fbGF5
ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwogCiAgICAgaWYgKG1fY2hhbmdlTWFzayAm
IEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVudCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICAgICAgY2xpZW50KCkubm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0cmluZygpLCBtX2FuaW1hdGlvblN0YXJ0
VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0Nv
dW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNhYzQ4YzZjMDVlY2I0NTIxNTdmYjIzMWVi
NjRiNjk4Y2E2ZjI3Li5jN2ExYzI3MjVkM2QyZTJlZjliZTk3M2Q5Y2ZjOGNmYWI5OGI4OGRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAg
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyKCkKICAgICAs
IG1fbGFzdEZQUygwKQogICAgICwgbV9mcmFtZUNvdW50KDApCiB7Ci0gICAgU3RyaW5nIHNob3dG
UFNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NIT1dfRlBTIik7CisgICAgU3RyaW5nIHNo
b3dGUFNFbnZpcm9ubWVudCB7IGdldGVudigiV0VCS0lUX1NIT1dfRlBTIikgfTsKICAgICBib29s
IG9rID0gZmFsc2U7CiAgICAgbV9mcHNJbnRlcnZhbCA9IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25t
ZW50LnRvRG91YmxlKCZvaykpOwogICAgIGlmIChvayAmJiBtX2Zwc0ludGVydmFsKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3Bw
CmluZGV4IDBkYjk4MDIxODA1NWJmNWExNDVjMzE3ODczYmE4Yjk1NmI5M2E3YTkuLjc2NjlhMTFk
YmEyN2E1N2FkZTg1MmRhMWY4YjhmMjc4YjIzODk5NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0
NTMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzdW1lQW5pbWF0aW9ucygp
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJG
aXJlZCgpCiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwg
bV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBjbGllbnQoKS5ub3RpZnlBbmltYXRpb25T
dGFydGVkKHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVh
dGlvblRpbWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIHZvaWQgZHVtcElu
bmVyTGF5ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgY29uc3QgU3RyaW5nJiBsYWJlbCwgQ29v
cmRpbmEKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFByb3Bl
cnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0aW9uU2V0PExheWVyVHJlZUFzVGV4dE9w
dGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYgKG9wdGlvbnMgJiBMYXllclRyZWVBc1Rl
eHRPcHRpb25zOjpJbmNsdWRlQ29udGVudExheWVycykKLSAgICAgICAgZHVtcElubmVyTGF5ZXIo
dGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9iYWNrZHJvcExheWVyLmdldCgpLCBvcHRp
b25zKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVy
Il9zLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlvbnMpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5j
cHAKaW5kZXggMWY1Y2EzYjJhYzM5ZmUyNTI0ZGU1ZTA3YTI1ZGE2YjUzYThjZjllZC4uYzhhYjI2
NDdmN2Y5YTBiZTMyYzE4MmU0MmE2NTFhNzdhODkxNWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtNDQsMTIgKzQ0LDEyIEBAIGVudW0g
Q2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVi
b2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29u
dGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdU
Rk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0
ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJPQVJEIl9zKTsKIH0KIAogc3RkOjp1bmlx
dWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihz
dGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+JiYgY29udGV4dCkKIHsKLSAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiUFJJTUFSWSIpOwor
ICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJQUklN
QVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1LZXlib2FyZEV2ZW50R3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCmlu
ZGV4IDQ0ZGZkZWNiMzFiMDcxNTM2MjI1MTY3Njc1YTVkZWY1M2Y3MjFhZjguLmMwMTdmMjFmYmQ4
NGYyYjg0MmUwMWYyNDhjYzQ0MDcyM2NiMWFhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCkBAIC03Nzks
MTAxICs3NzksMTAxIEBAIFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZp
ZXJGb3JHZGtLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBHREtfS0VZX01lbnU6
CiAgICAgY2FzZSBHREtfS0VZX0FsdF9MOgogICAgIGNhc2UgR0RLX0tFWV9BbHRfUjoKLSAgICAg
ICAgcmV0dXJuICJBbHQiOworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIEdES19L
RVlfQ2xlYXI6Ci0gICAgICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFy
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAg
ICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBHREtfS0VZ
X0VuZDoKLSAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAg
ICAgICAgLy8gIkVudGVyIgogICAgIGNhc2UgR0RLX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBH
REtfS0VZX0tQX0VudGVyOgogICAgIGNhc2UgR0RLX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVy
biAiRW50ZXIiOworICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgR0RLX0tFWV9F
eGVjdXRlOgotICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1
dGUiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAg
ICAgcmV0dXJuICJGMSJfczsKICAgICBjYXNlIEdES19LRVlfRjI6Ci0gICAgICAgIHJldHVybiAi
RjIiOworICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMzoKLSAgICAg
ICAgcmV0dXJuICJGMyI7CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBHREtfS0VZ
X0Y0OgotICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBj
YXNlIEdES19LRVlfRjU6Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAg
IHJldHVybiAiRjYiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3
IjsKKyAgICAgICAgcmV0dXJuICJGNyJfczsKICAgICBjYXNlIEdES19LRVlfRjg6Ci0gICAgICAg
IHJldHVybiAiRjgiOworICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9G
OToKLSAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2Fz
ZSBHREtfS0VZX0YxMDoKLSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYx
MCJfczsKICAgICBjYXNlIEdES19LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAg
ICAgIHJldHVybiAiRjExIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTI6Ci0gICAgICAgIHJldHVy
biAiRjEyIjsKKyAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMzoK
LSAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNl
IEdES19LRVlfRjE0OgotICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAg
ICAgcmV0dXJuICJGMTUiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJu
ICJGMTYiOworICAgICAgICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIEdES19LRVlfRjE3Ogot
ICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2Ug
R0RLX0tFWV9GMTg6Ci0gICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgi
X3M7CiAgICAgY2FzZSBHREtfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAg
ICByZXR1cm4gIkYxOSJfczsKICAgICBjYXNlIEdES19LRVlfRjIwOgotICAgICAgICByZXR1cm4g
IkYyMCI7CisgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjE6Ci0g
ICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBH
REtfS0VZX0YyMjoKLSAgICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJf
czsKICAgICBjYXNlIEdES19LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAg
IHJldHVybiAiRjIzIl9zOwogICAgIGNhc2UgR0RLX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAi
RjI0IjsKKyAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0hlbHA6Ci0g
ICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNl
IEdES19LRVlfSG9tZToKLSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJI
b21lIl9zOwogICAgIGNhc2UgR0RLX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0
IjsKKyAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBHREtfS0VZX0xlZnQ6Ci0g
ICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNl
IEdES19LRVlfUGFnZV9Eb3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAg
cmV0dXJuICJQYWdlRG93biJfczsKICAgICBjYXNlIEdES19LRVlfUGFnZV9VcDoKLSAgICAgICAg
cmV0dXJuICJQYWdlVXAiOworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIEdE
S19LRVlfUGF1c2U6Ci0gICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBh
dXNlIl9zOwogICAgIGNhc2UgR0RLX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgR0RL
X0tFWV9QcmludDoKLSAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVy
biAiUHJpbnRTY3JlZW4iX3M7CiAgICAgY2FzZSBHREtfS0VZX1JpZ2h0OgotICAgICAgICByZXR1
cm4gIlJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIEdES19LRVlf
U2VsZWN0OgotICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAg
IHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21l
cyBVKzAwN0YuCiAgICAgY2FzZSBHREtfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAw
N0YiOworICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIEdES19LRVlfQmFja1Nw
YWNlOgotICAgICAgICByZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9z
OwogICAgIGNhc2UgR0RLX0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBHREtfS0VZXzMyNzBf
QmFja1RhYjoKICAgICBjYXNlIEdES19LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7
CisgICAgICAgIHJldHVybiAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJVKyIsIGhleChnZGtfa2V5dmFsX3RvX3VuaWNvZGUoZ2RrX2tleXZhbF90
b191cHBlcihrZXlDb2RlKSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcyMmEzNmY1OGNjMGU3MmFmODc2NTVlYmFl
NmNhNWQ0Yjk3OGMuLmU5NTc4MjkyYjFlMDBlZjc2NjY3MTZmOWNhYmYxNDI3MTg4Zjg4MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3
ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZSwgY29uc3Qg
SW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQog
ewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0ZWJvYXJkIjsKKyAgICByZXR1cm4gImRy
YWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0
ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9V
c2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3NjczYWM5MTUxZDVmZjM1MmM3ZTVlNGFl
ZTIzMi4uOGQ1YzQzZGU4Mzk1NTk4YzIzOTlhMzhhODNkZWEzOGMxNGQyOTZhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCkBAIC01NCwxMSArNTQsMTEg
QEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bob25lKCkKICAgICByZXR1cm4gaXNDbGFz
c2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNsYXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBV
SUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdpbmFsUGFkOwogfQogCi1TdHJpbmcgb3NO
YW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKQogewog
ICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgpICYmICFpc0NsYXNzaWNQaG9uZSgpKQot
ICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4gImlQaG9uZSBPUyI7CisgICAgICAgIHJl
dHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUgT1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJp
bmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmlu
ZGV4IDQ3NTc0ZmM0NWM4MDdkM2ZmZDM1MDdiZTc2MjJiMmM0ODE2Yzk4NmYuLmJlNDZlMWUwZWM3
NGEyNjk1ZDExMWQwOWEyMDhhY2FhZTE1ZGViZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0K
QEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6flZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAgICBXZWJBVlBsYXllckNvbnRyb2xsZXIq
IHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJDb250cm9sbGVyKCk7CiAgICAgaWYgKHBs
YXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxlci5leHRlcm5hbFBsYXliYWNrQWN0aXZl
KQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChmYWxzZSwgUGxheWJhY2tTZXNzaW9u
TW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAgICAgIGV4dGVybmFsUGxheWJhY2tDaGFu
Z2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3Ry
aW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQogICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwCmluZGV4IDE4ODdk
OGM2ZjI0NzE0NDRlZWQzY2YwNmYzNDVhMzg5M2M5ZTZlNzMuLmFlNDM5ZTMwZjFmYjIzOWQxOGUx
MTY0ZTg4OTZkZmIyNzJjNzU2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmKQogCiB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFz
dGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0VVJMUmVhZGluZ1BvbGljeSwgc3RkOjpv
cHRpb25hbDxzaXplX3Q+KQogewotICAgIHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0
L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCksIGNvbnRleHQoKSk7CisgICAgdGV4dC50ZXh0
ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5n
RnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11dGYtOCJfcywgbmFtZSgpLCBj
b250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+
KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkRmls
ZVJlYWRlciYsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikKIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCiB7Ci0gICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZCgidGV4dC9wbGFpbjtjaGFy
c2V0PXV0Zi04IiwgdXJsLnVybC5zdHJpbmcoKSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFzdGVib2FyZCgidGV4dC9wbGFpbjtjaGFy
c2V0PXV0Zi04Il9zLCB1cmwudXJsLnN0cmluZygpKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUoY29uc3QgUGFzdGVib2FyZFVSTCYpCkBA
IC0xNDksNyArMTQ5LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZU1hcmt1cChjb25zdCBTdHJp
bmcmKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCwgU21hcnRSZXBsYWNlT3B0aW9uKQogewotICAgIHdyaXRlU3RyaW5nKCJ0ZXh0L3BsYWluO2No
YXJzZXQ9dXRmLTgiLCB0ZXh0KTsKKyAgICB3cml0ZVN0cmluZygidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Il9zLCB0ZXh0KTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEo
Y29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRhPiYpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1LZXlib2FyZEV2ZW50TGliV1BFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJX
UEUuY3BwCmluZGV4IGEzNGRjMjIwYmJiOWE5MmI0MGRmYjQ2M2U4NzI0ZTgxYWM3NDViMmMuLjg0
MzIzMWQzYjU4YTAyZmQ5ZDkzZDNhMzdiODY5OTdiZTU2ZDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAxIEBAIFN0cmluZyBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUpCiAg
ICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBXUEVfS0VZX0FsdF9MOgogICAgIGNhc2Ug
V1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAgICByZXR1cm4gIkFs
dCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0gICAgICAgIHJldHVybiAiQ2xlYXIiOwor
ICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9Eb3duOgotICAgICAg
ICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8vICJF
bmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAgICAgcmV0dXJuICJFbmQiOworICAgICAg
ICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgIGNhc2UgV1BFX0tFWV9J
U09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0VudGVyOgogICAgIGNhc2UgV1BFX0tFWV9S
ZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICByZXR1cm4gIkVudGVyIl9z
OwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOwor
ICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxOgotICAgICAg
ICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIHJldHVybiAiRjMi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAgICAg
cmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjU6Ci0gICAgICAgIHJldHVybiAiRjUi
OworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GNjoKLSAgICAgICAg
cmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y3
OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0dXJuICJGNyJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOworICAgICAgICByZXR1cm4gIkY4Il9z
OwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgIHJl
dHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMDoKLSAgICAgICAgcmV0dXJuICJGMTAi
OworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNlIFdQRV9LRVlfRjExOgotICAgICAg
ICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgIGNhc2UgV1BFX0tF
WV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgcmV0dXJuICJGMTIiX3M7CiAg
ICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICByZXR1
cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0OgotICAgICAgICByZXR1cm4gIkYxNCI7
CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTU6Ci0gICAgICAg
IHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICByZXR1cm4gIkYxNiJfczsKICAg
ICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIHJldHVy
biAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6Ci0gICAgICAgIHJldHVybiAiRjE4IjsK
KyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxOToKLSAgICAgICAg
cmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgcmV0dXJu
ICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoKLSAgICAgICAgcmV0dXJuICJGMjIiOwor
ICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjIzOgotICAgICAgICBy
ZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgIGNhc2UgV1BFX0tFWV9G
MjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgIHJldHVy
biAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9tZToKLSAgICAgICAgcmV0dXJuICJIb21l
IjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNhc2UgV1BFX0tFWV9JbnNlcnQ6Ci0g
ICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgIHJldHVy
biAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9Eb3duOgotICAgICAgICByZXR1cm4g
IlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICBjYXNlIFdQRV9L
RVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAiOworICAgICAgICByZXR1cm4gIlBh
Z2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6Ci0gICAgICAgIHJldHVybiAiUGF1c2Ui
OworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNhc2UgV1BFX0tFWV8zMjcwX1ByaW50
U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoKLSAgICAgICAgcmV0dXJuICJQcmludFNj
cmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAgICAgY2FzZSBXUEVfS0VZ
X1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJSaWdodCJf
czsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAgICAgICByZXR1cm4gIlNlbGVjdCI7Cisg
ICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2UgV1BFX0tFWV9VcDoKLSAgICAgICAg
cmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5kYXJk
IHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgY2FzZSBXUEVfS0VZX0RlbGV0ZToK
LSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAg
ICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICByZXR1cm4gIlUrMDAwOCI7CisgICAg
ICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9JU09fTGVmdF9UYWI6CiAg
ICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAgICBjYXNlIFdQRV9LRVlfVGFiOgotICAg
ICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVybiAiVSswMDA5Il9zOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJmNzJmYzhlYjVjY2MzZDgwNTNlNjAwY2U3
MDI5N2JhYi4uNGZhODJiYmRlMTYyNGZmZmMyNzYzODFiNTg3ZmQ2MjUwZmE0ODJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTE2Myw3ICsxNjMs
NyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVyUHJvZmlsZT4gTWVkaWFSZWNvcmRlclBy
aXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAgIGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBN
ZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tzKG1fc3RyZWFtKTsKICAgICBhdXRvIG1p
bWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsKICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICBt
aW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0IiA6ICJhdWRp
by9tcDQiOworICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAi
dmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJfczsKIAogICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcg
dmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBlICVzIiwgbWltZVR5cGUuYXNjaWkoKS5kYXRhKCkp
OwogICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcs
NyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0NvbnRhaW5lclByb2ZpbGU+IE1lZGlhUmVj
b3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQcm8KICAgICAgICAgaWYgKGNvZGVjcy5j
b250YWlucygidm9yYmlzIl9zKSkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
eC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNvZGVjcy5jb250YWlucygib3B1cyJfcykp
Ci0gICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyI7CisgICAgICAgICAg
ICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyJfczsKICAgICAgICAgZWxzZSBpZiAoY29k
ZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0
YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAgIGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8v
bXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAgZWxzZSBpZiAoY29udGFpbmVyVHlwZS5l
bmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlN
RUhlYWRlci5jcHAKaW5kZXggZTE0M2NkNGY0YTVlNDBmNmQ1Yjk2NWRjM2NhNTQ0MzcwM2MwMTg1
MS4uYjQyMzc5ZjMzYjM1YmYyZTVkNzJiMTI3YzJlMDNiNjQwYWNmY2I2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCkBAIC04NSwxNCArODUs
MTQgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiB7CiAgICAgYXV0byBtaW1lSGVhZGVyID0gYWRvcHRS
ZWYoKm5ldyBNSU1FSGVhZGVyKTsKICAgICBLZXlWYWx1ZU1hcCBrZXlWYWx1ZVBhaXJzID0gcmV0
cmlldmVLZXlWYWx1ZVBhaXJzKGJ1ZmZlcik7Ci0gICAgS2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1p
bWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtdHlwZSIp
OworICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5
VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUiX3MpOwogICAgIGlmIChtaW1lUGFyYW1ldGVy
c0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpIHsKICAgICAgICAgU3RyaW5nIGNvbnRl
bnRUeXBlLCBjaGFyc2V0LCBtdWx0aXBhcnRUeXBlLCBlbmRPZlBhcnRCb3VuZGFyeTsKICAgICAg
ICAgaWYgKGF1dG8gcGFyc2VkQ29udGVudFR5cGUgPSBQYXJzZWRDb250ZW50VHlwZTo6Y3JlYXRl
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKSkgewogICAgICAgICAgICAgY29udGVudFR5
cGUgPSBwYXJzZWRDb250ZW50VHlwZS0+bWltZVR5cGUoKTsKICAgICAgICAgICAgIGNoYXJzZXQg
PSBwYXJzZWRDb250ZW50VHlwZS0+Y2hhcnNldCgpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAgICAg
ICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRlbnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZv
ck5hbWUoInR5cGUiKTsKLSAgICAgICAgICAgIGVuZE9mUGFydEJvdW5kYXJ5ID0gcGFyc2VkQ29u
dGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiYm91bmRhcnkiKTsKKyAgICAgICAgICAg
IG11bHRpcGFydFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1l
KCJ0eXBlIl9zKTsKKyAgICAgICAgICAgIGVuZE9mUGFydEJvdW5kYXJ5ID0gcGFyc2VkQ29udGVu
dFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiYm91bmRhcnkiX3MpOwogICAgICAgICB9CiAg
ICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFR5cGUgPSBjb250ZW50VHlwZTsKICAgICAgICAg
aWYgKCFtaW1lSGVhZGVyLT5pc011bHRpcGFydCgpKQpAQCAtMTA5LDExICsxMDksMTEgQEAgUmVm
UHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5r
UmVhZGVyJiBidWZmZXIpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtaW1lUGFyYW1ldGVyc0l0
ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIik7
CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVu
dC10cmFuc2Zlci1lbmNvZGluZyJfcyk7CiAgICAgaWYgKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3Ig
IT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKICAgICAgICAgbWltZUhlYWRlci0+bV9jb250ZW50VHJh
bnNmZXJFbmNvZGluZyA9IHBhcnNlQ29udGVudFRyYW5zZmVyRW5jb2RpbmcobWltZVBhcmFtZXRl
cnNJdGVyYXRvci0+dmFsdWUpOwogCi0gICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtleVZh
bHVlUGFpcnMuZmluZCgiY29udGVudC1sb2NhdGlvbiIpOworICAgIG1pbWVQYXJhbWV0ZXJzSXRl
cmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRlbnQtbG9jYXRpb24iX3MpOwogICAgIGlm
IChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkpCiAgICAgICAg
IG1pbWVIZWFkZXItPm1fY29udGVudExvY2F0aW9uID0gbWltZVBhcmFtZXRlcnNJdGVyYXRvci0+
dmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1MTY5MDQ1YzcwNWYwODk4ZTgzMTc0ZTMxNjZlM2E2
MGVkYTk0YjgzLi4yZGMyNzE2NjNhMzExZmQ0YjFlNjgyZjkwOGNlNjM2NGQ2ZmVhNjI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2b2lkIFJlc291cmNlRXJyb3I6OnBsYXRm
b3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYgZG9tYWluID0gQ0ZFcnJvckdldERvbWFp
bihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21h
aW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbkNvY29hKQotICAgICAgICBtX2RvbWFp
biA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJy
b3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3
b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9k
b21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAgICBlbHNlIGlmIChkb21haW4gPT0ga0NG
RXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWlu
IjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgIGVsc2Ug
aWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3RhdHVzKQotICAgICAgICBtX2RvbWFpbiA9
ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVz
RXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWluID09IGtDRkVycm9yRG9tYWluV2lu
U29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIjsKKyAgICAg
ICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5Tb2NrIl9zOwogICAgIGVsc2UKICAgICAg
ICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwxMyArMTkwLDEzIEBAIFJlc291cmNlRXJy
b3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBlcnJvcikKIAogICAgIHN3aXRjaChlcnJv
ci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluQ3VzdG9tOgotICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAgICBtX2RvbWFpbiA9Ik5T
Q3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NGU3RyZWFt
RXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWlu
IjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIl9zOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9tYWluTWFjT1NTdGF0dXM6Ci0gICAgICAg
IG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiI7CisgICAgICAgIG1fZG9tYWluID0g
Ik5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVz
b3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYyYTQyZjllMjAwZTkzNWMyMTYzODk0MzY5
ZTRmNDUxYmQwNS4uNmNmMDQ5MTgxNWVhZWU5MDBjM2Q0Y2U5OGFiZDZjOTEwMmE4MTNjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJl
cXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUsOSArMjM1LDkgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBhdXRvIGZzUmVwRmlsZSA9
IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihtX3VybC5maWxlU3lzdGVtUGF0
aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGF1
dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGUpOwor
ICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmlsZVN5c3RlbVBhdGgoKTsKKyAgICAgICAg
aWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAgICAgICAgICAgYXV0byBmaWxlRGV2aWNlID0g
RmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQYXRoKTsKICAgICAgICAgICAgIGlmIChm
aWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkKICAgICAgICAgICAgICAgICBbbnNSZXF1
ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVyV2l0aEludGVnZXI6ZmlsZURldmljZS52
YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxlUHJvdG9jb2xFeHBlY3RlZERldmljZSJd
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKaW5kZXggZTBlZWY2ODgwZjJiNjdl
MDllMjMzZGVjNzQ1YmQwODM0ODc5YWFjZC4uMDcxYmIxYTQ3YmUwNzgwNDYwNDIwNWZlMjIwZDhh
NzNkM2RlNjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcApAQCAtNDcsNyArNDcsNyBAQCBD
ZXJ0aWZpY2F0ZUluZm8gQ2VydGlmaWNhdGVJbmZvOjppc29sYXRlZENvcHkoKSBjb25zdAogCiBT
dHJpbmcgQ2VydGlmaWNhdGVJbmZvOjp2ZXJpZmljYXRpb25FcnJvckRlc2NyaXB0aW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcobV92ZXJpZmlj
YXRpb25FcnJvcik7CisgICAgcmV0dXJuIFN0cmluZyB7IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jf
c3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpIH07CiB9CiAKIENlcnRpZmljYXRlSW5mbzo6Q2Vy
dGlmaWNhdGUgQ2VydGlmaWNhdGVJbmZvOjptYWtlQ2VydGlmaWNhdGUoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4IDYxMzY1MzFiNWIxYzRjN2ZhYmI0NDkx
MDMwMzU2ZTVmNDZmNzFjNWMuLjZiMTZmYzM0ZGU3YTE5YTBkZGRlMGU0NTBkOTA4NTRlMzk4NDA4
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENv
b2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwK
IAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVlc3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7
CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmVxdWVzdFBhdGggPSAi
LyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7CiAKICAgICBSZWdpc3RyYWJsZURvbWFp
biByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0
MjIyNWYyZWZjNGQwMTlhMDlmNDQ4YzQwNDliYjZkMDMuLjA0ZTY0Y2QyYzdhOTBkOWNlM2RjMjlm
OGIyZDE2NzgyNDBmYTAzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTE4NywxMSArMTg3LDExIEBAIFN0cmluZyBk
ZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVybCkKIAogICAgIFN0cmluZyBwYXRoID0gdXJs
LnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFy
dHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIHJldHVybiAiLyJfczsK
IAogICAgIGF1dG8gbGFzdFNsYXNoUG9zaXRpb24gPSBwYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAg
ICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAg
cmV0dXJuICIvIl9zOwogCiAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBv
c2l0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDdiNDY4NTVhMDUxNTc0N2Y0ZGRmYmRlNWM5
MDlhYWI5ODcwNjAzZjguLmE3YTE1MjdjODZhYTNjNWYwZDJlNWJhMGQxZGIwMzA0NTJhZjVmNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2Fj
aGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxDYWNoZUVudHJ5LmNwcApAQCAtNjEsMTAgKzYxLDEwIEBAIEN1cmxDYWNoZUVudHJ5OjpDdXJs
Q2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVzb3VyY2VIYW5kbGUqIGpvYiwgY29uc3Qg
U3RyCiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJsLmxhdGluMSgpKTsKIAogICAgIG1faGVh
ZGVyRmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1faGVhZGVyRmlsZW5hbWUuYXBw
ZW5kKCIuaGVhZGVyIik7CisgICAgbV9oZWFkZXJGaWxlbmFtZS5hcHBlbmQoIi5oZWFkZXIiX3Mp
OwogCiAgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwotICAgIG1fY29u
dGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiKTsKKyAgICBtX2NvbnRlbnRGaWxlbmFtZS5h
cHBlbmQoIi5jb250ZW50Il9zKTsKIH0KIAogQ3VybENhY2hlRW50cnk6On5DdXJsQ2FjaGVFbnRy
eSgpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDdXJsQ2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNl
SGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICBIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZW5k
KCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAgICAgICBTdHJpbmcgaGVhZGVyRmllbGQg
PSBpdC0+a2V5OwotICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIjogIik7CisgICAgICAgIGhl
YWRlckZpZWxkLmFwcGVuZCgiOiAiX3MpOwogICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQt
PnZhbHVlKTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBwZW5kKCJcbiIpOworICAgICAgICBoZWFk
ZXJGaWVsZC5hcHBlbmQoIlxuIl9zKTsKICAgICAgICAgQ1N0cmluZyBoZWFkZXJGaWVsZExhdGlu
MSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAgICBGaWxlU3lzdGVtOjp3cml0ZVRvRmls
ZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5kYXRhKCksIGhlYWRlckZpZWxkTGF0aW4x
Lmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQo
aXQtPmtleSwgaXQtPnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCAzYmQyY2M3NDI4NmVj
NDY3ODY0MDI0OGM1ZTFjZmVjYzVhMDI2N2JkLi43MDJjNWIzMWEwMWVlMjQ2YzdjNzVkN2I1NTU4
NGFlYWQ2ZmIwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQg
Q3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXJlY3Rv
cnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2NhY2hlRGlyLmFwcGVuZCgiLyIpOworICAg
IG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAgIG1fZGlzYWJsZWQgPSBmYWxzZTsKICAg
ICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBAQCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6
OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIpOwotICAgIGluZGV4RmlsZVBhdGguYXBw
ZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1f
Y2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShp
bmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhG
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhGaWxlUGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3MjhjYjg4YmZiMDU1MDI5YWFmNmY1OTM0
NzE1MzljZTc0NzkyNGNkLi4zZTVkNmYxYzkwZjYxOGVmZDFlNWNhZDEwZDRhMDZhZWU1OTk2M2Ri
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
Q29udGV4dC5jcHAKQEAgLTQyOSwyNiArNDI5LDIzIEBAIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5k
UmVxdWVzdEhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKIAogdm9pZCBDdXJs
SGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVyKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOworICAgIFN0cmluZyBoZWFk
ZXI7CiAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEluc2VydCB0aGUg
OyB0byB0ZWxsIGN1cmwgdGhhdCB0aGlzIGhlYWRlciBoYXMgYW4gZW1wdHkgdmFsdWUuCi0gICAg
ICAgIGhlYWRlci5hcHBlbmQoIjsiKTsKKyAgICAgICAgaGVhZGVyID0gbWFrZVN0cmluZyhuYW1l
LCAnOycpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQoIjogIik7Ci0gICAg
ICAgIGhlYWRlci5hcHBlbmQodmFsdWUpOworICAgICAgICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5h
bWUsICI6ICIsIHZhbHVlKTsKICAgICB9CiAKLSAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRl
cik7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZNb3ZlKGhlYWRlcikpOwogfQogCiB2b2lk
IEN1cmxIYW5kbGU6OnJlbW92ZVJlcXVlc3RIZWFkZXIoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIC8vIEFkZCBhIGhlYWRlciB3aXRoIG5vIGNvbnRlbnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQg
aGVhZGVyIHdpbGwgZ2V0IGRpc2FibGVkLiAKLSAgICBTdHJpbmcgaGVhZGVyKG5hbWUpOwotICAg
IGhlYWRlci5hcHBlbmQoIjoiKTsKLQotICAgIGFwcGVuZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsK
KyAgICBhdXRvIGhlYWRlciA9IG1ha2VTdHJpbmcobmFtZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1
ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7CiB9CiAKIHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5k
UmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYWFmMGM4
ZDk0MDcwNTVkNjhhMDU1ZmIzNTA3OTY3ZGU0YzAwODZlZC4uYjA5MjU2YjE5ODNlODZiMWZmZTU3
Y2RhMjhmNzRjNmIzZjVhMzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lk
IEN1cmxEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KCkKICAgICBuZXdSZXF1ZXN0LnNldFVSTChu
ZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NP
cmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAg
ICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIl9zKTsKICAgICAgICAgbmV3UmVxdWVz
dC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBDb250
ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJiYWY5NDJkYmM5NjNkM2ZmYjNkY2IxNWZj
MWIzYmVkZDBlZWVlYjQuLjdlYjA4NzBkNzk3NGM1YmIxMGI1YzQ2MTM4OWM1OGZjYWRlMzgxMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVx
dWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVU
KCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQdXRSZXF1ZXN0KCk7CiAKICAgICAvLyBE
aXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBoZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUt
PnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOworICAgIG1fY3VybEhhbmRsZS0+cmVtb3Zl
UmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAgIGF1dG8gZWxlbWVudFNpemUgPSBtX2Zv
cm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAgaWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5
Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpzZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0
TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNv
ZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhlYWRlcgogICAgIGlmIChtX2Zvcm1EYXRh
U3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkKLSAgICAgICAgbV9jdXJsSGFuZGxlLT5h
cHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZCIpOworICAgICAg
ICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFkZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBj
aHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAgaWYgKGZvclB1dE1ldGhvZCkKICAgICAg
ICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxf
b2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNl
SGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFjNmQwNzY2ZGFjZjNlMTliMjM3MzM2ZjVi
NTVjZTUyNjkuLmIzYWI4ZDFjYjYyZDNkZDA5ZjBmYTA4ODhhMjE5MDQ2YmRiMWUwODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHZv
aWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3Vy
bFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5n
bGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkp
IHsKICAgICAgICAgICAgIGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7
CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwotICAg
ICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7CisgICAgICAg
ICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3Bw
CmluZGV4IGU3YjhlYmNlMDczNTM2YzE0OGVhZmFjYTlkNzUxZWM4ZmIyNDQyMzIuLjRmODlkOTcz
ZWM5MTFhNWQ5MDlkZGQ3ZTJlYmE5N2E1ZDRmYmNiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRD
b29raWVKYXJQYXRoKCkKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVmYXVsdEZpbGVOYW1lID0g
ImNvb2tpZS5qYXIuZGIiOwogICAgIGNoYXIqIGNvb2tpZUphclBhdGggPSBnZXRlbnYoIkNVUkxf
Q09PS0lFX0pBUl9QQVRIIik7CiAgICAgaWYgKGNvb2tpZUphclBhdGgpCi0gICAgICAgIHJldHVy
biBjb29raWVKYXJQYXRoOworICAgICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVK
YXJQYXRoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLCBkZWZhdWx0RmlsZU5hbWUpOwogI2Vsc2UKICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjQxNwotICAgIHJldHVybiBk
ZWZhdWx0RmlsZU5hbWU7CisgICAgcmV0dXJuIFN0cmluZyB7IGRlZmF1bHRGaWxlTmFtZSB9Owog
I2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9PcGVuU1NMSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9PcGVuU1NMSGVscGVyLmNwcAppbmRleCAzNjE1MDlkNzRkYzk1MTJmNTFmNDFiOTJkNjk3
YWJjODFkOTViYjVlLi5kMzliNjViNDQwZThmMmJiMTk1NGU2YzYwYTNlODkyM2IzZjQ2YWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvT3BlblNTTEhl
bHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL09wZW5T
U0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBAQCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFyeUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4
XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wqIHNzbCkKIHsKLSAgICByZXR1cm4gU1NM
X2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9nZXRfdmVyc2lvbihz
c2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1lKGNvbnN0IFNTTCogc3NsKQogewotICAg
IHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9nZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7
CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJfZ2V0X25hbWUoU1NMX2dldF9jdXJyZW50
X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1
ZWM4MDI0Mjg5YmY0YTY1ZjkwZDJlMzhhYzFkNDc3ZS4uZjliMDBlMTg0NTA5YmY3YjhjNWMwYWMz
MWRlMTJjMzJiMmU1MmYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1B1YmxpY1N1ZmZpeEN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcApAQCAtNDgsNyArNDgsNyBAQCBz
dGF0aWMgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5JbnRlcm5hbChjb25zdCBw
c2xfY3R4X3QqIHBzbCwgY29uc3QgYwogewogICAgIC8vIHBzbF9yZWdpc3RlcmFibGVfZG9tYWlu
IHJldHVybnMgYSBwb2ludGVyIHRvIGRvbWFpbidzIGRhdGEgb3IgbnVsbCBpZiB0aGVyZSBpcyBu
byBwcml2YXRlIGRvbWFpbgogICAgIGlmIChjb25zdCBjaGFyKiB0b3BQcml2YXRlRG9tYWluID0g
cHNsX3JlZ2lzdHJhYmxlX2RvbWFpbihwc2wsIGRvbWFpbikpCi0gICAgICAgIHJldHVybiB0b3BQ
cml2YXRlRG9tYWluOworICAgICAgICByZXR1cm4gU3RyaW5nIHsgdG9wUHJpdmF0ZURvbWFpbiB9
OwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5kZXggZDFkN2I2NmVhYTc4YzEw
MzFmYmFiNGI3NDFjZjgzMWMyZmMwYjEzYi4uMTQ1ZmY2OGQ1ODg4ZmE0YTQ2NGM2N2IwYjRhZjU2
NDY1YjFjNGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKTsK
IAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBjdXJsRXJyb3JEb21haW47CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbCBjdXJsRXJyb3JEb21haW47CiAKICAgICB1bnNpZ25lZCBtX3NzbEVy
cm9ycyB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNwcAppbmRleCA5ZTNlMTU2MWI1MjkxMDAy
ZWVkZTg5YWVjN2Q0YmNiZGJkMjUyYzIzLi45OWQwNmEyN2EwMmUwMTM0MzEyNmYzODQ0MjBiYjdj
YjRmNzJkNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBjb25zdCBSZXNvdXJjZUVycm9yOjpjdXJs
RXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsKK0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVy
cm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIl9zOwogCiBSZXNvdXJjZUVy
cm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQgZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZh
aWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQy
ZTgxYTdmMWU0NTY3NWQwMjE5NTNjZWY1OTk1YzY0NjU5Ny4uZGVhMGRhYzRiZDAwMmRlODlkYzgy
MDNiODA0Yzc2MmE1YmYxNDdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKQEAgLTQ2Miw3ICs0
NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoKQogICAgIG5ld1Jl
cXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAoc2hvdWxkUmVkaXJlY3RBc0dFVChuZXdS
ZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9k
KCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAg
ICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICBuZXdSZXF1ZXN0
LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAK
aW5kZXggM2QxYmQxMjQ5YjdkNzZlZWVhNDZjYzU4NWU4ZTNjOGU5ZjBkZThhZS4uNWJmOGQ2ODAx
MWMyODMwNDc4YzA3NjMxODNkZDY4OTIzMjc1ZmQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2VDdXJsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwu
Y3BwCkBAIC04OSwxMyArODksMTMgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25z
ZShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQogCiAgICAgc3dpdGNoIChyZXNwb25zZS5o
dHRwVmVyc2lvbikgewogICAgIGNhc2UgQ1VSTF9IVFRQX1ZFUlNJT05fMV8wOgotICAgICAgICBz
ZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiKTsKKyAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAv
MS4wIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE6
Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEuMSIpOworICAgICAgICBzZXRIVFRQVmVy
c2lvbigiSFRUUC8xLjEiX3MpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENVUkxfSFRUUF9W
RVJTSU9OXzJfMDoKLSAgICAgICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMiIpOworICAgICAgICBz
ZXRIVFRQVmVyc2lvbigiSFRUUC8yIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDVVJM
X0hUVFBfVkVSU0lPTl9OT05FOgogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xp
ZW50LmgKaW5kZXggMGZlNjVhMjllNjM2MTZkYjQyZjdjOWVhMWQxODUyMjFjMjAwNDBjMy4uYzIw
ZWM4ZTcyMTFjZTFlZmU2N2I1NDFiYzgxYjk2NTVjNmU1N2QxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVnYWN5UHJldmlld0xvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdM
b2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3JkRW50cnkoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9p
ZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCBmYWI1NzQyMzNmZTAwZjRiMGJmMjJl
MGJhZWMwOWRiMTE2YTRkM2NlLi5hOGQyMzcwNjQ4ZDI0Njg4MTJjZTViNmY5NTM5YWFiMDk2MmU4
NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC01MjUsNyArNTI1
LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGkKICAgICBHVW5pcXVlUHRyPEdTTGlzdD4gY29v
a2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llU3RvcmFnZSgpKSk7CiAgICAg
Zm9yIChhdXRvKiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4
dChpdGVtKSkgewogICAgICAgICBHVW5pcXVlUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNf
Y2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSkpOwotICAgICAgICBpZiAoUmVnaXN0cmFibGVE
b21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNvdXBfY29va2llX2dldF9kb21haW4oY29v
a2llLmdldCgpKSkgPT0gZG9tYWluKSB7CisgICAgICAgIGlmIChSZWdpc3RyYWJsZURvbWFpbjo6
dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoU3RyaW5nIHsgc291cF9jb29raWVfZ2V0X2RvbWFpbihj
b29raWUuZ2V0KCkpIH0pID09IGRvbWFpbikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAu
Y3BwCmluZGV4IDJjZThhMDNmZGYwMjJkZTNmMmZjZTlkZjNhOGFhOTU1NmY4YzAwYjcuLjM0YTU3
ZTVjMmMyZWI2OTg5N2E1NzNhZTQwMzJiMjMxYjk5OTNjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBpbnQg
c3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25QaHJhc2UpCiB7Ci0gICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RPTUFJTiksIHN0
YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFzZSk7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RPTUFJTikg
fSwgc3RhdHVzQ29kZSwgZmFpbGluZ1VSTCwgcmVhc29uUGhyYXNlKTsKIH0KIAogUmVzb3VyY2VF
cnJvciBSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoU291cE1lc3NhZ2UqIG1lc3NhZ2UsIEdFcnJv
ciogZXJyb3IpCkBAIC02MSwyMiArNjEsMjIgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9y
OjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdlKiBtZXNzYWdlKQogewogICAgIEFTU0VS
VChtZXNzYWdlKTsKICNpZiBVU0UoU09VUDIpCi0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19x
dWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RPTUFJTiksIG1lc3NhZ2UtPnN0YXR1c19j
b2RlLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5n
KFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pIH0sIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAogICAgICAg
ICBzb3VwVVJJVG9VUkwoc291cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSkpLCBTdHJpbmc6OmZy
b21VVEY4KG1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsKICNlbHNlCi0gICAgcmV0dXJuIFJlc291
cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSwgc291cF9tZXNz
YWdlX2dldF9zdGF0dXMobWVzc2FnZSksCisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5n
IHsgZ19xdWFya190b19zdHJpbmcoU09VUF9TRVNTSU9OX0VSUk9SKSB9LCBzb3VwX21lc3NhZ2Vf
Z2V0X3N0YXR1cyhtZXNzYWdlKSwKICAgICAgICAgc291cF9tZXNzYWdlX2dldF91cmkobWVzc2Fn
ZSksIFN0cmluZzo6ZnJvbVVURjgoc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKG1lc3Nh
Z2UpKSk7CiAjZW5kaWYKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpnZW5lcmlj
R0Vycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgR0Vycm9yKiBlcnJvcikKIHsKLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgZXJyb3It
PmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+
ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgZmFpbGluZ1VSTCwgU3RyaW5nOjpmcm9tVVRGOChlcnJv
ci0+bWVzc2FnZSkpOwogfQogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRsc0Vycm9y
KGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgdW5zaWduZWQgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNh
dGUqIGNlcnRpZmljYXRlKQogewotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1
YXJrX3RvX3N0cmluZyhHX1RMU19FUlJPUiksIEdfVExTX0VSUk9SX0JBRF9DRVJUSUZJQ0FURSwg
ZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlmaWNhdGUoKSk7CisgICAgUmVzb3VyY2VF
cnJvciByZXNvdXJjZUVycm9yKFN0cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKEdfVExTX0VSUk9S
KSB9LCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUsIGZhaWxpbmdVUkwsIHVuYWNjZXB0YWJs
ZVRMU0NlcnRpZmljYXRlKCkpOwogICAgIHJlc291cmNlRXJyb3Iuc2V0VExTRXJyb3JzKHRsc0Vy
cm9ycyk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7CiAg
ICAgcmV0dXJuIHJlc291cmNlRXJyb3I7CkBAIC04OCw5ICs4OCw5IEBAIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCkKICAgICAv
LyBuZXR3b3JraW5nIGVycm9ycyBmcm9tIHRoYXQgZmlsZSBzaG91bGQgYmUgbW92ZWQgaGVyZS4K
IAogICAgIC8vIFVzZSB0aGUgc2FtZSB2YWx1ZSBhcyBpbiBOU1VSTEVycm9yLmgKLSAgICBzdGF0
aWMgY29uc3QgaW50IHRpbWVvdXRFcnJvciA9IC0xMDAxOwotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBjb25zdCAgZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0d29ya0Vycm9yIjsKLSAgICByZXR1cm4g
UmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVx
dWVzdCB0aW1lZCBvdXQiLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpUaW1lb3V0KTsKKyAgICBzdGF0
aWMgY29uc3RleHByIGludCB0aW1lb3V0RXJyb3IgPSAtMTAwMTsKKyAgICBzdGF0aWMgY29uc3Rl
eHByIGF1dG8gZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0d29ya0Vycm9yIl9zOworICAgIHJldHVy
biBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1lb3V0RXJyb3IsIGZhaWxpbmdVUkwsICJS
ZXF1ZXN0IHRpbWVkIG91dCJfcywgUmVzb3VyY2VFcnJvcjo6VHlwZTo6VGltZW91dCk7CiB9CiAK
IHZvaWQgUmVzb3VyY2VFcnJvcjo6ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJj
ZUVycm9yJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNvdXAuY3BwCmluZGV4IDliN2I0YjMyZDc1
N2IxYmMyYTZjYjI1OTQxMDgwNGI4OTUyY2UxMWIuLjg4OGRiN2Q4ZjMzOTI4ZGY2ZjZjZjk5NzY5
MWRkZjI4ZjVjMjYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9uc2VTb3VwLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJlc3BvbnNlKFNvdXBNZXNzYWdlKiBzb3Vw
TWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgogICAgIH0KIAogICAgIG1faHR0cFN0YXR1c0Nv
ZGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhzb3VwTWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0
YXR1c1RleHQoc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSk7Cisg
ICAgc2V0SFRUUFN0YXR1c1RleHQoU3RyaW5nIHsgc291cF9tZXNzYWdlX2dldF9yZWFzb25fcGhy
YXNlKHNvdXBNZXNzYWdlKSB9KTsKIAogICAgIG1fY2VydGlmaWNhdGUgPSBzb3VwX21lc3NhZ2Vf
Z2V0X3Rsc19wZWVyX2NlcnRpZmljYXRlKHNvdXBNZXNzYWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9
IHNvdXBfbWVzc2FnZV9nZXRfdGxzX3BlZXJfY2VydGlmaWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdl
KTsKQEAgLTY2LDkgKzY2LDkgQEAgUmVzb3VyY2VSZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShT
b3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0IENTdHJpbmcmIHNuaWYKICAgICBTdHJpbmcg
Y29udGVudFR5cGU7CiAgICAgY29uc3QgY2hhciogb2ZmaWNpYWxUeXBlID0gc291cF9tZXNzYWdl
X2hlYWRlcnNfZ2V0X29uZShyZXNwb25zZUhlYWRlcnMsICJDb250ZW50LVR5cGUiKTsKICAgICBp
ZiAoIXNuaWZmZWRDb250ZW50VHlwZS5pc051bGwoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNP
VVBfU1RBVFVTX05PVF9NT0RJRklFRCAmJiBzbmlmZmVkQ29udGVudFR5cGUgIT0gb2ZmaWNpYWxU
eXBlKQotICAgICAgICBjb250ZW50VHlwZSA9IHNuaWZmZWRDb250ZW50VHlwZS5kYXRhKCk7Cisg
ICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgc25pZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9
OwogICAgIGVsc2UKLSAgICAgICAgY29udGVudFR5cGUgPSBvZmZpY2lhbFR5cGU7CisgICAgICAg
IGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgb2ZmaWNpYWxUeXBlIH07CiAgICAgc2V0TWltZVR5cGUo
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIGlmIChtX21p
bWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9N
T0RJRklFRCkKICAgICAgICAgc2V0TWltZVR5cGUoTUlNRVR5cGVSZWdpc3RyeTo6bWltZVR5cGVG
b3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0cmluZygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAK
aW5kZXggYTU0YjY1YzUxMTgyMDZiNzE3MTFiNDk3NzNjYTIxZDY2YzIwOTFhNS4uYTJmMGM5NTQ3
MjhjOWU2ZDZiMzYwODZiOTY1OGRjMzk0NGNjMmFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRpb25MaWJIeXBoZW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9uTGliSHlwaGVuLmNw
cApAQCAtNjUsMTIgKzY1LDEzIEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFjdExvY2FsZUZyb21EaWN0
aW9uYXJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSkKIAogc3RhdGljIHZvaWQgc2Nh
bkRpcmVjdG9yeUZvckRpY3Rpb25hcmllcyhjb25zdCBjaGFyKiBkaXJlY3RvcnlQYXRoLCBIYXNo
TWFwPEF0b21TdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYgYXZhaWxhYmxlTG9jYWxlcykKIHsKLSAg
ICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogRmlsZVN5c3RlbTo6bGlzdERpcmVjdG9yeShkaXJlY3Rv
cnlQYXRoKSkgeworICAgIGF1dG8gZGlyZWN0b3J5UGF0aFN0cmluZyA9IFN0cmluZzo6ZnJvbVVU
RjgoZGlyZWN0b3J5UGF0aCk7CisgICAgZm9yIChhdXRvJiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06
Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aFN0cmluZykpIHsKICAgICAgICAgU3RyaW5nIGxv
Y2FsZSA9IGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFyeUZpbGVOYW1lKGZpbGVOYW1lKTsKICAg
ICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KGRpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChkaXJlY3RvcnlQYXRoU3RyaW5nLCBmaWxl
TmFtZSk7CiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBhdGhbUEFUSF9NQVhdOwogICAgICAgICBp
ZiAoIXJlYWxwYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0
aCkuZGF0YSgpLCBub3JtYWxpemVkUGF0aCkpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9Mb2NhbGVXaW4uY3BwCmluZGV4IGFhMDBh
NGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkwMDguLmE0NGU0MzZiNjVlYzMzNGZlNzQ4
OGFkM2RkN2NlY2M4OWE3YjQwNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNDM0LDggKzQzNCw4IEBAIHZvaWQgTG9jYWxlV2luOjpp
bml0aWFsaXplTG9jYWxlRGF0YSgpCiAgICAgU3RyaW5nIG5lZ2F0aXZlU3VmZml4ID0gZW1wdHlT
dHJpbmcoKTsKICAgICBzd2l0Y2ggKG5lZ2F0aXZlRm9ybWF0KSB7CiAgICAgY2FzZSBOZWdhdGl2
ZUZvcm1hdFBhcmVudGhlc2lzOgotICAgICAgICBuZWdhdGl2ZVByZWZpeCA9ICIoIjsKLSAgICAg
ICAgbmVnYXRpdmVTdWZmaXggPSAiKSI7CisgICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gIigiX3M7
CisgICAgICAgIG5lZ2F0aXZlU3VmZml4ID0gIikiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTmVnYXRpdmVGb3JtYXRTaWduU3BhY2VQcmVmaXg6CiAgICAgICAgIG5lZ2F0aXZlUHJlZml4
ID0gbmVnYXRpdmVTaWduICsgIiAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL0tleUV2ZW50V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlF
dmVudFdpbi5jcHAKaW5kZXggYWFlNmM5OWRkMDUyOTg1YTQzNzE4ODQ2YjY4NTM2NDU0MDUwYzIz
NC4uMDVhMGQxMjU2YTEzNjk4MjUwN2I3MzJjNzg1MmJiZWNlMjAxYjUxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBA
QCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JXaW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBz
aG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5Q29kZSkgewogICAgICAgICBjYXNlIFZL
X01FTlU6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgICAgICAgICByZXR1cm4gIkFs
dCJfczsKICAgICAgICAgY2FzZSBWS19DT05UUk9MOgotICAgICAgICAgICAgcmV0dXJuICJDb250
cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAiQ29udHJvbCJfczsKICAgICAgICAgY2FzZSBWS19T
SElGVDoKLSAgICAgICAgICAgIHJldHVybiAiU2hpZnQiOworICAgICAgICAgICAgcmV0dXJuICJT
aGlmdCJfczsKICAgICAgICAgY2FzZSBWS19DQVBJVEFMOgotICAgICAgICAgICAgcmV0dXJuICJD
YXBzTG9jayI7CisgICAgICAgICAgICByZXR1cm4gIkNhcHNMb2NrIl9zOwogICAgICAgICBjYXNl
IFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktfUldJTjoKLSAgICAgICAgICAgIHJldHVybiAiV2lu
IjsKKyAgICAgICAgICAgIHJldHVybiAiV2luIl9zOwogICAgICAgICBjYXNlIFZLX0NMRUFSOgot
ICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAgICAgICAgICByZXR1cm4gIkNsZWFyIl9z
OwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICByZXR1cm4gIkRvd24iOworICAg
ICAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAgICAvLyAiRW5kIgogICAgICAgICBjYXNl
IFZLX0VORDoKLSAgICAgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICAgICAgICAgIHJldHVybiAi
RW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIiCiAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAg
ICAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgICAgICAgICByZXR1cm4gIkVudGVyIl9zOwog
ICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAgICAgICByZXR1cm4gIkV4ZWN1dGUiOwor
ICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwogICAgICAgICBjYXNlIFZLX0YxOgotICAg
ICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgICAgICByZXR1cm4gIkYxIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyOgotICAgICAgICAgICAgcmV0dXJuICJGMiI7CisgICAgICAgICAgICByZXR1
cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZLX0YzOgotICAgICAgICAgICAgcmV0dXJuICJGMyI7
CisgICAgICAgICAgICByZXR1cm4gIkYzIl9zOwogICAgICAgICBjYXNlIFZLX0Y0OgotICAgICAg
ICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgICAgICByZXR1cm4gIkY0Il9zOwogICAgICAgICBj
YXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0dXJuICJGNSI7CisgICAgICAgICAgICByZXR1cm4g
IkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2OgotICAgICAgICAgICAgcmV0dXJuICJGNiI7Cisg
ICAgICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgICAgICBjYXNlIFZLX0Y3OgotICAgICAgICAg
ICAgcmV0dXJuICJGNyI7CisgICAgICAgICAgICByZXR1cm4gIkY3Il9zOwogICAgICAgICBjYXNl
IFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7CisgICAgICAgICAgICByZXR1cm4gIkY4
Il9zOwogICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAgICAgICAgcmV0dXJuICJGOSI7CisgICAg
ICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgICAgICBjYXNlIFZLX0YxMDoKLSAgICAgICAgICAg
IHJldHVybiAiRjExIjsKKyAgICAgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgICAgICBjYXNl
IFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgICAgIHJldHVybiAi
RjEyIl9zOwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAgICAgICAgICAgIHJldHVybiAiRjEzIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAgICAgICBjYXNlIFZLX0YxNDoKLSAgICAg
ICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgICAg
ICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjE1Il9zOwogICAgICAgICBjYXNlIFZLX0YxNjoKLSAgICAgICAgICAgIHJldHVybiAi
RjE2IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE2Il9zOwogICAgICAgICBjYXNlIFZLX0YxNzoK
LSAgICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE3Il9zOwog
ICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAg
ICAgIHJldHVybiAiRjE4Il9zOwogICAgICAgICBjYXNlIFZLX0YxOToKLSAgICAgICAgICAgIHJl
dHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE5Il9zOwogICAgICAgICBjYXNlIFZL
X0YyMDoKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIw
Il9zOwogICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAgICAgICAgIHJldHVybiAiRjIxIjsKKyAg
ICAgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgICAgICBjYXNlIFZLX0YyMjoKLSAgICAgICAg
ICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIyIl9zOwogICAgICAgICBj
YXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJldHVybiAiRjIzIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjIzIl9zOwogICAgICAgICBjYXNlIFZLX0YyNDoKLSAgICAgICAgICAgIHJldHVybiAiRjI0
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0Il9zOwogICAgICAgICBjYXNlIFZLX0hFTFA6Ci0g
ICAgICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAgICAgICAgcmV0dXJuICJIZWxwIl9zOwog
ICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAgICByZXR1cm4gIkhvbWUiOworICAgICAg
ICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgICAgICBjYXNlIFZLX0lOU0VSVDoKLSAgICAgICAg
ICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0Il9zOwogICAg
ICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICByZXR1cm4gIkxlZnQiOworICAgICAgICAg
ICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNlIFZLX05FWFQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJldHVybiAiUGFnZURvd24iX3M7CiAgICAg
ICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCI7CisgICAgICAg
ICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAgY2FzZSBWS19QQVVTRToKLSAgICAgICAg
ICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICAgICAgcmV0dXJuICJQYXVzZSJfczsKICAgICAg
ICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOwor
ICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJfczsKICAgICAgICAgY2FzZSBWS19SSUdI
VDoKLSAgICAgICAgICAgIHJldHVybiAiUmlnaHQiOworICAgICAgICAgICAgcmV0dXJuICJSaWdo
dCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0gICAgICAgICAgICByZXR1cm4gIlNjcm9s
bCI7CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJfczsKICAgICAgICAgY2FzZSBWS19TRUxF
Q1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgICAgICByZXR1cm4gIlNl
bGVjdCJfczsKICAgICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgIHJldHVybiAiVXAiOwor
ICAgICAgICAgICAgcmV0dXJuICJVcCJfczsKICAgICAgICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0
IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2FzZSBWS19ERUxFVEU6Ci0gICAgICAgICAg
ICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleCh0b0FT
Q0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5jcHAKaW5kZXggYjkzODcxNDY2NTNhYWQz
ZDkyYzA2YjBiNDQzZTdhNGM4YmQwMDhlZS4uODA3ZDU3MjM0MzBiMWFiODliOWJjOWIyODUwZTIx
MWYyMjAyYmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0xvY2Fs
aXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2Nh
bGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBh
bGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJhbGwg
ZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9zOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVS
ZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdp
c3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2NjU3MGZjMjM5NzdkOTQ0YmFhN2YzZDRhNjYy
Zi4uMjhiNTRlZjQ3YTFjM2I3OWViNzVmZjc1YjhjNjNhYmIxZTU0OTBjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcApAQCAt
NzQsMzQgKzc0LDM0IEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvckV4dGVu
c2lvbihTdHJpbmdWaWV3IHN0cmluZykKICAgICBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gbWltZXR5cGVNYXA7CiAgICAgaWYgKG1pbWV0eXBlTWFwLmlzRW1wdHkoKSkgewogICAgICAg
ICAvL2ZpbGwgd2l0aCBpbml0aWFsIHZhbHVlcwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInR4
dCIsICJ0ZXh0L3BsYWluIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicGRmIiwgImFwcGxp
Y2F0aW9uL3BkZiIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInBzIiwgImFwcGxpY2F0aW9u
L3Bvc3RzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjc3MiLCAidGV4dC9jc3Mi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1sIiwgInRleHQvaHRtbCIpOwotICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImh0bSIsICJ0ZXh0L2h0bWwiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJ4bWwiLCAidGV4dC94bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4c2wi
LCAidGV4dC94c2wiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcyIsICJhcHBsaWNhdGlv
bi94LWphdmFzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4aHQiLCAiYXBwbGlj
YXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0bWwiLCAiYXBw
bGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicnNzIiwgImFw
cGxpY2F0aW9uL3Jzcyt4bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZl
IiwgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQo
InN2ZyIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgic3ZneiIs
ICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianBnIiwgImltYWdl
L2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGVnIiwgImltYWdlL2pwZWciKTsK
LSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciLCAiaW1hZ2UvcG5nIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgidGlmIiwgImltYWdlL3RpZmYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0aWZmIiwgImltYWdlL3RpZmYiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJpY28i
LCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiY3VyIiwgImltYWdlL2lj
byIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJtcCIsICJpbWFnZS9ibXAiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIpOwotICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoIndtbGMiLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIik7Ci0gICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIiwgImF1ZGlvL3gtbTRhIik7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgidHh0Il9zLCAidGV4dC9wbGFpbiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFw
LmFkZCgicGRmIl9zLCAiYXBwbGljYXRpb24vcGRmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJwcyJfcywgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoImNzcyJfcywgInRleHQvY3NzIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJodG1sIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG0i
X3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhtbCJfcywgInRl
eHQveG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4c2wiX3MsICJ0ZXh0L3hzbCJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMiX3MsICJhcHBsaWNhdGlvbi94LWphdmFz
Y3JpcHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInhodCJfcywgImFwcGxpY2F0aW9u
L3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgieGh0bWwiX3MsICJhcHBs
aWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInJzcyJfcywg
ImFwcGxpY2F0aW9uL3Jzcyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndlYmFy
Y2hpdmUiX3MsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiX3MpOworICAgICAgICBtaW1ldHlw
ZU1hcC5hZGQoInN2ZyJfcywgImltYWdlL3N2Zyt4bWwiX3MpOworICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInN2Z3oiX3MsICJpbWFnZS9zdmcreG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJqcGciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJq
cGVnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicG5nIl9z
LCAiaW1hZ2UvcG5nIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWYiX3MsICJpbWFn
ZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWZmIl9zLCAiaW1hZ2UvdGlm
ZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgiaWNvIl9zLCAiaW1hZ2UvaWNvIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiX3MsICJpbWFnZS9pY28iX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoImJtcCJfcywgImltYWdlL2JtcCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sIl9zLCAidGV4dC92bmQud2FwLndtbCJfcyk7CisgICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgid21sYyJfcywgImFwcGxpY2F0aW9uL3ZuZC53YXAud21sYyJfcyk7CisgICAg
ICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIl9zLCAiYXVkaW8veC1tNGEiX3MpOwogI2lmIFVTRShK
UEVHWEwpCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianhsIiwgImltYWdlL2p4bCIpOworICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCJfcywgImltYWdlL2p4bCJfcyk7CiAjZW5kaWYKICAg
ICB9CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1pbWV0eXBlTWFwLmdldChleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCmluZGV4IDBiMjVmZjZjMzhj
ODYzNGYzN2VlYTJhZmQwMjRhOGQ0MmE0ZjQyYzUuLjY2ODVlZDk5MzY0NjlmZDBhNDNmYmUyNDEy
YmJjMzhiY2ZmOGQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Q
YXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBib29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEo
KQogc3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9ybWF0KExpc3RIYXNoU2V0PFN0cmluZz4m
IHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0KQogewogICAgIGlmIChmb3JtYXQuY2ZG
b3JtYXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxX
Rm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCIp
OworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmktbGlzdCJfcyk7CiAgICAgaWYgKGZvcm1h
dC5jZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCktPmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZv
cm1hdCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3JtYXQpCi0gICAgICAgIHJlc3VsdHMuYWRk
KCJ0ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0K
IAogc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9tRGF0YT4gUGFzdGVib2FyZDo6cmVhZFBh
c3RlYm9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsyNzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQ
YXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhjb25zdCBTdHJpbmcmIG9yaWdpbikKICAg
ICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQodHlwZSk7CiAgICAgfQogCi0gICAgZG9t
UGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIpOwotICAgIGRvbVBhc3RlYm9hcmRUeXBl
cy5hZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0
L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAg
ICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Il9zKTsKKyAgICBkb21QYXN0
ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwogCiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rv
cihkb21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0
IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFw
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRhdGFUeXBlID0gY2xpcGJvYXJkVHlwZUZy
b21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVU
ZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJuIG1fZGF0YU9iamVjdCA/IGdldENGSFRN
TChtX2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1MKCZtX2RyYWdEYXRhTWFwKTsKICAgICB9
CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIFN0cmlu
ZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21EYXRhKGNvbnN0IFN0cmluZyYgdHlwZSkK
QEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRh
dGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUsIGJvb2wgd2l0aAogCiAgICAgaWYgKHdp
dGhIVE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBjZmh0bWxEYXRhOwotICAgICAgICBtYXJr
dXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgIiIsIGNmaHRtbERhdGEpOworICAg
ICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmco
KSwgY2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5oR2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0
YShjZmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1bS5oR2xvYmFsICYmIEZBSUxFRChkYXRh
LT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwgVFJVRSkpKQogICAgICAgICAgICAgOjpH
bG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0IFVSTCYga3VybCwgY29uc3QgU3RyaW5n
JiB0aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3VybC5zdHJpbmcoKTsKICAgICBBU1NFUlQo
dXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5nKCkgaXMgVVJMIGVuY29kZWQuCiAKLSAg
ICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxl
U3RyLCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBmc1BhdGggPSBmaWxlU3lzdGVtUGF0aEZy
b21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJMIl9zLCB0cnVlKTsKICAgICBTdHJpbmcg
Y29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRdXHJcblVSTD0iICsgdXJsICsgIlxyXG4i
KTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50U3RyaW5nLmxhdGluMSgpOwogCkBAIC03
NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
JiBwYXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRvIGNsaXBib2FyZCBpbiBmb3JtYXQgQ0Zf
SFRNTCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29udGVudGVkaXRhYmxlIGFyZWFzIGFzIGEg
bGluawogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9vd25lcikpIHsKICAgICAgICAgVmVjdG9y
PGNoYXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZIVE1MKHVybFRvTWFya3VwKHBhc3RlYm9h
cmRVUkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAgICAgICAgbWFya3VwVG9DRkhUTUwodXJs
VG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7
CiAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRlR2xvYmFsRGF0YShkYXRhKTsKICAgICAg
ICAgaWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENsaXBib2FyZEZvcm1hdCwgY2JEYXRhKSkK
ICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEpOwpAQCAtODQwLDcgKzg0MCw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0LCBQbGFpblRleHRV
UkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFi
bGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1fb3duZXIpKSB7CiAgICAgICAgIGlmIChI
QU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRhKENGX1RFWFQpKSB7CiAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJhY3RlcnMgYXMgTGF0aW4tMSwgbm90IFVU
Ri04IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0aGF0IHRoZSByaWdodCBlbmNvZGluZz8K
LSAgICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19jYXN0PGNoYXIqPihHbG9iYWxMb2NrKGNi
RGF0YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0gU3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hh
cio+KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAgICAgICAgIEdsb2JhbFVubG9jayhjYkRh
dGEpOwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2FyZCgpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xPQkFMIGNyZWF0ZUdsb2JhbEltYWdlRmls
ZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYKICAgICAgICAgR2xv
YmFsRnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgZXh0ZW5zaW9u
Lmluc2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5pbnNlcnQoIi4iX3MsIDApOwogICAgIGZz
UGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwg
ZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQYXRoLmxlbmd0aCgpIDw9IDApIHsKQEAg
LTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0
YU9iamVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFya3VwKQogewogICAgIFZlY3RvcjxjaGFy
PiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgIiIsIGRhdGEpOworICAgIG1hcmt1
cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAKICAgICBTVEdNRURJVU0g
bWVkaXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBUWU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3BwCmluZGV4IDcwZjZjMWRjZGViZDZlNGRi
ODA1MmYyYTkxMWY3MDYyMWFiMjQ3ZDQuLmUxNjUzM2JlMmRiODJkMmVjYTZiM2JjOGJmN2MwYTUz
ODBiYjU1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1J
bmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3
aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5nIG9zVmVyc2lvbkZvclVBU3RyaW5nKCkK
ICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBXaW5kb3dzQ0UyOgogICAgIGNhc2UgV2lu
ZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIjsKKyAgICAgICAgcmV0dXJuICJX
aW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NFNDoKLSAgICAgICAgcmV0dXJuICJXaW5k
b3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgQ0UgLk5FVCJfczsKICAgICBj
YXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyAzLjEiOworICAgICAgICBy
ZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2UgV2luZG93czk1OgotICAgICAgICByZXR1
cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiX3M7CiAgICAgY2Fz
ZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2luZG93cyA5OCI7CisgICAgICAgIHJldHVy
biAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRvd3NNRToKLSAgICAgICAgcmV0dXJuICJX
aW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5ODsgV2lu
IDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0OgotICAgICAgICByZXR1cm4gIldpbk5U
NC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJfczsKICAgICBkZWZhdWx0OgogICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFyKiBmYW1pbHlOYW1lID0gKHZlcnNpb24g
Pj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDogIldpbmRvd3MgQ0UgIjsKLSAgICByZXR1
cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1ham9yKSArICcuJyArIFN0cmluZzo6bnVt
YmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4n
LCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09XNjQoKQpAQCAtMTUyLDExICsxNTMsMTEg
QEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJj
aGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAgICAgaWYgKGlzV09XNjQoKSkKLSAgICAg
ICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0dXJuICI7IFdPVzY0Il9zOwogICAgIGlm
IChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0FNRDY0
KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42
NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9DRVNTT1Jf
QVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCI7CisgICAg
ICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1
dE1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9vcGVueHIvT3BlblhSSW5w
dXRNYXBwaW5ncy5oCmluZGV4IGNmYmZkNTRiNjI5YTRkNjJhMmIwMjQyOTkyNDM5MjIwNzdkNjlj
OGQuLjVkNzU0ODk3NmM0MWU3ZjBhODBkZjEyNzBjODQzYmM4ZmM3YzQwM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUklucHV0TWFwcGlu
Z3MuaApAQCAtNDcsMTcgKzQ3LDE3IEBAIGNvbnN0ZXhwciBzdGQ6OmFycmF5PE9wZW5YUkJ1dHRv
blR5cGUsIDc+IG9wZW5YUkJ1dHRvblR5cGVzIHsKIGlubGluZSBTdHJpbmcgYnV0dG9uVHlwZVRv
U3RyaW5nKE9wZW5YUkJ1dHRvblR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6IHJldHVybiAidHJpZ2dlciI7Ci0gICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpTcXVlZXplOiByZXR1cm4gInNxdWVlemUiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VG91Y2hwYWQ6IHJldHVybiAidG91Y2hwYWQiOwotICAgIGNh
c2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazogcmV0dXJuICJ0aHVtYnN0aWNrIjsKLSAg
ICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1icmVzdDogcmV0dXJuICJ0aHVtYnJlc3QiOwot
ICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9uQTogcmV0dXJuICJidXR0b25hIjsKLSAg
ICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6IHJldHVybiAiYnV0dG9uYiI7CisgICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUcmlnZ2VyOiByZXR1cm4gInRyaWdnZXIiX3M7CisgICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpTcXVlZXplOiByZXR1cm4gInNxdWVlemUiX3M7CisgICAg
Y2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDogcmV0dXJuICJ0b3VjaHBhZCJfczsKKyAg
ICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayJf
czsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1icmVzdDogcmV0dXJuICJ0aHVtYnJl
c3QiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25BOiByZXR1cm4gImJ1dHRv
bmEiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpCdXR0b25COiByZXR1cm4gImJ1dHRv
bmIiX3M7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9
CiAKQEAgLTgwLDExICs4MCwxMSBAQCBjb25zdGV4cHIgc3RkOjphcnJheTxPcGVuWFJBeGlzVHlw
ZSwgMj4gb3BlblhSQXhpc1R5cGVzIHsKIGlubGluZSBTdHJpbmcgYXhpc1R5cGV0b1N0cmluZyhP
cGVuWFJBeGlzVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgT3Bl
blhSQXhpc1R5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIjsKLSAgICBjYXNlIE9wZW5Y
UkF4aXNUeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRodW1ic3RpY2siOworICAgIGNhc2UgT3Bl
blhSQXhpc1R5cGU6OlRvdWNocGFkOiByZXR1cm4gInRvdWNocGFkIl9zOworICAgIGNhc2UgT3Bl
blhSQXhpc1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAidGh1bWJzdGljayJfczsKICAgICBkZWZh
dWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9PcGVuWFJVdGlscy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKaW5kZXggOWVjYzQ4YTZhNmYw
MTVlYzc1ZWExNTgxZjM2NDhhYTIwMzlmN2FiOS4uNTYzNzJiYjM1NmVjM2VjMzJkMWEwMWIzYzBm
ZDg5MmQyMmNhYTlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Bl
bnhyL09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3Blbnhy
L09wZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEyIEBAIGlubGluZSBTdHJpbmcgaGFuZGVu
ZXNzVG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVzcykKIHsKICAgICBzd2l0Y2ggKGhhbmRl
bmVzcykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpMZWZ0OgotICAgICAgICByZXR1cm4gImxl
ZnQiOworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAgICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJp
Z2h0OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJyaWdodCJfczsK
ICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBhOTA5MGY3ZWExYTM0OWY0OGQ3M2YzYzM3
NjU0ZWUzZjY0ZmUzMmIzLi4wY2Y0MjQ4MjlkODc0ZTZkZTEwNmJkY2Y3ZjU2NzRiZWRmNTQwNGE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01ODYsNyArNTg2LDcgQEAg
dm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoUGFnZSYgcGFnZSkKICAgICBw
YWdlLnNldE91dHNpZGVWaWV3cG9ydFRocm90dGxpbmdFbmFibGVkRm9yVGVzdGluZyhmYWxzZSk7
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBNb2NrUHJldmlld0xvYWRlckNsaWVudDo6c2lu
Z2xldG9uKCkuc2V0UGFzc3dvcmQoIiIpOworICAgIE1vY2tQcmV2aWV3TG9hZGVyQ2xpZW50Ojpz
aW5nbGV0b24oKS5zZXRQYXNzd29yZChlbXB0eVN0cmluZygpKTsKICAgICBMZWdhY3lQcmV2aWV3
TG9hZGVyOjpzZXRDbGllbnRGb3JUZXN0aW5nKG51bGxwdHIpOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVy
L0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDUyZTI3Njc2M2NhMzJhYTA0ZTY5Mzc5ZmY1M2ViMTQx
MmNiMzI3YjEuLjgzNTk2OWJmYTM2Y2UxNmY2MzU2YzZiYTE3Y2E5MmVhMWU5OGRlZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMsMTEgKzUzLDExIEBAIENvbW1hbmRSZXN1
bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRp
b25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVjdCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIik7CisgICAgYXV0
byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2RlIl9zKTsKICAgICBpZiAoIWVy
cm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2Jq
ZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBhdXRvIGVycm9yTWVzc2FnZSA9IGVycm9y
T2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwogICAgIGlmICghZXJyb3JNZXNzYWdlKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3BwCmluZGV4IDA1MjQ2YmFhNjNjNTA5NDFi
YjJhOGJhNDMyOWI4MDcxYjk3ZTY5OWEuLmQ3MWY0ZDEwNTdlZGJiNTNlZGFlMTY1YjJmZTJjZTAz
YjFmMGVlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vz
c2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4m
JiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cgPSByZXNwb25zZS5yZXNwb25zZU9iamVj
dC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAgIGF1dG8gaXNTaG93aW5nSmF2YVNjcmlw
dERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRCb29sZWFuKCJyZXN1bHQiX3Mp
OwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cpIHsKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJy
b3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OSwxMyAr
MzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVudFVSTChGdW5jdGlvbjx2b2lkIChDb21t
YW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhdXRvIGJyb3dzaW5nQ29udGV4dCA9IHJl
c3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3QoImNvbnRleHQiKTsKKyAgICAgICAgICAg
IGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2UucmVzcG9uc2VPYmplY3QtPmdldE9iamVj
dCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAoIWJyb3dzaW5nQ29udGV4dCkgewogICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFu
ZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGF1dG8gdXJsID0gYnJvd3NpbmdDb250
ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAgICAgYXV0byB1cmwgPSBicm93c2luZ0Nv
bnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAgICAgICAgIGlmICghdXJsKSB7CiAgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29tbWFuZFJlc3VsdDo6ZmFpbChDb21tYW5k
UmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vzc2lvbjo6c2V0V2luZG93UmVjdChzdGQ6
Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25hbDxkb3VibGU+IHksIHN0CiAgICAgICAg
IHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250
ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5KSB7CiAgICAgICAgICAgICBhdXRvIHdp
bmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICB3aW5kb3dP
cmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7Ci0gICAgICAgICAgICB3aW5kb3dPcmln
aW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5kb3dPcmlnaW4t
PnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAgICAgICAgICAgIHdpbmRvd09yaWdpbi0+
c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0
T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93T3JpZ2luKSk7CiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAgICAgICAgICAgYXV0byB3aW5kb3dTaXpl
ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNldERv
dWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAgICAgICAgICAgIHdpbmRvd1NpemUtPnNl
dERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkpOworICAgICAgICAgICAgd2luZG93U2l6
ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFsdWUoKSk7CisgICAgICAgICAgICB3aW5k
b3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVpZ2h0LnZhbHVlKCkpOwogICAgICAgICAg
ICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9zLCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRDb21tYW5kVG9CYWNrZW5kKCJzZXRXaW5k
b3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9uc2UmJiByZXNwb25zZSkgbXV0YWJsZSB7
CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudElzRmlsZVVwbG9h
ZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuCiAgICAgYXV0
byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CiAgICAgYXJndW1lbnRzLT5wdXNo
U3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+dG9KU09OU3RyaW5nKCkpOwogCi0gICAg
c3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25z
dGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQogICAgICAgICAiZnVuY3Rpb24oZWxlbWVu
dCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09
ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmlsZScpIgogICAgICAgICAiICAgICAgICBy
ZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmli
dXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAgIHJldHVybiB7ICdmaWxlVXBsb2FkJzog
ZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAgIn0iX3M7CiAKICAgICBhdXRvIHBhcmFt
ZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIHBhcmFtZXRlcnMtPnNldFN0cmlu
ZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZh
bHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0
YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rpb248dm9pZCAoQ29tbWFuZFIKICAg
ICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKICAgICBhcmd1bWVudHMt
PnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50SUQpLT50b0pTT05TdHJpbmcoKSk7CiAK
LSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxlU2NyaXB0W10gPQorICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0KICAgICAgICAgImZ1bmN0aW9uKGVsZW1l
bnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQuZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFk
T25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBmYWxzZTsiCkBAIC0xODcwLDcgKzE4NzAs
NyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRhYmxlKGNvbnN0IFN0cmluZyYgZWxlbWVu
dElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAgICAgICAiICAgICAgICByZXR1cm4gdHJ1
ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAgICByZXR1cm4gZmFsc2U7IgotICAgICAg
ICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0byBwYXJhbWV0ZXJzID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5zZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4
dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29udGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAs
NyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVudFNlbmRLZXlzKGNvbnN0IFN0cmluZyYg
ZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1bmN0CiAgICAgICAgICAgICBhdXRvIGZp
bGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxlVXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1
bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxvYWRUeXBlIHx8IGNhcGFiaWxpdGllcygp
LnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVfb3IoZmFsc2UpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBhdG9tLgotICAgICAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQorICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlv
biBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAgICAgICAgICAiICAgIGxldCBkb2MgPSBl
bGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsiCiAgICAgICAgICAgICAgICAgICAgICIg
ICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFjdGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3
ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50U2VuZEtleXMoY29uc3QgU3RyaW5nJiBl
bGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVuY3QKICAgICAgICAgICAgICAgICAgICAg
IiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShlbGVtZW50LnZhbHVlLmxlbmd0aCwg
ZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAgICAgICAgICAgICAgIiAgICBpZiAoZWxl
bWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVsZW1lbnQpIgogICAgICAgICAgICAgICAg
ICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1lbnROb3RJbnRlcmFjdGFibGUnLCBtZXNz
YWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9OyIKLSAgICAgICAgICAgICAgICAgICAg
In0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsKIAogICAgICAgICAgICAgICAgIGF1dG8g
YXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIGFyZ3Vt
ZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVsZW1lbnRJRCktPnRvSlNPTlN0cmluZygp
KTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0
QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpDb29raWUmIGNvb2tpZSkKICAgICBhdXRv
IGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1lKTsKICAgICBjb29raWVPYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7Ci0gICAgY29va2llT2JqZWN0LT5zZXRT
dHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVlX29yKCIvIikpOworICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUucGF0aC52YWx1ZV9vcigiLyJfcykpOwog
ICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21haW4iX3MsIGNvb2tpZS5kb21haW4udmFs
dWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0Qm9vbGVhbigic2Vj
dXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0
LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2llLmh0dHBPbmx5LnZhbHVlX29yKGZhbHNl
KSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJzZXNzaW9uIl9zLCAhY29va2llLmV4
cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3VibGUoImV4cGlyZXMiX3MsIGNvb2tpZS5l
eHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0
ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIikpOworICAgIGNvb2tpZU9iamVj
dC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJOb25l
Il9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsKIH0KIApAQCAtMjY5MSwzOCArMjY5MSwz
OCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBTZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRl
KGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1faW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShp
ZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgpOyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uU291cmNlVHlwZShjb25zdCBJbnB1dFNv
dXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VU
eXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0
U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpOb25lOgotICAgICAg
ICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4gIk51bGwiX3M7CiAgICAgY2FzZSBJbnB1
dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAgc3dpdGNoIChpbnB1dFNvdXJjZS5wb2lu
dGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91c2UpKSB7CiAgICAgICAgIGNhc2UgUG9p
bnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0dXJuICJNb3VzZSI7CisgICAgICAgICAg
ICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNlIFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAg
ICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAgICAgICAgcmV0dXJuICJUb3VjaCJfczsK
ICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgotICAgICAgICAgICAgcmV0dXJuICJQZW4i
OworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5OgotICAgICAgICByZXR1cm4gIktleWJv
YXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJfczsKICAgICBjYXNlIElucHV0U291cmNl
OjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJXaGVlbCI7CisgICAgICAgIHJldHVybiAi
V2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3JpZ2luVHlwZShQb2ludGVyT3JpZ2luOjpU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50
ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBv
aW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAgICAgICByZXR1cm4gIlZpZXdwb3J0IjsK
KyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5
cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9pbnRlciI7CisgICAgICAgIHJldHVybiAi
UG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAg
ICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJldHVybiAiRWxlbWVudCJfczsKICAgICB9
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRy
aXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBhMjhiMWI4MGFlYmZmM2NhYWIzYzg0Y2Q1
YThkYmYuLjU5MTg0NzBiODVjYWM4N2ZkYjljN2EzNTk3YzI4MWQxMGE1OWJlYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dl
YkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBpbnQgV2ViRHJp
dmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICNpZiBVU0UoSU5TUEVDVE9S
X1NPQ0tFVF9TRVJWRVIpCiAgICAgU3RyaW5nIHRhcmdldFN0cmluZzsKICAgICBpZiAoY29uc3Qg
Y2hhciogdGFyZ2V0RW52VmFyID0gZ2V0ZW52KCJXRUJEUklWRVJfVEFSR0VUX0FERFIiKSkKLSAg
ICAgICAgdGFyZ2V0U3RyaW5nID0gdGFyZ2V0RW52VmFyOworICAgICAgICB0YXJnZXRTdHJpbmcg
PSBTdHJpbmcgeyB0YXJnZXRFbnZWYXIgfTsKICNlbmRpZgogICAgIGZvciAoaW50IGkgPSAxIDsg
aSA8IGFyZ2M7ICsraSkgewogICAgICAgICBjb25zdCBjaGFyKiBhcmcgPSBhcmd2W2ldOwpAQCAt
NzUsNyArNzUsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdlU3RhdGVtZW50KGFyZ3ZbMF0pOwogICAg
ICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBwb3J0U3RyaW5nID0gYXJndltpXTsKKyAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBTdHJp
bmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC05
Nyw3ICs5Nyw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNlOjpydW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VTdGF0ZW1lbnQoYXJndlswXSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRhcmdldFN0cmluZyA9IGFyZ3ZbaV07CisgICAgICAgICAgICB0YXJnZXRTdHJpbmcgPSBT
dHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBA
IC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHJveHk+IGRlc2VyaWFsaXpl
UHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkKICAgICAgICAgICAgIGlmICghcHJveHku
aHR0cHNVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFs
dWUoInNvY2tzUHJveHkiKSkgeworICAgICAgICBpZiAoYXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0
LmdldFZhbHVlKCJzb2Nrc1Byb3h5Il9zKSkgewogICAgICAgICAgICAgYXV0byBzb2Nrc1Byb3h5
ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzUHJveHkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0
aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxpemVQcm94eShKU09OOjpPYmplY3QmIHBy
b3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIGF1dG8g
c29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5nZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7
CisgICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZhbHVlID0gcHJveHlPYmplY3QuZ2V0VmFs
dWUoInNvY2tzVmVyc2lvbiJfcyk7CiAgICAgICAgICAgICBpZiAoIXNvY2tzVmVyc2lvblZhbHVl
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcy
LDMwIEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y3JlYXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJp
bGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsIHN0CiAgICAgICAgICAgICBjYXBhYmlsaXRpZXNP
YmplY3QtPnNldEJvb2xlYW4oInNldFdpbmRvd1JlY3QiX3MsIGNhcGFiaWxpdGllcy5zZXRXaW5k
b3dSZWN0LnZhbHVlX29yKHRydWUpKTsKICAgICAgICAgICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVz
LnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlX29yKFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpEaXNtaXNzQW5kTm90aWZ5KSkgewogICAgICAgICAgICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRC
ZWhhdmlvcjo6RGlzbWlzczoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJkaXNtaXNzIik7CisgICAgICAg
ICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJl
aGF2aW9yIl9zLCAiZGlzbWlzcyJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpBY2NlcHQ6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9y
Il9zLCAiYWNjZXB0Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Il9zKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6
OkRpc21pc3NBbmROb3RpZnk6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5z
ZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5
Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFu
ZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6
OkFjY2VwdEFuZE5vdGlmeToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNl
dFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJhY2NlcHQgYW5kIG5vdGlmeSIp
OworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRs
ZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6Okln
bm9yZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiKTsKKyAgICAgICAgICAgICAgICBjYXBh
YmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJp
Z25vcmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMucGFnZUxvYWRTdHJhdGVneS52YWx1ZV9vcihQYWdl
TG9hZFN0cmF0ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAgICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRl
Z3k6Ok5vbmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIl9zKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6
Tm9ybWFsOgotICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09iamVjdC0+c2V0U3RyaW5nKCJw
YWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub3JtYWwiX3MpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5
OjpFYWdlcjoKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygi
cGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0
aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJlYWdlciJfcyk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWNh
cGFiaWxpdGllcy5wcm94eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0Nh
cGFiaWxpdGllc1NvY2tldC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9DYXBhYmlsaXRp
ZXNTb2NrZXQuY3BwCmluZGV4IDBmNmM4NzgyMDA5NWEyNzEwYzc5ODVmMjBkNGQ4N2ExYTkwN2Fi
ZmEuLjJiNjcxMzQ5ZDM1YjFkY2RjOWFlYTg1ZjI5MDZmNDJkOWIwODA3NjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAKKysrIGIvU291
cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVzU29ja2V0LmNwcApAQCAtMzIsMTIgKzMy
LDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0OjpwYXJzZUNhcGFiaWxpdGllcyhjb25zdCBK
U09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7CiAgICAgUmVmUHRyPEpTT046OlZhbHVl
PiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRhcmdldEFkZHI7Ci0gICAgaWYgKG1hdGNo
ZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0YXJnZXRBZGRyIiwgdGFyZ2V0QWRkclZh
bHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQorICAgIGlmICht
YXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0QWRkciJfcywgdGFyZ2V0
QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5nKHRhcmdldEFkZHIpKQogICAg
ICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRhcmdldEFkZHI7CiAKICAgICBSZWZQdHI8
SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAgICBpbnQgdGFyZ2V0UG9ydDsKLSAgICBp
ZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgic29ja2V0OnRhcmdldFBvcnQiLCB0YXJn
ZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQor
ICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCJf
cywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQ
b3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdldFBvcnQgPSB0YXJnZXRQb3J0OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3NvY2tldC9IVFRQU2VydmVyU29ja2V0LmNw
cCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCmluZGV4IDc5
YjdjYTRiMmQxMzMyMmIwZGU4ODMyYTIzODIxODBlMzJhMDQyZjAuLjcwYWE0NGYwYmU4NDM4Zjgx
YTQxMDIwZWMyMDk2MjcwNTU4NDBiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29j
a2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hU
VFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5k
bGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNvY2tldEVuZHBvaW50JiwgQ29ubmVjdGlv
bklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6UmVzcG9uc2UgcmVzcG9uc2UgewogICAg
ICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIsCi0g
ICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJbnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAg
ICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IEludmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAg
ICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2
ZmY4YWYyMDZhNDJjOWEzNGNhOTIwZmIyMjczZDg2MTc2MWU3Zi4uNTdkYmEwM2UxZTNkZGU1MmI3
Zjk4YjU0MDBmODk5N2QyN2E2OWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUv
Q29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29k
ZXIubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVy
VG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogICAgIC8v
ICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAg
ICBpZiAoIXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVyZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBj
b3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQg
c3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVm
ZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgIC8vICJJZiBh
bnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAo
IXZhbGlkYXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6
ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4i
Ci0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigi
VmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgw
MSw3ICs4MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShj
b25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAgIC8vICJJZiBhbnkgb2Yg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlk
YXRlQ29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBkZXN0aW5hdGlvbiwgY29weVNpemUpKSB7
CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5kIHN0b3AuIgotICAg
ICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1
cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0KaW5kZXggZGY1MjM4YTM1ZGFiNTA4MDQ4YTQwNjI1ZjMxOWIyYjM3N2ZkNTkzMS4uMDAx
MTg1OGZmOGVhNGY4MmM1NzU5NWNiZGZkZjgwM2U0MWNhYTAxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yU1NMUHJvdG9jb2wo
U1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBrVExTUHJvdG9jb2wxMzoKICAgICAgICAg
cmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sQWxsOgotICAgICAgICBy
ZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxsIl9zOwogICAgIGNhc2Uga1NTTFByb3Rv
Y29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtub3duIjsKKyAgICAgICAgcmV0dXJuICJV
bmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29sTWF4U3VwcG9ydGVkOgogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCmluZGV4
IDA2Y2NlYzYyMWEwNWE3YzMwOWI4OWUyMTA0MjRkZTdkYWYzMDcxMzYuLjA5ZGJlOTk2NjE0NDg0
MWUyZmZiM2E4YWM5MTVkZGYxYTcxYzE1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAKQEAgLTI2OCw3
ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlcXVlc3Qu
aHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIHJlcXVlc3QgbWV0aG9k
IHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJlY3Rpb24g
b3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoIXJlcXVlc3Qu
dXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IHNob3VsZFJlZGlyZWN0QXNHRVQocmVx
dWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhv
ZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCJfcyk7CiAg
ICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxwdHIpOwogICAgICAgICAgICAgcmVx
dWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAK
aW5kZXggNjZlNDg5NTU0OWEzYWVjOGQxZGY5OTRkMjVmZGNkYTRlZDJkN2U2Ni4uZTY3ZjdlZDI5
YmM1MmVhYzkyNmZlYTc1NmU3YTU4YWY1Y2M2MWE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAt
OTI5LDkgKzkyOSw5IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6Y29udGludWVIVFRQUmVk
aXJlY3Rpb24oKQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhSZWRpcmVjdHMgPSAyMDsK
ICAgICBpZiAobV9jdXJyZW50UmVxdWVzdC5yZWRpcmVjdENvdW50KCkgPiBtYXhSZWRpcmVjdHMp
IHsKICNpZiBVU0UoU09VUDIpCi0gICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcjo6dHJhbnNw
b3J0RXJyb3IobV9jdXJyZW50UmVxdWVzdC51cmwoKSwgU09VUF9TVEFUVVNfVE9PX01BTllfUkVE
SVJFQ1RTLCAiVG9vIG1hbnkgcmVkaXJlY3RzIikpOworICAgICAgICBkaWRGYWlsKFJlc291cmNl
RXJyb3I6OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJlcXVlc3QudXJsKCksIFNPVVBfU1RBVFVT
X1RPT19NQU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJlZGlyZWN0cyJfcykpOwogI2Vsc2UKLSAg
ICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lP
Tl9FUlJPUiksIFNPVVBfU0VTU0lPTl9FUlJPUl9UT09fTUFOWV9SRURJUkVDVFMsIG1fY3VycmVu
dFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoIlRvbyBtYW55IHJlZGlyZWN0cyIpKSk7
CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmlu
ZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIFNPVVBfU0VTU0lPTl9FUlJPUl9UT09fTUFOWV9SRURJ
UkVDVFMsIG1fY3VycmVudFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoIlRvbyBtYW55
IHJlZGlyZWN0cyIpKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTk1OSw3
ICs5NTksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0
aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0
cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8gQ2hhbmdlIG5ld1JlcXVlc3QgbWV0aG9k
IHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5nIGEgcHJldmlvdXMgcmVkaXJlY3Rpb24g
b3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNvLgogICAgICAgICBpZiAoc291cF9tZXNz
YWdlX2dldF9tZXRob2QobV9zb3VwTWVzc2FnZS5nZXQoKSkgPT0gU09VUF9NRVRIT0RfR0VUIHx8
ICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCBzaG91bGRSZWRpcmVj
dEFzR0VUKG1fc291cE1lc3NhZ2UuZ2V0KCksIGlzQ3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgICAg
ICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOworICAgICAgICAgICAgcmVxdWVzdC5zZXRI
VFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQQm9keShudWxs
cHRyKTsKICAgICAgICAgICAgIHJlcXVlc3QuY2xlYXJIVFRQQ29udGVudFR5cGUoKTsKICAgICAg
ICAgfQpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFk
Q2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jUmVzdWx0KgogICAgICAg
ICBpZiAodGFzay0+bV9zb3VwTWVzc2FnZSkKICAgICAgICAgICAgIHRhc2stPmRpZEZhaWwoUmVz
b3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcih0YXNrLT5tX2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBl
cnJvci5nZXQoKSkpOwogICAgICAgICBlbHNlIGlmICh0YXNrLT5tX2ZpbGUpCi0gICAgICAgICAg
ICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRv
bWFpbiksIGVycm9yLT5jb2RlLCB0YXNrLT5tX2ZpcnN0UmVxdWVzdC51cmwoKSwgU3RyaW5nOjpm
cm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKKyAgICAgICAgICAgIHRhc2stPmRpZEZhaWwoUmVz
b3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBl
cnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgo
ZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSBlbHNlIGlmIChieXRlc1JlYWQgPiAwKQpAQCAtMTEy
Nyw3ICsxMTI3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBh
cnQoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRTdHJlYW0KICAgICBBU1NFUlQoIW1faW5w
dXRTdHJlYW0pOwogICAgIG1faW5wdXRTdHJlYW0gPSBXVEZNb3ZlKGlucHV0U3RyZWFtKTsKICAg
ICBhdXRvKiBoZWFkZXJzID0gc291cF9tdWx0aXBhcnRfaW5wdXRfc3RyZWFtX2dldF9oZWFkZXJz
KG1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCkpOwotICAgIFN0cmluZyBjb250ZW50VHlwZSA9
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIkNvbnRlbnQtVHlwZSIpOwor
ICAgIFN0cmluZyBjb250ZW50VHlwZSB7IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVh
ZGVycywgIkNvbnRlbnQtVHlwZSIpIH07CiAgICAgbV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9u
c2UobV9maXJzdFJlcXVlc3QudXJsKCksIGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29u
dGVudFR5cGUpLAogICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19nZXRfY29udGVudF9sZW5n
dGgoaGVhZGVycyksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSkpOwog
ICAgIG1fcmVzcG9uc2UudXBkYXRlRnJvbVNvdXBNZXNzYWdlSGVhZGVycyhoZWFkZXJzKTsKQEAg
LTEzNzYsNyArMTM3Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6ZG93bmxvYWQoKQog
ICAgIGVsc2UKICAgICAgICAgb3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfZmlsZV9jcmVhdGUo
bV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCBudWxs
cHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAoIW91dHB1dFN0cmVhbSkgewotICAgICAg
ICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIGVy
cm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0
aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4NCw3ICsxMzg0LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAgbV9kb3dubG9hZEludGVybWVkaWF0ZUZp
bGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChpbnRlcm1lZGlhdGVQYXRoLmdldCgp
KSk7CiAgICAgb3V0cHV0U3RyZWFtID0gYWRvcHRHUmVmKGdfZmlsZV9yZXBsYWNlKG1fZG93bmxv
YWRJbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRyLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05P
TkUsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmICghb3V0cHV0U3RyZWFtKSB7
Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNw
b25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2Fk
RGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNz
YWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZG93bmxvYWRPdXRwdXRTdHJl
YW0gPSBhZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsK
QEAgLTE0MTIsNyArMTQxMiw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6d3JpdGVEb3du
bG9hZENhbGxiYWNrKEdPdXRwdXRTdHJlYW0qIG91dHB1dFN0cmVhbSwgR0FzCiAgICAgZ3NpemUg
Ynl0ZXNXcml0dGVuOwogICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hbGxfZmluaXNoKG91dHB1
dFN0cmVhbSwgcmVzdWx0LCAmYnl0ZXNXcml0dGVuLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgIGlm
IChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRp
b25FcnJvcih0YXNrLT5tX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICB0YXNr
LT5kaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKHRhc2stPm1fcmVzcG9u
c2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAgICAg
ICB0YXNrLT5kaWRXcml0ZURvd25sb2FkKGJ5dGVzV3JpdHRlbik7CiB9CkBAIC0xNDQ0LDcgKzE0
NDQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmRpZEZpbmlzaERvd25sb2FkKCkKICAg
ICBBU1NFUlQobV9kb3dubG9hZEludGVybWVkaWF0ZUZpbGUpOwogICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9tb3ZlKG1fZG93bmxvYWRJbnRlcm1lZGlh
dGVGaWxlLmdldCgpLCBtX2Rvd25sb2FkRGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ09Q
WV9PVkVSV1JJVEUsIG1fY2FuY2VsbGFibGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsICZlcnJv
ci5vdXRQdHIoKSkpIHsKLSAgICAgICAgZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRp
b25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBkaWRGYWlsRG93
bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVU
RjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2ODgs
MTAgKzE2ODgsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkaWRHZXRGaWxlSW5mbyhH
RmlsZUluZm8qIGluZm8pCiB7CiAgICAgbV9yZXNwb25zZS5zZXRVUkwobV9maXJzdFJlcXVlc3Qu
dXJsKCkpOwogICAgIGlmIChnX2ZpbGVfaW5mb19nZXRfZmlsZV90eXBlKGluZm8pID09IEdfRklM
RV9UWVBFX0RJUkVDVE9SWSkgewotICAgICAgICBtX3Jlc3BvbnNlLnNldE1pbWVUeXBlKCJ0ZXh0
L2h0bWwiKTsKKyAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZSgidGV4dC9odG1sIl9zKTsK
ICAgICAgICAgbV9yZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoLTEpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGNvbnN0IGdjaGFyKiBjb250ZW50VHlwZSA9IGdfZmlsZV9pbmZvX2dl
dF9jb250ZW50X3R5cGUoaW5mbyk7CisgICAgICAgIFN0cmluZyBjb250ZW50VHlwZSB7IGdfZmls
ZV9pbmZvX2dldF9jb250ZW50X3R5cGUoaW5mbykgfTsKICAgICAgICAgbV9yZXNwb25zZS5zZXRN
aW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKSk7CiAgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRp
YVR5cGUoY29udGVudFR5cGUpKTsKICAgICAgICAgaWYgKG1fcmVzcG9uc2UubWltZVR5cGUoKS5p
c0VtcHR5KCkpCkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OnJlYWRGaWxlQ2FsbGJhY2soR0ZpbGUqIGZpbGUsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBOZQog
ICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVh
bT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19JTlBVVF9TVFJFQU0oZ19maWxlX3JlYWRfZmlu
aXNoKGZpbGUsIHJlc3VsdCwgJmVycm9yLm91dFB0cigpKSkpOwogICAgIGlmIChlcnJvcikKLSAg
ICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9y
LT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmlu
Zzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgIHRhc2stPmRpZEZhaWwoUmVz
b3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBl
cnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgo
ZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRSZWFkRmlsZShX
VEZNb3ZlKGlucHV0U3RyZWFtKSk7CiB9CkBAIC0xNzQzLDcgKzE3NDMsNyBAQCB2b2lkIE5ldHdv
cmtEYXRhVGFza1NvdXA6OmVudW1lcmF0ZUZpbGVDaGlsZHJlbkNhbGxiYWNrKEdGaWxlKiBmaWxl
LCBHQXN5bmNSZXN1bAogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBHUmVm
UHRyPEdGaWxlRW51bWVyYXRvcj4gZW51bWVyYXRvciA9IGFkb3B0R1JlZihnX2ZpbGVfZW51bWVy
YXRlX2NoaWxkcmVuX2ZpbmlzaChmaWxlLCByZXN1bHQsICZlcnJvci5vdXRQdHIoKSkpOwogICAg
IGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVhcmtf
dG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVl
c3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CisgICAgICAgIHRh
c2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJv
ci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNr
LT5kaWRSZWFkRmlsZSh3ZWJraXREaXJlY3RvcnlJbnB1dFN0cmVhbU5ldyhXVEZNb3ZlKGVudW1l
cmF0b3IpLCB0YXNrLT5tX2ZpcnN0UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRU
YXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0
VGFza1NvdXAuY3BwCmluZGV4IDRiY2U4ODg0OGM2NzMyNjBhYTVjNjdiNjk0NGI3MTUyYjVkMTVk
OWIuLjk3ZjA5ODU0Y2Y1ZTNlMjhmZTAyZWJjZjkyMjFiMzVkYjJlMDlhYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL1dlYlNvY2tldFRhc2tTb3Vw
LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2ViU29ja2V0VGFzazo6ZGlkQ29ubmVjdChH
UmVmUHRyPFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCiAgICAgZ19zaWdu
YWxfY29ubmVjdF9zd2FwcGVkKG1fY29ubmVjdGlvbi5nZXQoKSwgImVycm9yIiwgcmVpbnRlcnBy
ZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZFJlY2VpdmVFcnJvckNhbGxiYWNrKSwgdGhpcyk7CiAgICAg
Z19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29ubmVjdGlvbi5nZXQoKSwgImNsb3NlZCIsIHJl
aW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPihkaWRDbG9zZUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAg
ICBtX2NoYW5uZWwuZGlkQ29ubmVjdChzb3VwX3dlYnNvY2tldF9jb25uZWN0aW9uX2dldF9wcm90
b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpLCBhY2NlcHRlZEV4dGVuc2lvbnMoKSk7CisgICAgbV9j
aGFubmVsLmRpZENvbm5lY3QoU3RyaW5nIHsgc291cF93ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRf
cHJvdG9jb2wobV9jb25uZWN0aW9uLmdldCgpKSB9LCBhY2NlcHRlZEV4dGVuc2lvbnMoKSk7CiAK
ICAgICBtX2NoYW5uZWwuZGlkUmVjZWl2ZUhhbmRzaGFrZVJlc3BvbnNlKG1faGFuZHNoYWtlTWVz
c2FnZS5nZXQoKSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9kYXRhKG1f
aGFuZHNoYWtlTWVzc2FnZS5nZXQoKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIuaAppbmRleCBhOWRkYTMwMGZkODZm
YmE2OGY3MWZmZjVmZTU4YjZiZDAyMjZkNjMyLi4zYTg4ZmMyNmFkMDQ5MDIwOTVlNmUzMzA1ZTk0
ZTM2YzFmMzllMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUgKzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFy
eTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1ib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVD
b21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworYm9vbCBtZXRob2RTaWdu
YXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBOU1N0cmluZyAqKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0K
aW5kZXggYTliZWM1ODczZWQ0YWM0ZWFkNGZjMmU0MzU0OTZhNWE5NDJkNGUwNC4uMTU3M2RmMmI3
MmM2MDg3NjI4ZTk3ZDRjM2RkY2VmOTQyZDhjZDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KQEAgLTU0LDI1ICs1
NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gY3JlYXRlRW5jb2RlZE9iamVj
dChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
Ym9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShjb25zdCBTdHJpbmcmIHdpcmUsIGNv
bnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKE5T
U3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7Ci0gICAgaWYgKGxvY2FsID09IHdpcmUp
CisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGxvY2FsLmxlbmd0aCgpICE9IHdpcmUu
bGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAhPSB3aXJlLmxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIg
bG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNoYXIgd2lyZVR5cGUgPSB3aXJlW2ldOwot
Ci0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5cGUpIHsKLSAgICAgICAgICAgIC8vIGBi
b29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJjaGFuZ2VhYmxlLgotICAgICAgICAgICAg
aWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0cmNocigiQmMiLCB3aXJlVHlwZSkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0byBtYXBDaGFyYWN0ZXIgPSBbXSh1bmlj
aGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBgYm9vbGAgYW5kIGBzaWduZWQgY2hhcmAg
YXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0dXJuIGMgPT0gJ0InID8gJ2MnIDogYzsK
KyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0gbG9jYWwubGVuZ3RoOworICAgIGZvciAo
TlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmIChtYXBDaGFy
YWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0pICE9IG1hcENoYXJhY3Rlcihbd2lyZSBj
aGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTk3MCw5ICs5NjcsOCBAQCBzdGF0aWMg
TlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdLUmVtb3RlT2JqZWN0RGVjb2RlciAqZGVj
b2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAiSW52b2NhdGlv
biBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAgIFN0cmluZyByZW1vdGVNZXRob2RTaWdu
YXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9k
U2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2lnbmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4
U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShy
ZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9kU2lnbmF0dXJlKSkKKyAgICBOU1N0cmlu
ZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2NhdGlvbiBtZXRob2RTaWduYXR1cmVdLl90
eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25hdHVyZSkpCiAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNlcHRpb24gZm9ybWF0OkAi
TG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJlcyBhcmUgbm90IGNvbXBhdGlibGUgZm9y
IG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9nZXROYW1lKHNlbGVjdG9yKSA6ICIobm8g
c2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJsb2NrKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0K
aW5kZXggYWEzMTk0OWMwYzU0NGVlOTZiMWE0ZmRhMDEzMGQ1ZjFiNDYxZDA2Yi4uNTk2OTdlMjYy
ZDk5M2Y1Mjk4YmQzOGUxZmMzZGUzZDE2OTk4Y2MwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5tbQpAQCAt
MTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3RlT2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9i
amVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3RlT2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0
YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBz
ZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQorc3RhdGljIE5TU3RyaW5nICpyZXBseUJs
b2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwgU0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2Vy
IGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQsIG5vbi1pbmhlcml0ZWQgbWV0aG9kOgog
ICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGluZyA9IF9wcm90b2NvbF9nZXRNZXRob2RU
eXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0cnVlLCB0cnVlKTsKQEAgLTE5NywxMiAr
MTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQcm90b2NvbCAqcHJv
dG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBiCiAKICAgICBBU1NFUlQobWV0aG9kVHlw
ZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVFbmNvZGluZykKLSAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIE5TTWV0aG9kU2lnbmF0dXJlICp0YXJn
ZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNU
eXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFTU0VSVCh0YXJnZXRNZXRob2RTaWduYXR1
cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0dXJlKQotICAgICAgICByZXR1cm4geyB9
OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1
cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudEluZGV4OmJsb2NrSW5kZXhdLl90eXBlU3Ry
aW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25z
dCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFN0cmluZyB3aXJlQmxvY2tT
aWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczpyZXBs
eUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCldLl90eXBlU3RyaW5nOwotICAgICAg
ICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9IHJlcGx5QmxvY2tTaWduYXR1cmUoW2lu
dGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2VsZWN0b3IsIGkpOworICAgICAgICBOU1N0
cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdp
dGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpXS5fdHlw
ZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVjdGVkQmxvY2tTaWduYXR1cmUgPSByZXBs
eUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9jb2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9y
LCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZS5pc051bGwoKSkgewor
ICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1cmUpIHsKICAgICAgICAgICAgIE5TTG9n
KEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlkYXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVy
ZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJlIik7CiAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh3aXJlQmxvY2tTaWdu
YXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7Ci0gICAgICAgICAgICBOU0xvZyhAIl9p
bnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVz
ICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRhKCksIGV4cGVjdGVkQmxvY2tT
aWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRo
b2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9jayBzaWduYXR1cmU6ICVAICE9ICVAIiwg
d2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2NrU2lnbmF0dXJlKTsKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJl
bW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgfTsKIAog
ICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVja2VyPiBjaGVja2VyID0gUmVwbHlCbG9j
a0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJRCk7Ci0gICAgICAgIGlkIHJlcGx5Qmxv
Y2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25h
dHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCByZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVw
bHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uKSB7CisgICAgICAgIGlkIHJl
cGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxv
Y2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZhY2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5
LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24gKmludm9jYXRpb24pIHsKICAgICAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1JlbW90ZU9iamVjdEVuY29kZXIgYWxsb2Nd
IGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDppbnZvY2F0aW9uIGZv
cktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Z2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCAxNDQ4ZGY5ZTlkZWFjYmU0YTY5NDFkNmQx
YWNhZTE2OTY1YjJkMzc2Li5mZjIyMWNhNDlhM2M2MjhkMGRiZjZiMDkyZGIyN2IwNDhhYTViMzFj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1
ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgd2Via2l0X3VyaV9yZXF1ZXN0X3NldF91
cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29uc3QgY2hhciogdXJpKQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNUKHJlcXVlc3QpKTsKICAgICBnX3JldHVy
bl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsgdXJpIH07CisgICAgVVJMIHVybCB7IFN0
cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSByZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJl
cXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsv
V2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3NDQ1ZGY2NGNjNWQzYjRiYjYxMGVjMWYz
YzA2NWYwLi4zZjlmZTY1NzM2M2I5YzI4NWNkNGJiMDExZmE3NjQ4NThkMGIyYWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBA
IFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0
cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpCiAKIFJlc291cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5k
RXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogewotICAgIHJldHVybiBSZXNvdXJjZUVycm9y
KEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6
OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VSTCwgXygiUHJpbnRlciBub3QgZm91bmQiKSk7Cisg
ICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0UHJpbnRFcnJvckRvbWFp
bigpLCBBUEk6OkVycm9yOjpQcmludDo6UHJpbnRlck5vdEZvdW5kLCBmYWlsaW5nVVJMLCBTdHJp
bmc6OmZyb21VVEY4KF8oIlByaW50ZXIgbm90IGZvdW5kIikpKTsKIH0KIAogUmVzb3VyY2VFcnJv
ciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiB7Ci0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0UHJpbnRFcnJvckRvbWFpbigp
LCBBUEk6OkVycm9yOjpQcmludDo6SW52YWxpZFBhZ2VSYW5nZSwgZmFpbGluZ1VSTCwgXygiSW52
YWxpZCBwYWdlIHJhbmdlIikpOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6
OndlYktpdFByaW50RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OkludmFsaWRQYWdl
UmFuZ2UsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVURjgoXygiSW52YWxpZCBwYWdlIHJhbmdl
IikpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
aW5kZXggOGNiYmVkYzNiMjk0YmQ3ZTI1NzIzOWJiY2I1ODMzMzQ3ZDc4NmU2Mi4uNzAwMjZmZDI4
NjQzMmE5ZjM4NTRhNDRhMzcwMmE5NjliMjIyMDk1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEF1dG9tYXRpb25TZXNzaW9uLmNw
cApAQCAtMzc4LDcgKzM3OCw3IEBAIFN0cmluZyB3ZWJraXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJy
b3dzZXJOYW1lKFdlYktpdEF1dG9tYXRpb25TZXNzaW9uKiBzZXNzaW9uKQogICAgIGlmIChzZXNz
aW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pCiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZyb21V
VEY4KHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9uYW1lKHNlc3Npb24tPnByaXYtPmFwcGxp
Y2F0aW9uSW5mbykpOwogCi0gICAgcmV0dXJuIGdfZ2V0X3ByZ25hbWUoKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChnX2dldF9wcmduYW1lKCkpOwogfQogCiBTdHJpbmcgd2Via2l0QXV0
b21hdGlvblNlc3Npb25HZXRCcm93c2VyVmVyc2lvbihXZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiog
c2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0Q3JlZGVudGlhbC5jcHAKaW5kZXggZjgyNmVlMTg5YTU0OTNlOWMyNGQ4NDViYjVlNWJlNTNk
OWM3Zjg2OS4uMGRhYTVjOWJkNWE3N2QyNGVlMjA4NjU1MmQxOTZmZWFlMzJjYzFiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlh
bC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRDcmVkZW50aWFsKiB3ZWJraXRfY3JlZGVu
dGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25zdCBnY2hhciogcGluLCBXZQogICAgICAg
ICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFMX1BFUlNJU1RFTkNFX0ZPUl9TRVNTSU9O
OwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNy
ZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGluKSwgdG9XZWJDb3JlQ3JlZGVudGlhbFBl
cnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJldHVybiB3ZWJraXRDcmVkZW50aWFsQ3Jl
YXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJpbmcoKSwgU3RyaW5nOjpmcm9tVVRGOChw
aW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVuY2UocGVyc2lzdGVuY2UpKSk7CiB9CiAK
IC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwCmluZGV4IDkyNjJhODRkZWNlMjViZjBi
ZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcuLjNmZmZjOGZiOWUyN2I2NmJiMjYwYzkwZjQxMWZkYjQ3
Y2EzMjE4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKQEAgLTEzOSwxMSArMTM5
LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dl
YlJlc291cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRpZmllci0+dmFsdWUoKSk7CiAjaWYgUExB
VEZPUk0oR1RLKQogICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAi
RGlkR2V0U25hcHNob3QiKSkgewotICAgICAgICAgICAgQVBJOjpVSW50NjQqIGNhbGxiYWNrSUQg
PSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIikpOwor
ICAgICAgICAgICAgQVBJOjpVSW50NjQqIGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJ
bnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIl9zKSk7CiAgICAgICAgICAgICBpZiAoIWNh
bGxiYWNrSUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBXZWJJbWFn
ZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJJbWFnZSo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCIp
KTsKKyAgICAgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFdlYkltYWdlKj4o
bWVzc2FnZS5nZXQoIlNuYXBzaG90Il9zKSk7CiAgICAgICAgICAgICB3ZWJLaXRXZWJWaWV3RGlk
UmVjZWl2ZVNuYXBzaG90KHdlYlZpZXcsIGNhbGxiYWNrSUQtPnZhbHVlKCksIGltYWdlKTsKICNl
bmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA5ZmM0ZDMxOTkwMzYwMzlk
NDhhZTdiYjJhMzJhMDljZmY1ODMwNjY2Li43NTMyZmY1YmVkYmJkNDgzNGVlN2MxMTFjZmVkYjlh
N2E4NGM2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0
UHJvdG9jb2xIYW5kbGVyOjpXZWJLaXRQcm90b2NvbEhhbmRsZXIoV2ViS2l0V2ViQ29udGV4dCog
Y29udGV4dCkKIAogdm9pZCBXZWJLaXRQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2Vi
S2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBVUkwgcmVxdWVzdFVSTCA9IFVS
TCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CisgICAg
VVJMIHJlcXVlc3RVUkwgPSBVUkwoU3RyaW5nIHsgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9n
ZXRfdXJpKHJlcXVlc3QpIH0pOwogICAgIGlmIChyZXF1ZXN0VVJMLmhvc3QoKSA9PSAiZ3B1Iikg
ewogICAgICAgICBoYW5kbGVHUFUocmVxdWVzdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcAppbmRl
eCAwM2M1YTBiMDNkODgzZjJiMjAxODk1YzJiNTM0NGY5ZjJjM2FiNTRmLi45YjdiNWEwNzQyMmE3
MTc4YjZlNDlkNzFjZmMyOWI2ZDY4YzQ2NWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3MuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0U2V0dGluZ3NQcml2YXRlIHsK
ICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQ
cmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iLCAiV2ViS2l0Mi4iKSkKKyAg
ICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2Vi
S2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewogICAgICAgICBkZWZhdWx0Rm9udEZhbWls
eSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1pbHkoKS51dGY4KCk7CiAgICAgICAgIG1v
bm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+Zml4ZWRGb250RmFtaWx5KCkudXRmOCgp
OwpAQCAtMzA5MCw3ICszMDkwLDcgQEAgdm9pZCB3ZWJraXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdl
bnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25zdCBjaGFyKiB1c2VyQWcKICAgICAgICAg
dXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOCh1c2VyQWdlbnQpOwogICAgICAgICBn
X3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSh1c2Vy
QWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAgICAgdXNlckFnZW50U3RyaW5nID0gV2Vi
Q29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAgICAgICB1c2VyQWdlbnRTdHJpbmcgPSBX
ZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0cmluZygpKTsKIAogICAgIENTdHJpbmcg
bmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0ZjgoKTsKICAgICBpZiAobmV3VXNlckFn
ZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKaW5kZXggYzkxYzRk
OGU4ZjQ0M2IyODY3OTZlMjc3ZTI0N2QyYWJlOGJjOGJkNC4uMGMzZTJiN2VhOGNlMjA5NTY4N2Rj
MzllY2U4YzQ3NTc3YTA4ZjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5jcHAKQEAgLTIyMiwxNiAr
MjIyLDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNjaGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2so
R0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5jCiAKICAgICBXZWJLaXRVUklTY2hlbWVS
ZXNwb25zZSogcmVzcCA9IHByaXYtPnJlc3BvbnNlLmdldCgpOwogICAgIGlmICghcHJpdi0+Ynl0
ZXNSZWFkKSB7Ci0gICAgICAgIENTdHJpbmcgY29udGVudFR5cGUgPSB3ZWJLaXRVUklTY2hlbWVS
ZXNwb25zZUdldENvbnRlbnRUeXBlKHJlc3ApOwotICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKHByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwoKSwgZXh0cmFjdE1JTUVUeXBlRnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZS5kYXRhKCkpLCB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldFN0
cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7Ci0gICAgICAgIHJlc3BvbnNlLnNldFRl
eHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlLmRh
dGEoKSkpOworICAgICAgICBTdHJpbmcgY29udGVudFR5cGUgeyB3ZWJLaXRVUklTY2hlbWVSZXNw
b25zZUdldENvbnRlbnRUeXBlKHJlc3ApLmRhdGEoKSB9OworICAgICAgICBSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKHByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwoKSwgZXh0cmFjdE1JTUVUeXBl
RnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksIHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3Ry
ZWFtTGVuZ3RoKHJlc3ApLCBlbXB0eVN0cmluZygpKTsKKyAgICAgICAgcmVzcG9uc2Uuc2V0VGV4
dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsK
ICAgICAgICAgY29uc3QgQ1N0cmluZyYgc3RhdHVzTWVzc2FnZSA9IHdlYktpdFVSSVNjaGVtZVJl
c3BvbnNlR2V0U3RhdHVzTWVzc2FnZShyZXNwKTsKICAgICAgICAgaWYgKHN0YXR1c01lc3NhZ2Uu
aXNOdWxsKCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7
CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siX3MpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUod2ViS2l0
VVJJU2NoZW1lUmVzcG9uc2VHZXRTdGF0dXNDb2RlKHJlc3ApKTsKLSAgICAgICAgICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNUZXh0KHN0YXR1c01lc3NhZ2UuZGF0YSgpKTsKKyAgICAgICAgICAg
IHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KFN0cmluZyB7IHN0YXR1c01lc3NhZ2UuZGF0YSgp
IH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKE1JTUVUeXBlUmVnaXN0cnk6Om1p
bWVUeXBlRm9yUGF0aChyZXNwb25zZS51cmwoKS5wYXRoKCkudG9TdHJpbmcoKSkpOwpAQCAtMzEx
LDYgKzMxMSw2IEBAIHZvaWQgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9maW5pc2hfZXJyb3Io
V2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwgR0VyCiAKICAgICBXZWJLaXRVUklTY2hl
bWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3QtPnByaXY7CiAgICAgcHJpdi0+cmVzcG9u
c2UgPSBudWxscHRyOwotICAgIFJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3Rv
X3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2
LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2Up
KTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19z
dHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgdG9XZWJDb3JlRXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2
LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2Up
KTsKICAgICBwcml2LT50YXNrLT5kaWRDb21wbGV0ZShyZXNvdXJjZUVycm9yKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvRHJhZ1NvdXJjZUd0azQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKaW5k
ZXggMDlmZWIxNGJlMDE2MjVkZmRhZTAzYjUyMmE4YTEyZjExZGZjYWQwYi4uMmE3Y2JmOWY0MWY5
ZjFjODE5YmVhZjIyY2FkN2EwOWVkMWEzZDIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9p
ZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRhJiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9u
U2V0PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc0N1c3Rv
bURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRh
dGEtPmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7Ci0gICAgICAgIHByb3ZpZGVycy5hcHBl
bmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAgICAgICBwcm92aWRlcnMuYXBwZW5kKGdk
a19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMoUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0
a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgpKSk7CiAgICAgfQogCiAgICAgYXV0byog
c3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2UoZ3RrX3dpZGdldF9nZXRfbmF0aXZlKG1f
d2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9E
cm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BU
YXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQw
MzI5Li4xZjUyMmRlOTZiYWQzYmEwMjU5MGNlM2VmZDEwYTEyODZjYjcyNDVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcApAQCAt
NTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdldCogd2ViVmlldykK
ICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKGxpc3QuZ2V0KCksIERyb3BUYXJn
ZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdk
a19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NBUEVfVVJMIiksIDAsIERyb3BUYXJn
ZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgp
LCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiYXBwbGljYXRpb24vdm5kLndlYmtpdGd0
ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKLSAgICBndGtf
dGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5n
KFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCAwLCBEcm9wVGFyZ2V0VHlwZTo6Q3Vz
dG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVy
bl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkuY2hhcmFjdGVy
cygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQo
bV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVmYXVsdHM+KDApLCBudWxscHRyLCAwLAog
ICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtf
QUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsKICAgICBndGtfZHJhZ19kZXN0X3NldF90
YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAppbmRleCBhYmJhY2EyOWM3NDEx
MWRjYzA5MzU3Mzk0OTNiOTNjNzQ0NTI1MGQ4Li43NDc5MTQyYjlmMTU4YmMzMmZjYTRkODFmYmI1
Zjk2ZjUyZWJhM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAtNDksNyArNDksNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFy
Z2V0KEd0a1dpZGdldCogd2ViVmlldykKICAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJf
YWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgInRleHQvdXJpLWxpc3QiKTsKICAgICBnZGtf
Y29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgIl9O
RVRTQ0FQRV9VUkwiKTsKICAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVf
dHlwZShmb3JtYXRzQnVpbGRlciwgImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0
ZSIpOwotICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVpbGRlcl9hZGRfbWltZV90eXBlKGZvcm1h
dHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpKTsKKyAgICBnZGtfY29u
dGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgUGFzdGVi
b2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpOwogICAgIGF1dG8qIHRhcmdl
dCA9IGd0a19kcm9wX3RhcmdldF9hc3luY19uZXcoZ2RrX2NvbnRlbnRfZm9ybWF0c19idWlsZGVy
X2ZyZWVfdG9fZm9ybWF0cyhmb3JtYXRzQnVpbGRlciksCiAgICAgICAgIHN0YXRpY19jYXN0PEdk
a0RyYWdBY3Rpb24+KEdES19BQ1RJT05fQ09QWSB8IEdES19BQ1RJT05fTU9WRSB8IEdES19BQ1RJ
T05fTElOSykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QodGFyZ2V0LCAiYWNjZXB0IiwgR19DQUxM
QkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2RrRHJvcCogZ2RrRHJvcCwgZ3BvaW50ZXIg
dXNlckRhdGEpIC0+IGdib29sZWFuIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyLmNwcAppbmRleCA2N2I5ZmVkZTZhMzcxMjI3OGMyY2Q1NzQ3NzEyMjYyNWU1MDBj
NmIyLi4yYTA2NmI4NWNjNDUxYmNkZWViYWQ2ZWM0NzIxZTRhMGZkOWVhOGUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFJlbW90ZUluc3BlY3RvclBy
b3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6flJlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlcigpCiAgICAgICAgIGdfb2JqZWN0X3dlYWtfdW5yZWYoR19PQkpFQ1Qod2ViVmlldyks
IHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHdlYlZpZXdEZXN0cm95ZWQpLCB0aGlzKTsK
IAogICAgIGZvciAoYXV0byogdXNlckNvbnRlbnRNYW5hZ2VyIDogbV91c2VyQ29udGVudE1hbmFn
ZXJzKSB7Ci0gICAgICAgIHdlYmtpdFVzZXJDb250ZW50TWFuYWdlckdldFVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlciktPnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxl
ckZvck5hbWUoImluc3BlY3RvciIsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOworICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5yZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJG
b3JOYW1lKCJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxk
KCkpOwogICAgICAgICBnX29iamVjdF93ZWFrX3VucmVmKEdfT0JKRUNUKHVzZXJDb250ZW50TWFu
YWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHVzZXJDb250ZW50TWFuYWdlckRl
c3Ryb3llZCksIHRoaXMpOwogICAgIH0KIH0KQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVJ
bnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZChSZW1v
dGVJbnNwZWN0b3IKIAogdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRs
ZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBVUkwgcmVx
dWVzdFVSTCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1
ZXN0KSk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoU3RyaW5nIHsgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpIH0pOwogICAgIGlmICghcmVxdWVzdFVSTC5wb3J0
KCkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVy
YWwoV0VCS0lUX1BPTElDWV9FUlJPUiwgV0VCS0lUX1BPTElDWV9FUlJPUl9DQU5OT1RfU0hPV19V
UkksICJDYW5ub3Qgc2hvdyBpbnNwZWN0b3IgVVJMOiBubyBwb3J0IHByb3ZpZGVkIikpOwogICAg
ICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2ZpbmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJv
ci5nZXQoKSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2Nv
bEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWUKICAg
ICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29u
dGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8gdXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0
ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2VyQ29udGVudE1hbmFnZXIpOwogICAgIGlm
ICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdFbnRyeSkgewotICAgICAgICBhdXRvIGhh
bmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0
TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50V29ybGQ6OnBh
Z2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIGF1dG8gaGFuZGxlciA9IFdlYlNjcmlwdE1lc3Nh
Z2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3JpcHRNZXNzYWdlQ2xpZW50PigqdGhpcyks
ICJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwog
ICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFu
ZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dlYWtfcmVmKEdfT0JKRUNUKHVzZXJDb250
ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHVzZXJDb250ZW50TWFu
YWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJl
bW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dGFyZ2V0TGlzdENoYW5nZWQoUmVtb3RlSW5z
cGVjdG9yQ2xpZW50JiBjbAogICAgICAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2xvYWRpbmco
d2ViVmlldykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBVUkwgd2ViVmlld1VS
TCA9IFVSTCh7IH0sIHdlYmtpdF93ZWJfdmlld19nZXRfdXJpKHdlYlZpZXcpKTsKKyAgICAgICAg
VVJMIHdlYlZpZXdVUkwgPSBVUkwoU3RyaW5nIHsgd2Via2l0X3dlYl92aWV3X2dldF91cmkod2Vi
VmlldykgfSk7CiAgICAgICAgIGF1dG8gY2xpZW50Rm9yV2ViVmlldyA9IG1faW5zcGVjdG9yQ2xp
ZW50cy5nZXQod2ViVmlld1VSTC5ob3N0QW5kUG9ydCgpKTsKICAgICAgICAgaWYgKCFjbGllbnRG
b3JXZWJWaWV3KSB7CiAgICAgICAgICAgICAvLyBUaGlzIHZpZXcgaXMgbm90IHNob3dpbmcgYSBp
bnNwZWN0b3IgdmlldyBhbnltb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRleCA5OTdiNmE1ZWZmZjNjNWVmYzFi
ZWU2MGRmMmFiYzVlMjUzMzU2MzcwLi41NDI5M2U3ZTRjOTIzZWFmYjI0NTljMjQzY2M5YTM5MTNl
OTcwZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsyMzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJW
aWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3QmFzZSogd2Via2l0V2ViVmlld0Jh
c2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKHRvcExldmVsV2lu
ZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7
CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUgPSB0cnVlOwotICAgIHByaXYtPnNsZWVw
RGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNyZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcg
aW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBEaXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7
CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0
cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5nIGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwg
UEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5KTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCmluZGV4IGEwMGZl
MzQ0ODVmOTMzMTQ4ODdhMzRmMTg1NGFlODhjNDM5MWQ5ZTkuLjIyZmMwYThkZmIwOGViMmFkYjQw
YjkwYzViMzE0MzZhZWUyOWNjMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS93cGUvV2ViS2l0Q29sb3IuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0
X2NvbG9yX3BhcnNlKFdlYktpdENvbG9yKiBjb2xvciwgY29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5n
KQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9yLCBGQUxTRSk7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoY29sb3JTdHJpbmcsIEZBTFNFKTsKIAotICAgIGF1dG8gd2ViQ29yZUNvbG9y
ID0gV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yV2l0aG91dENvbnRleHQoeyBjb2xvclN0
cmluZyB9KTsKKyAgICBhdXRvIHdlYkNvcmVDb2xvciA9IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VDb2xvcldpdGhvdXRDb250ZXh0KFN0cmluZyB7IGNvbG9yU3RyaW5nIH0pOwogICAgIGlmICgh
d2ViQ29yZUNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5n
Q29jb2EubW0KaW5kZXggNmIwNTEzNjYyMGVjZTI4NmNhOTI2MmNlN2E2M2MyMzhiNDI1NmVjNi4u
YmMxZTFjOWUzYzIzYWE1NThlYWUzMWExYzNkNGYxYjQ3N2QyODkwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJyb3dzaW5nV2FybmluZ0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2Nv
YS5tbQpAQCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3RyaW5nIG1hbHdhcmVEZXRhaWxzQmFzZShT
U0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJl
RGV0YWlsc0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAgIGlmIChbcmVzdWx0LnByb3ZpZGVyIGlz
RXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRdKQotICAgICAgICByZXR1cm4gImh0dHBz
Oi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90cGw9c2FmYXJpIjsKLSAgICByZXR1cm4g
Imh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsK
KyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NoZWNrLmh0bWw/dHBs
PXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3Npbmcv
ZGlhZ25vc3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlmCiB9CiAKQEAgLTYzLDggKzYzLDggQEAg
c3RhdGljIFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpy
ZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRBbkVycm9yQmFzZVVSTFN0cmluZzsKICNl
bHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNFcXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVy
VGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6Ly93d3cudXJsc2VjLnFxLmNvbS9jb21w
bGFpbi5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVybiAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNv
bS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJu
ICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBsYWluLmh0bWw/dHBsPXNhZmFyaSJfczsK
KyAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2FmZWJyb3dzaW5nL3JlcG9ydF9l
cnJvci8/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVtUHJldmlld0NvbnRyb2xsZXJDb2NvYS5t
bQppbmRleCA1ZTY2NzhmZTczZTU0NjkyOThhZGMxMjYxOTdkMWJjNDFmMTljMDc4Li41ZjVlMmQ0
NTJjNjQ0NjIyMzZmNjBiZTEzNTExMGZiMTNmNDdjMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3Q29udHJvbGxlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5c3RlbVByZXZpZXdDb250cm9sbGVyQ29j
b2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjpm
YWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbigpCiB7Ci0gICAgcGFn
ZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQobV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9h
cHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIpOworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2
aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmlld0luZm8sICJfYXBwbGVfYXJfcXVpY2ts
b29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
Ojp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhUYXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90
IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQsIHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5z
cGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
Z3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwCmluZGV4IDk0ZTg2NjAxNTQ5MTYy
NWNkM2MyZTBlZmM2YzNiYWMzMTNiMjcwMzUuLjI2NmE3NzMxYzc4NDllMmFhOTM0YzllYzQ0ZTE4
YjM4MDAwMmVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNw
cApAQCAtNTYsNyArNTYsNyBAQCBXZWJQYWdlUHJveHkqIFJlbW90ZVdlYkluc3BlY3RvclVJUHJv
eHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBBU1NFUlQo
IW1fd2ViVmlldyk7CiAKLSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNy
ZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJl
bmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldl
YktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2
ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRo
b3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRy
YXNFbmFibGVkKHRydWUpOwpAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyB2b2lkIHJlbW90ZUZp
bGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jl
c3VsCiAKICAgICBhdXRvKiBwYWdlID0gc3RhdGljX2Nhc3Q8V2ViUGFnZVByb3h5Kj4odXNlckRh
dGEpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChnX2ZpbGVfZ2V0X3BhdGgoZmlsZSkpOwot
ICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRTYXZlKHBh
dGguZ2V0KCkpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JV
STo6RGlkU2F2ZShTdHJpbmc6OmZyb21VVEY4KHBhdGguZ2V0KCkpKSk7CiB9CiAKIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBm
b3JjZVNhdmVEaWFsb2cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcAppbmRleCAyODIy
ZWU4N2VmNDUwMjVjYzk1YzAxOTY0ZTM5NWI0NmYzYjZiNGIwLi5iNzcxY2FkZTU0YzEwNTVkMmE1
ZGE5OTE2MmFiZmM4NmQxYTkxNDhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAK
QEAgLTE2Myw3ICsxNjMsNyBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclVJUHJveHk6OnBs
YXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBBU1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsK
ICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7CiAKLSAgICBhdXRvIHByZWZlcmVuY2VzID0g
V2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktpdDIuIik7
CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCks
ICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUp
CiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGlu
IGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZlcmVuY2Vz
LT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0
YXRpYyB2b2lkIGZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0KiBzb3VyY2VPYmpl
Y3QsIEdBc3luY1Jlc3VsdCogcmVzCiAKICAgICBhdXRvKiBwYWdlID0gc3RhdGljX2Nhc3Q8V2Vi
UGFnZVByb3h5Kj4odXNlckRhdGEpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChnX2ZpbGVf
Z2V0X3BhdGgoZmlsZSkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpEaWRTYXZlKHBhdGguZ2V0KCkpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RGlkU2F2ZShTdHJpbmc6OmZyb21VVEY4KHBhdGguZ2V0KCkpKSk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBm
b3JjZVNhdmVEaWFsb2cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3RvY29s
SGFuZGxlci5jcHAKaW5kZXggYTI2MzA4ODU3M2NmMjlhNzU2M2IyZGIwZGM2NWRjMDA4MjJkMjkw
NC4uYjY2NDM3MTNmNTc1Zjg4YTIwMDM4ZTQyMDE3NjIzOWJiODZhMTY2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQ
cm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0
VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1h
a2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50PihyZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAg
ICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3NhZ2UgbGlzdGVuZXIKLSAgICBhdXRvIGhhbmRsZXIg
PSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2Fn
ZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250
ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0gV2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6
OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VDbGllbnQ+KCp0aGlzKSwgImluc3BlY3Rv
ciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CiAgICAgcGFnZVBy
b3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJvbGxlcigpLmFkZFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAgIC8vIFNldHVwIGxvYWRlciBjbGllbnQg
dG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vUmVtb3RlV2ViSW5zcGVjdG9y
VUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3YjgwNDc3YmRjN2MyMzY0OTE1ZjllNzQ1YmI2NGVkZTlk
ZTRhNi4uYTFjNjhlNDIwZTFjNzU3NWFiYTVhYjBlZjgzNzFlYjcxZTU1YmI2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0
b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
d2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAg
TFJFU1VMVCBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpvbkNsb3NlKCkKIAogV2ViUGFnZVBy
b3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7Ci0gICAgUmVmUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIp
OworICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAgICAgcHJl
ZmVyZW5jZXMtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyh0cnVlKTsKIAogI2lmIEVO
QUJMRShERVZFTE9QRVJfTU9ERSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3BlY3RvclVJUHJveHlXaW4uY3BwCmluZGV4
IGY0MDBkNWU3MzcxOThjZDBkNDgyNjlkZTI1MDc3M2EzY2M0NjAxYWQuLjFhMTkxNTU1ZjllODEz
OTBmMWY2MGE2OTEyMGExNGMwZWNmOGY5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9XZWJJbnNwZWN0b3JVSVByb3h5V2lu
LmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yVUlQcm94
eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogewogICAgIEFTU0VSVChpbnNwZWN0ZWRQ
YWdlKCkpOwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUo
U3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIGF1dG8gcHJlZmVyZW5jZXMg
PSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQy
LiJfcyk7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RFKQogICAgIC8vIEFsbG93IGRldmVsb3Bl
cnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBpbiBkZWJ1ZyBidWlsZHMgd2l0aG91dCBj
aGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNlcy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVy
L2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcAppbmRleCA5ZDNmOThhMzQ5NDA0MDlm
OWNhOGE0MmFjOTQ0ZWE3NmViYjRmNjdiLi5lMmY5NzEzMjU1MjQzNzcwMjJiNDA1MTlmYjA3ZTg3
MzAzMDkzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9n
bGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAg
ZW51bSBjbGFzcyBCaW5kRmxhZ3MgewogCiBzdGF0aWMgdm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0
aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3MsIGNvbnN0IGNoYXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJp
bmRPcHRpb24gPSAiLS1yby1iaW5kIikKIHsKLSAgICBXVEY6OlN0cmluZyByZWFsUGF0aCA9IEZp
bGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgpOworICAgIFdURjo6U3RyaW5nIHJlYWxQYXRoID0gRmls
ZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5nOjpmcm9tVVRGOChwYXRoKSk7CiAgICAgaWYgKHBhdGgg
IT0gcmVhbFBhdGgpIHsKICAgICAgICAgQ1N0cmluZyBycGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsK
ICAgICAgICAgYXJncy5hcHBlbmRWZWN0b3IoVmVjdG9yPENTdHJpbmc+KHsgYmluZE9wdGlvbiwg
cnBhdGguZGF0YSgpLCBycGF0aC5kYXRhKCkgfSkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQ
dHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihHU3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVu
Y2hlciwgY29uc3QgUHJvY2VzCiAKICAgICAgICAgYWRkRXh0cmFQYXRocyhsYXVuY2hPcHRpb25z
LmV4dHJhU2FuZGJveFBhdGhzLCBzYW5kYm94QXJncyk7CiAKLSAgICAgICAgVmVjdG9yPFN0cmlu
Zz4gZXh0cmFQYXRocyA9IHsgImFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkiLCAibWVkaWFLZXlz
RGlyZWN0b3J5IiwgIndheWxhbmRTb2NrZXQiLCAid2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07
CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dHJhUGF0aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5Il9zLCAibWVkaWFLZXlzRGlyZWN0b3J5Il9zLCAid2F5bGFuZFNvY2tldCJfcywg
IndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Il9zIH07CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
cGF0aCA6IGV4dHJhUGF0aHMpIHsKICAgICAgICAgICAgIFN0cmluZyBleHRyYVBhdGggPSBsYXVu
Y2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRhLmdldChwYXRoKTsKICAgICAgICAgICAg
IGlmICghZXh0cmFQYXRoLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQ4NjY0NWRhYWQzMDViNDM4OTZjODhiMzNhYzhj
Li5mZDcxNGEzMDU5MTYyYWI2YzM2ZTAwMmVjOGJmNzE0MTliZmFjMGI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC01NSw3ICs1NSw3IEBAIFdlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbihJc1Bl
cnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpKTsKICNl
bmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJj
b20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKTsKKyAgICAgICAgc2V0UENN
TWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2Ui
X3MpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Z2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCmluZGV4IDBkMWY0MDBlNDQ0MTA4ODdlMjQ2N2Q0
MDkyNTM3OWYzODQzZGE2ODcuLmNmZTdhMGViM2JlYzAwOTc0NTQxNjc0YjVjNDE0ZTUxMjc0YjFj
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bv
b2xHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQ
b29sR0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZv
cm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MKIAog
ICAgIGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3JrZXJQcm9jZXNzKSB7CiAgICAgICAgIHBh
cmFtZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3Jl
YXRlX2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5h
bWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24od3BlX2xvYWRlcl9nZXRf
bG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpKTsKKyAgICAgICAgcGFyYW1ldGVy
cy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9s
aWJyYXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAtODksNyArODksNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tl
bmQtZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChBY2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdh
eWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAgICAgICAgICAgIHBhcmFtZXRlcnMuaG9z
dENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgp
OwotICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9p
bXBsZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLmlt
cGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJh
cnlfbmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBVU0UoRUdMKQogICAgICAgICBwYXJhbWV0
ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUgPSBXYXlsYW5kQ29tcG9zaXRvcjo6c2lu
Z2xldG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nl
c3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBhcHAgPSBnX2FwcGxpY2F0aW9uX2dldF9k
ZWZhdWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklE
ID0gZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJz
LmFwcGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0aW9uX25hbWUoKTsKKyAgICAgICAgcGFy
YW1ldGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsgZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGlj
YXRpb25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMuYXBwbGljYXRpb25OYW1lID0gU3RyaW5n
IHsgZ19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAKICAgICBwYXJhbWV0ZXJzLmluc3BlY3Rv
clNlcnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2Vy
dmVyQWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGli
L1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9X
ZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4ODRkYWRjYjFmYWE4ZjhiMWEzMWQ5NTU5
ODc4ZmVjNjM5NzQwLi44NjRkMGUzNmZiOGRhMjU2ZDUxMzJlZTM1NjMwNmM1MjhjNmU2NGU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdM
aWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5
R0xpYi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExhdW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5j
aGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25zKQogewotICAgIGxhdW5jaE9wdGlvbnMu
ZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNz
UG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIGxhdW5jaE9w
dGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJlbmFibGUtc2FuZGJveCJfcywgbV9w
cm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAog
ICAgIGlmIChtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5hYmxlZCgpKSB7CiAgICAgICAgIFdlYnNp
dGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5j
cHAKaW5kZXggMDdjMjE3YzdkNmE5ODIzMGY5YTQ0OWQyYTJlNzRhMjYxODU0MTNiMS4uNjI2OWNj
NGQyODk5YjQyMGQwYWRjNjM5MmI0MjhlNTU0NzU2MjhhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKQEAgLTMwLDkg
KzMwLDkgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKICNpZiBQTEFURk9S
TShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiCisjZGVmaW5lIEJBU0Vf
RElSRUNUT1JZICJ3ZWJraXRndGsiX3MKICNlbGlmIFBMQVRGT1JNKFdQRSkKLSNkZWZpbmUgQkFT
RV9ESVJFQ1RPUlkgIndwZSIKKyNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSJfcwogI2VuZGlm
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0Ns
aXBib2FyZEd0azMuY3BwCmluZGV4IGU4YjlhMDQ3ZThmYmY2M2E3OWI2YTE4OGFmOTcyOWFmZTdm
NTgyZjAuLmUzZTBjNDRkNWZiM2FiZmU2YjIzN2E5OGYxMGIwYTBkYmY3NmJmNTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGszLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsx
NzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSYmIHNl
bGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuY2FuU21hcnRSZXBsYWNlKCkpCiAg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpLCAwLCBD
bGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsKICAgICBpZiAoc2VsZWN0aW9uRGF0YS5o
YXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdldFR5cGU6OkN1c3RvbSk7CisgICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJz
KCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b20pOwogCiAgICAgaW50IG51bWJlck9m
VGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFibGUgPSBndGtfdGFyZ2V0X3RhYmxlX25l
d19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9mVGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxl
Y3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0b206
CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRh
LmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3Nl
dChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3Rl
Ym9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1
Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0
YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFy
YWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0
YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4
YTJhM2QzLi40ZmQ5NjE2YzVmN2Y5NGI3OWM1NGMxNDM5NTUyODE0OThiNjMwOGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azQuY3BwCkBAIC0xODYsNyAr
MTg2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBz
ZWxlY3Rpb25EYXRhKQogCiAgICAgaWYgKHNlbGVjdGlvbkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7
CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0
YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAgICAgICAgcHJvdmlkZXJzLmFwcGVuZChnZGtfY29udGVu
dF9wcm92aWRlcl9uZXdfZm9yX2J5dGVzKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpn
dGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2Nv
bnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJDb3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0
YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMuZ2V0KCkpKTsKICAgICB9CiAKICAgICBp
ZiAocHJvdmlkZXJzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAKaW5kZXggMTU5OTcxYWNjNmYwZDg4Yjgy
YTZhMWQ1YWNiZjI2ZDlkNmNiN2E2NC4uY2JmMWEyOWZkYTMzYjljOGRjNjBhZTc3YzEyY2U2MThl
YjYyOGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRp
bmdUcmFuc2xhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvS2V5Qmlu
ZGluZ1RyYW5zbGF0b3IuY3BwCkBAIC0xOTgsMjMgKzE5OCwyMyBAQCBLZXlCaW5kaW5nVHJhbnNs
YXRvcjo6fktleUJpbmRpbmdUcmFuc2xhdG9yKCkKIHN0cnVjdCBLZXlDb21iaW5hdGlvbkVudHJ5
IHsKICAgICB1bnNpZ25lZCBnZGtLZXlDb2RlOwogICAgIHVuc2lnbmVkIHN0YXRlOwotICAgIGNv
bnN0IGNoYXIqIG5hbWU7CisgICAgQVNDSUlMaXRlcmFsIG5hbWU7CiB9OwogCiBzdGF0aWMgY29u
c3QgS2V5Q29tYmluYXRpb25FbnRyeSBjdXN0b21LZXlCaW5kaW5nc1tdID0gewotICAgIHsgR0RL
X0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlRvZ2ds
ZUJvbGQiICAgICAgfSwKLSAgICB7IEdES19LRVlfaSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNL
LCAgICAgICAgICAgICAgICAgICJUb2dnbGVJdGFsaWMiICAgIH0sCi0gICAgeyBHREtfS0VZX0Vz
Y2FwZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiAgICAg
ICAgICB9LAotICAgIHsgR0RLX0tFWV9ncmVhdGVyLCAgIEdES19DT05UUk9MX01BU0ssICAgICAg
ICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwKLSAgICB7IEdES19LRVlfVGFiLCAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnNlcnRUYWIiICAgICAgIH0s
Ci0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAg
ICAgICAiSW5zZXJ0QmFja3RhYiIgICB9LAotICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIDAsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc2VydE5ld0xpbmUiICAgfSwKLSAgICB7
IEdES19LRVlfS1BfRW50ZXIsICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJ
bnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZX0lTT19FbnRlciwgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSIgICB9LAotICAgIHsgR0RLX0tF
WV9SZXR1cm4sICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkluc2VydExp
bmVCcmVhayIgfSwKLSAgICB7IEdES19LRVlfS1BfRW50ZXIsICBHREtfU0hJRlRfTUFTSywgICAg
ICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsiIH0sCi0gICAgeyBHREtfS0VZX0lTT19F
bnRlciwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFr
IiB9LAotICAgIHsgR0RLX0tFWV9WLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJ
RlRfTUFTSywgIlBhc3RlQXNQbGFpblRleHQiIH0sCisgICAgeyBHREtfS0VZX2IsICAgICAgICAg
R0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVG9nZ2xlQm9sZCJfcyAgICAgIH0s
CisgICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAg
ICAgICAiVG9nZ2xlSXRhbGljIl9zICAgIH0sCisgICAgeyBHREtfS0VZX0VzY2FwZSwgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIl9zICAgICAgICAgIH0sCisg
ICAgeyBHREtfS0VZX2dyZWF0ZXIsICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiQ2FuY2VsIl9zICAgICAgICAgIH0sCisgICAgeyBHREtfS0VZX1RhYiwgICAgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0VGFiIl9zICAgICAgIH0sCisgICAg
eyBHREtfS0VZX1RhYiwgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAi
SW5zZXJ0QmFja3RhYiJfcyAgIH0sCisgICAgeyBHREtfS0VZX1JldHVybiwgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSJfcyAgIH0sCisgICAgeyBH
REtfS0VZX0tQX0VudGVyLCAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0TmV3TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZX0lTT19FbnRlciwgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSJfcyAgIH0sCisgICAgeyBHREtf
S0VZX1JldHVybiwgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0
TGluZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0VudGVyLCAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZ
X0lTT19FbnRlciwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TGlu
ZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX1YsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8
IEdES19TSElGVF9NQVNLLCAiUGFzdGVBc1BsYWluVGV4dCJfcyB9LAogfTsKIAogc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IGhhbmRsZUtleUJpbmRpbmdzRm9yTWFwKGNvbnN0IEtleUNvbWJpbmF0aW9u
RW50cnkqIG1hcCwgdW5zaWduZWQgbWFwU2l6ZSwgdW5zaWduZWQga2V5dmFsLCBHZGtNb2RpZmll
clR5cGUgc3RhdGUpCkBAIC0yNjcsNzEgKzI2Nyw3MSBAQCBWZWN0b3I8U3RyaW5nPiBLZXlCaW5k
aW5nVHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXlFdmVudChHZGtFdmVudEtleSogZXZlbnQpCiAj
ZW5kaWYKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0aW9uRW50cnkgcHJlZGVmaW5lZEtleUJp
bmRpbmdzW10gPSB7Ci0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0xlZnQs
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiIH0sCi0g
ICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAg
ICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9L
UF9MZWZ0LCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJhY2t3YXJkIiB9LAot
ICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAg
ICAgICAgIk1vdmVXb3JkQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAg
R0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1v
ZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfQ09OVFJP
TF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0
aW8iIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgMCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiB9LAotICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAg
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVSaWdodCIgfSwKLSAgICB7
IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAg
ICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfUmln
aHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEZvcndhcmQiIH0sCi0gICAgeyBH
REtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAi
TW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9SaWdodCwgICAgICAgIEdES19DT05U
Uk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICBHREtfQ09OVFJPTF9NQVNLIHwg
R0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0g
ICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTW92ZVVwIiB9LAotICAgIHsgR0RLX0tFWV9LUF9VcCwgICAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIgfSwKLSAgICB7IEdES19LRVlfVXAsICAg
ICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVXBBbmRNb2Rp
ZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1VwLCAgICAgICAgR0RLX1NISUZUX01B
U0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAg
IHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVEb3duIiB9LAotICAgIHsgR0RLX0tFWV9LUF9Eb3duLCAgICAgIDAsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiB9LAotICAgIHsgR0RLX0tFWV9Eb3du
LCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duQW5k
TW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9Eb3duLCAgICAgIEdES19TSElG
VF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9
LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9t
ZSwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5p
bmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0hvbWUsICAgICAgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0
aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tFWV9L
UF9Ib21lLCAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnQiIH0sCi0gICAgeyBHREtfS0VZX0hvbWUsICAgICAgICAgR0RLX0NP
TlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5k
TW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9FbmQsICAgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZSIgfSwKLSAgICB7IEdE
S19LRVlfS1BfRW5kLCAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0
aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAg
ICB7IEdES19LRVlfRW5kLCAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAg
ICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQi
IH0sCi0gICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAg
ICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01B
U0ssICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RL
X0tFWV9QYWdlX1VwLCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1v
dmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX0tQX1BhZ2VfVXAsICAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9V
cCwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIEdES19TSElG
VF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24i
IH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiB9LAotICAgIHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24s
IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIgfSwKLSAg
ICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAg
ICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQ
X1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9EZWxldGUsICAgICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUZvcndhcmQiIH0sCi0gICAg
eyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRGVsZXRlRm9yd2FyZCIgfSwKLSAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgfSwKLSAgICB7
IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAg
ICJEZWxldGVXb3JkRm9yd2FyZCIgfSwKLSAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgfSwKLSAgICB7
IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAg
ICJEZWxldGVCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxldGVXb3JkQmFja3dhcmQiIH0sCi0gICAg
eyBHREtfS0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiU2VsZWN0QWxsIiB9LAotICAgIHsgR0RLX0tFWV9hLCAgICAgICAgICAgIEdES19DT05UUk9M
X01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlVuc2VsZWN0IiB9LAotICAgIHsgR0RLX0tFWV9zbGFz
aCwgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIlNlbGVjdEFsbCIg
fSwKLSAgICB7IEdES19LRVlfYmFja3NsYXNoLCAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAg
ICAgICAgICAgICJVbnNlbGVjdCIgfSwKLSAgICB7IEdES19LRVlfeCwgICAgICAgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJDdXQiIH0sCi0gICAgeyBHREtfS0VZX2Ms
ICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiQ29weSIgfSwK
LSAgICB7IEdES19LRVlfdiwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJQYXN0ZSIgfSwKLSAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJDdXQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0luc2Vy
dCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiQ29weSIgfSwKLSAgICB7
IEdES19LRVlfS1BfSW5zZXJ0LCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAg
ICJQYXN0ZSIgfQorICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQs
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiX3MgfSwK
KyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAg
ICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19L
RVlfS1BfTGVmdCwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAg
ICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlV29yZEJhY2t3YXJk
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9MZWZ0
LCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVXb3JkQmFj
a3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfTGVmdCwgICAg
ICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEJhY2t3YXJkQW5k
TW9kaWZ5U2VsZWN0aW8iX3MgfSwKKyAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiX3MgfSwKKyAgICB7IEdES19L
RVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
UmlnaHQiX3MgfSwKKyAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfU0hJRlRfTUFTSywg
ICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAor
ICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAg
ICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdv
cmRGb3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAgeyBHREtf
S0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92
ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1Jp
Z2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRGb3J3
YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVVwIl9zIH0sCisgICAgeyBH
REtfS0VZX0tQX1VwLCAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TW92ZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgR0RLX1NISUZUX01BU0ss
ICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAg
eyBHREtfS0VZX0tQX1VwLCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0Rvd24sICAg
ICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZURvd24iX3MgfSwK
KyAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlRG93biJfcyB9LAorICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9u
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0Rvd24sICAgICAgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdE
S19LRVlfSG9tZSwgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJN
b3ZlVG9CZWdpbm5pbmdPZkxpbmUiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUi
X3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAg
ICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iX3Mg
fSwKKyAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwK
KyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50Il9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVn
aW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIEdES19D
T05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRB
bmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBHREtf
Q09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
QW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgMCwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIl9zIH0sCisg
ICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiTW92ZVRvRW5kT2ZMaW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0
aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RLX0tF
WV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVU
b0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgR0RLX0NPTlRST0xf
TUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVj
dGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9QYWdlX1VwLCAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFn
ZV9VcCwgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZVVwIl9z
IH0sCisgICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAg
ICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RL
X0tFWV9LUF9QYWdlX1VwLCAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfUGFnZV9Eb3du
LCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iX3Mg
fSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZURvd24iX3MgfSwKKyAgICB7IEdES19LRVlfUGFnZV9Eb3duLCAg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2Rp
ZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24i
X3MgfSwKKyAgICB7IEdES19LRVlfRGVsZXRlLCAgICAgICAwLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0RlbGV0
ZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCJf
cyB9LAorICAgIHsgR0RLX0tFWV9EZWxldGUsICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAg
ICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0Rl
bGV0ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEZv
cndhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9C
YWNrU3BhY2UsICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkRlbGV0ZUJh
Y2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0JhY2tTcGFjZSwgICAgR0RLX0NPTlRST0xfTUFT
SywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEJhY2t3YXJkIl9zIH0sCisgICAgeyBHREtf
S0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2Vs
ZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiVW5zZWxlY3QiX3MgfSwKKyAgICB7IEdES19LRVlfc2xhc2gs
ICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJTZWxlY3RBbGwiX3Mg
fSwKKyAgICB7IEdES19LRVlfYmFja3NsYXNoLCAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAg
ICAgICAgICAgICJVbnNlbGVjdCJfcyB9LAorICAgIHsgR0RLX0tFWV94LCAgICAgICAgICAgIEdE
S19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkN1dCJfcyB9LAorICAgIHsgR0RLX0tF
WV9jLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHki
X3MgfSwKKyAgICB7IEdES19LRVlfdiwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAg
ICAgICAgICAgICAgICJQYXN0ZSJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9EZWxldGUsICAgIEdE
S19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIkN1dCJfcyB9LAorICAgIHsgR0RLX0tF
WV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNvcHki
X3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBHREtfU0hJRlRfTUFTSywgICAgICAg
ICAgICAgICAgICAgICJQYXN0ZSJfcyB9CiB9OwogCiBWZWN0b3I8U3RyaW5nPiBLZXlCaW5kaW5n
VHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXl2YWwodW5zaWduZWQga2V5dmFsLCB1bnNpZ25lZCBt
b2RpZmllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQ
b29sV2luLmNwcAppbmRleCBhODZiMzRkZGFhOGY3MTVlMWM5NDdiODk0M2NlZmQ5MjEzOWM0MTMw
Li5lMzE4ODlmMzQ0YzRhNjNkZjVlNWU2NTllMjQyMWY0YzkxMDQ4Y2M0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAgLTQ5LDcg
KzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29tbWFuZHNQYXRoKCkKICAgICBpZiAoIUNG
VVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVybFJlZi5nZXQoKSwgZmFsc2UsIHJlaW50
ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BBVEgpKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aCk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIoU3RyaW5n
VmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4
IGU1YThjM2I2OWUxNzJhY2QwMWYyYTZhNmYyOGJjYWVjNTNjYzUxZGMuLjlkN2U3MWMyMjg5MWYy
MjMzNDY2Y2E2OTcxMjM5OWEyNzJjY2U5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVj
dCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQog
ICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7CiAKICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFn
ZSksICJpbnNwZWN0b3IiKTsKKyAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNw
ZWN0b3IiX3MpOwogI2VuZGlmCiAKICAgICAvLyBGSVhNRTogSW5pdGlhbGl6aW5nIHRoZSB0b29s
dGlwIHdpbmRvdyBoZXJlIG1hdGNoZXMgV2ViS2l0IHdpbiwgYnV0IHNlZW1zIGxpa2Ugc29tZXRo
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1
N2I4ZjAwNzczNjU1MGU1NmZhNWE0YWZmNGM2Ny4uNDRjYmY3M2M2YWQxNTVjZTI2MjllMDFhNDc0
OThjMjUyOGNlYzQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAt
NzMzLDEwICs3MzMsMTAgQEAgdm9pZCB3ZWJraXRXZWJQYWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2Vi
S2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlTmEKIHsKICNpZiBQTEFURk9S
TShHVEspCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IFN0cmluZygiR2V0U25hcHNob3QiKSkgewot
ICAgICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nhc3Q8U25h
cHNob3RPcHRpb25zPihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFw
c2hvdE9wdGlvbnMiKSktPnZhbHVlKCkpOwotICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
c3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdlLmdldCgiQ2FsbGJhY2tJRCIpKS0+dmFs
dWUoKTsKLSAgICAgICAgU25hcHNob3RSZWdpb24gcmVnaW9uID0gc3RhdGljX2Nhc3Q8U25hcHNo
b3RSZWdpb24+KHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obWVzc2FnZS5nZXQoIlNuYXBzaG90
UmVnaW9uIikpLT52YWx1ZSgpKTsKLSAgICAgICAgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQg
PSBzdGF0aWNfY2FzdDxBUEk6OkJvb2xlYW4qPihtZXNzYWdlLmdldCgiVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kIikpLT52YWx1ZSgpOworICAgICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RPcHRp
b25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2
NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdE9wdGlvbnMiX3MpKS0+dmFsdWUoKSk7CisgICAgICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2Uu
Z2V0KCJDYWxsYmFja0lEIl9zKSktPnZhbHVlKCk7CisgICAgICAgIFNuYXBzaG90UmVnaW9uIHJl
Z2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9uPihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2
NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiJfcykpLT52YWx1ZSgpKTsKKyAgICAgICAg
Ym9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQgPSBzdGF0aWNfY2FzdDxBUEk6OkJvb2xlYW4qPiht
ZXNzYWdlLmdldCgiVHJhbnNwYXJlbnRCYWNrZ3JvdW5kIl9zKSktPnZhbHVlKCk7CiAKICAgICAg
ICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdEltYWdlOwogICAgICAgICBXZWJQYWdlKiB3ZWJQ
YWdlID0gcGFnZS0+cHJpdi0+d2ViUGFnZTsKQEAgLTc2NSwxMCArNzY1LDEwIEBAIHZvaWQgd2Vi
a2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIH0KIAogICAgICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1h
cFR5cGUgbWVzc2FnZVJlcGx5OwotICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJQYWdlIiwgd2Vi
UGFnZSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIkNhbGxiYWNrSUQiLCBBUEk6OlVJbnQ2
NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKLSAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiU25hcHNo
b3QiLCBzbmFwc2hvdEltYWdlKTsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5q
ZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoIldlYlBhZ2UuRGlkR2V0U25hcHNob3QiLCBBUEk6
OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1lc3NhZ2VSZXBseSkpLnB0cigpKTsKKyAgICAg
ICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSJfcywgd2ViUGFnZSk7CisgICAgICAgIG1lc3NhZ2VS
ZXBseS5zZXQoIkNhbGxiYWNrSUQiX3MsIEFQSTo6VUludDY0OjpjcmVhdGUoY2FsbGJhY2tJRCkp
OworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJTbmFwc2hvdCJfcywgc25hcHNob3RJbWFnZSk7
CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPnBvc3RN
ZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90Il9zLCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0
ZShXVEZNb3ZlKG1lc3NhZ2VSZXBseSkpLnB0cigpKTsKICAgICB9IGVsc2UKICNlbmRpZgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00v
V2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCmluZGV4IGZlMGQ0MDE4ZTNmODA5YzVmMjdiZTMyZDQ1
YWZlZjFiZjkyMDFjODEuLmE5Y2RhYzljMDkxMTRlMmQxMzYyMjNhOWE3MjVlZmVhYzU3YWE4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktpdERPTURvY3VtZW50R3RrLmNw
cApAQCAtMTkwOSw5ICsxOTA5LDkgQEAgZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3Zp
c2liaWxpdHlfc3RhdGUoV2ViS2l0RE9NRG9jdW1lbnQqIHNlbGYpCiAgICAgV2ViQ29yZTo6RG9j
dW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CiAgICAgc3dpdGNoIChpdGVtLT52aXNp
YmlsaXR5U3RhdGUoKSkgewogICAgIGNhc2UgV2ViQ29yZTo6VmlzaWJpbGl0eVN0YXRlOjpIaWRk
ZW46Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKCJoaWRkZW4iKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoImhpZGRlbiJfcyk7CiAgICAgY2FzZSBXZWJD
b3JlOjpWaXNpYmlsaXR5U3RhdGU6OlZpc2libGU6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9V
VEY4U3RyaW5nKCJ2aXNpYmxlIik7CisgICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5n
KCJ2aXNpYmxlIl9zKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5jcHAKaW5kZXggNDUy
Y2YwY2M4YzdhNjY1MzA0NWY5YWUxMzVhMDU0ZWUwNzYzM2RhMy4uMzM4NGZhMjU4YzIwZjQ0NmYy
MTJkYWUyYzI0ZGM5ZDgxMjJiYWQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JDbGllbnRXUEUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC93cGUvV2ViRWRpdG9yQ2xpZW50V1BF
LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBpbnRlcnByZXRLZXlF
dmVudChjb25zdCBLZXlib2FyZEV2ZW50JiBldmVudCkKIAogc3RhdGljIHZvaWQgaGFuZGxlS2V5
UHJlc3MoRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50JiBldmVudCwgY29uc3QgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50KQogewotICAgIFN0cmluZyBjb21tYW5kTmFtZSA9
IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICBTdHJpbmcgY29tbWFuZE5hbWUgeyBpbnRl
cnByZXRLZXlFdmVudChldmVudCkgfTsKIAogICAgIGlmICghY29tbWFuZE5hbWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUo
KTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYg
ZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25zdCBQbGF0Zm9ybUtleQogCiBzdGF0aWMg
dm9pZCBoYW5kbGVLZXlEb3duKEZyYW1lJiBmcmFtZSwgS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNv
bnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpCiB7Ci0gICAgU3RyaW5nIGNvbW1hbmROYW1lID0g
aW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGludGVy
cHJldEtleUV2ZW50KGV2ZW50KSB9OwogICAgIGlmIChjb21tYW5kTmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGZjMjQyMDQxNjRjYTk5Yzc4MzlmNTg3MzkzMjM0Li5h
MmUxYzEzMTUwNTI3YTJlMDE2NTA3MTJiNDlkZTdlZTkxZTY5NTBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzg1Miw3ICszODUyLDcgQEAg
dm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAoZnJhbWUtPnNob3VsZEVuYWJsZUluQXBw
QnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGlu
IGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJvdW5kIGRvbWFpbiJfcywgMCwgMCwgRXhj
ZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21haW4gfSk7CiAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAg
IGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBu
b24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAi
SWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4i
X3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9HX0VSUk9SKExvYWRpbmcsICJydW5KYXZh
U2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmplY3Rpb24gZm9yIG5vbiBhcHAtYm91bmQg
ZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCmluZGV4IDliYWE3Mjg4
NGE4OTA1NmY1NzY0ODkyMmYwMmRjNzgyYjA4OTFhZWQuLjFjOTM2OWRjOGI4ZDgzM2QxYTE1YjA0
M2JiZDFkNjAzY2JjNzkxZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC0xMTQsMjIgKzExNCwyMiBAQCB2b2lk
IFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0
ZSYgcmVzdWx0KSBjb25zdAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBFZGl0b3ImIGVk
aXRvciA9IGZyYW1lLmVkaXRvcigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgpKSB7Ci0g
ICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0
LCAiYm9sZCIpID09IFRyaVN0YXRlOjpUcnVlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
bkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpID09IFRyaVN0YXRlOjpU
cnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRy
aWJ1dGVCb2xkOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJpU3RhdGU6OlRydWUpCisgICAgICAgIGlmIChl
ZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiX3Mp
ID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0
cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
bkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRl
cmxpbmUiKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25I
YXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJs
aW5lIl9zKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5
cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJsaW5lOwotICAgICAgICBpZiAoZWRpdG9y
LnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZl
Y3QsICJsaW5lLXRocm91Z2giKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAgICAgaWYgKGVkaXRv
ci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LCAibGluZS10aHJvdWdoIl9zKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBv
c3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlU3RyaWtlVGhyb3VnaDsK
ICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKLSAgICAgICAgaWYgKGVkaXRv
ci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSkK
KyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgImJvbGQiX3MpKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0
cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSkKKyAgICAgICAgaWYg
KGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRh
bGljIl9zKSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0g
QXR0cmlidXRlSXRhbGljczsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0
eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUi
KSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiX3MpKQogICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7
Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIikpCisgICAgICAgIGlm
IChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIl9zKSkKICAgICAgICAgICAgIHBvc3RMYXlv
dXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlU3RyaWtlVGhyb3VnaDsKICAgICB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3BwCmluZGV4IDJmMjFmMmJlZjNjOWJiZjYz
MTIzNTIwY2RmOWY4Nzk2NzE4NWNhMDEuLmMyZmJjYmM5MDY5YzYyNDcxNzc5YjdlYmNkMGU5ZGVm
NzhkZGQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0
ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3RrLmNwcApAQCAtODUsNyArODUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICAgICAgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZ3RrX3ByaW50X2pvYl9nZXRfc3VyZmFjZShtX3ByaW50
Sm9iLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpIHsKLSAg
ICAgICAgICAgIHByaW50RG9uZShwcmludEVycm9yKGZyYW1lVVJMKCksIGVycm9yLT5tZXNzYWdl
KSk7CisgICAgICAgICAgICBwcmludERvbmUocHJpbnRFcnJvcihmcmFtZVVSTCgpLCBTdHJpbmc6
OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBwcmlu
dEpvYkNvbXBsZXRlKEd0a1ByaW50Sm9iKiwgV2ViUHJpbnRPcGVyYXRpb25HdGtVbml4KiBwcmlu
dE9wZXJhdGlvbiwgY29uc3QgR0Vycm9yKiBlcnJvcikKICAgICB7Ci0gICAgICAgIHByaW50T3Bl
cmF0aW9uLT5wcmludERvbmUoZXJyb3IgPyBwcmludEVycm9yKHByaW50T3BlcmF0aW9uLT5mcmFt
ZVVSTCgpLCBlcnJvci0+bWVzc2FnZSkgOiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yKCkpOworICAg
ICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnREb25lKGVycm9yID8gcHJpbnRFcnJvcihwcmludE9w
ZXJhdGlvbi0+ZnJhbWVVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpIDog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpKTsKICAgICAgICAgcHJpbnRPcGVyYXRpb24tPm1fcHJp
bnRKb2IgPSAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA3MWMyOWE5MGMzNzRmZjAwZWYxMmRjMDlmZjQy
NWVjOTY0MjE0YzQ3Li4zNGZmMmQ0MDU4Nzc4OGQxOGFmYmYwOTY2ZmVhMzI4NWQ5M2ZiMWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlP
Uy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBXZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZSBjb21tYW4KICAgICAK
ICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNlIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
VHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxh
dGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIsCi0gICAgICAgICJ6IiwgIktleVoiX3MsCi0g
ICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2Fs
bFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
UGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6Il9zLAorICAgICAgICAieiJfcywgIktl
eVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2Rp
ZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3Jt
S2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSIsICJ5IiwKLSAgICAgICAg
InkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTkiLCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAieSJfcywgInkiX3MsCisg
ICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAgIlUrMDA1OSJfcywgODksIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgot
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAiS2V5QiJfcywKLSAgICAgICAgQCJVKzAw
NDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkp
OworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50
OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAgICAgICJiIl9zLCAiS2V5QiJfcywKKyAgICAg
ICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRp
bWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiLCAiaSIsCi0gICAgICAgICJpIiwg
IktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1v
ZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgImkiX3MsICJpIl9zLAorICAgICAg
ICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJVKzAwNDkiX3MsIDczLCBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAg
ICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURv
d24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJLZXlVIl9zLAotICAgICAgICBAIlUrMDA1NSIs
IDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7Cisg
ICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50KFBsYXRmb3JtRXZlbnQ6Oktl
eURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUiX3MsICJLZXlVIl9zLAorICAgICAgICAi
VSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6
bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAg
LTQzMjQsNyArNDMyNCw3IEBAIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25z
dCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBpZiAoZG9jdW1l
bnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1MxM0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9y
VXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJB
Z2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIik7CisgICAgICAgIHJldHVybiBz
dGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJfMV8zIl9zKTsKIAog
ICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAppbmRleCBiYjUxMmFlYzM0NTA2YWE1ODhhNzM2
YjZkY2Y2YjZmM2I2NjllMzQyLi43NjQ0M2E5NDI1NGFlNGZlOGU1OGY4MDdiYWE1MjE1NmMzNjdk
MTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2Vi
UGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dl
YlBhZ2VXaW4uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0
aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2FyZEV2ZW50JiBldmVudCkKICAgICBpZiAo
ZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlkb3duRXZlbnQgJiYgZXZlbnQudHlwZSgp
ICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChpbnRlcnByZXRLZXlF
dmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFu
ZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpIH0pOwogCiAgICAgaWYgKGtleUV2
ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bikgewogICAgICAgICAvLyBX
ZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiBhYm91dCBtb2RlIHRvIGRlY2lk
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5k
ZXggZTAxMDQ1NzQ3Zjc0YzgzMzE5ZDRhMzkxMDZjNDNhNmNlNTAyNWFiMi4uYjdmZTgwMDRlNDhm
ZjZlODk3Y2E5MjI2Y2Q4NWJiNjUwYTZmZDE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmlu
ZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAgICAg
aWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpIHsKICNpZiBQTEFURk9STShNQUMp
ICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgICAgICAvLyBUaGlzIGlzbid0IGdyZWF0
LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Ygd2VicHVzaGQgaW4gb3BlbiBzb3VyY2Ug
YnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVTaWduaW5nSWRlbnRpZmllciByZXR1cm5z
IHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4KLSAgICAgICAgbV9ob3N0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSI7CisgICAg
ICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9ICJjb20uYXBwbGUuV2ViS2l0LlRl
c3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBpZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4p
CiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0gYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4IDM5ZDg2MGMyOTVhN2MwOGYwYTdmOTY4
MzkzYTM4MzU1YjQwZjg0NDYuLmEyNjJiZmMxNDAyOWY0NzZkNDRhYTc5YjdmYTBhN2JmMjY4NDEy
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0g
KEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBsaW5r
LmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3Jl
YXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4dChkb2N1bWVudCkpOwotICAgIHJldHVy
biBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIsIGRvY3VtZW50LCBkb2N1bWVudC5yZW5k
ZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygpLT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2
YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVh
dG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3VtZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1
bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxscHRyIH0uZXZhbHVhdGUobWVkaWFRdWVy
eVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3
NmI2ZDEyYzRjNDU4MTM5ZjMwODI1OGQ5M2ZmMy4uMDk4ZjhlYzI5NjA2YzBjYzRhMzc5YjZjNjEx
ZDBkZjJjZDA5ZDU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKQEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxp
bmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3BlbGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3
LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3RyaW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0
QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJikKIHsK
LSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2
b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoU3RyaW5nVmlldywgVmVj
dG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGlu
dCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZhMTllNmQ5MWZjYjNiZmM4MWNjYTkxZWM3
ZTBlNTZjNDI4Li5iYzJhMzJlYTMzOTRhYTM4M2Q3ZTZkZmMyMjRlNmYwY2Y5YmI2YmEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0K
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJEYXRhU291cmNlLm1tCkBA
IC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZDoo
Qk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpX3NldE92ZXJyaWRl
VGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNvZGluZwogewotICAgIHRvUHJpdmF0ZShf
cHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhbZW5jb2RpbmcgVVRGOFN0cmlu
Z10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNvZGlu
ZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1YmExNzQ0YzQxZDk2MjgzMDcxOGQ5MTE5MGEx
ZDguLmYxNGZhMzk5NGY0YWZhYmJjZTViMDFiOTk0NTc1MmRhOTlhODExZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE4NzYsNyArMTg3Niw3IEBA
IC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE5TU3RyaW5nICopc3R5bGUg
ZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCku
c2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3
aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0Rm9udEZh
bGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwotICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0
aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJBcHBsZUNvbG9yRW1vamkiKTsKKyAgICBf
cHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0b2dyYXBoRm9udEZhbWlseSgiQXBwbGVD
b2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlw
dE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNl
dFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxl
QmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5YTExYzY5MGVmZDFkYzQyNjUwOWZlZGYzNGRjYTY3NC4u
YzI5MGRhZTM3OTQzOWVlZTMxMjhiZTNkMjM1NzYwYzdjNzAzMTA1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApAQCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vz
c2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQg
d2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmopOwogICAgIG1fb2JqZWN0LT5zZXRXcmFw
cGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQWNjZXNzaWJs
ZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6fkFjY2Vzc2libGVCYXNlKCkKIHsKICAg
ICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiQWNjZXNzaWJs
ZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9z
KTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2libGVCYXNlOjpjcmVhdGVJbnN0YW5jZShB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWcuY3BwCmluZGV4IDlhMWYwMTEy
MjFiYzIxNDAwYmVlODg3ZWQxMTE5YjM2OWZmZTYwMDMuLmE1YzA3ZWI5MTJmYmJmMTE3MTRiNmU5
ODY3NjliMjk2ZjczZjk3MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NG
RGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9D
RkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9u
YXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFn
Il9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0
eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRl
LmNwcAppbmRleCAxYTgwYzRkNmU4ZTIyMmNmMDU2YTk3YjcxOTY1MDRkOTY3YWUwZmMyLi4zMDJm
NjM3YWJjMDI0MTI3NGNiZTIwNTEwNjljMjg5NWU3ZjZlMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2FkRGVsZWdhdGUuY3BwCkBAIC00NSwxMyAr
NDUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiX3MpOwogfQogCiBE
ZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6fkRlZmF1bHREb3dubG9hZERlbGVnYXRlKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiRGVmYXVsdERv
d25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlIl9zKTsKICAgICBIYXNoU2V0PElXZWJEb3dubG9hZCo+OjppdGVyYXRv
ciBpID0gbV9kb3dubG9hZHMuYmVnaW4oKTsKICAgICBmb3IgKDtpICE9IG1fZG93bmxvYWRzLmVu
ZCgpOyArK2kpCiAgICAgICAgICgqaSktPlJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUuY3BwCmluZGV4IGU4ZTVmNWM0Y2MxMWEx
MjA4M2JiZTRiNTE4YjJjNDg2ZWQ1NjhjODkuLjFmYThjMzU0ZGZiYTExNzliZDczZTM0ZGVkMmE4
OWRiM2Q0YWU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdFBv
bGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEzIEBAIHR5cGVkZWYgZW51bSBXZWJFeHRy
YU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURl
bGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJE
ZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0UG9saWN5RGVsZWdhdGU6On5E
ZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1
bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURlbGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3RyZWFtLmNwcAppbmRleCAzNjBhZWRjZWFj
Y2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi45ZGE1OTYwNTY0YTViMjZiNjU3Y2Q2ZGFl
NDBmNjYzMGI2MWFkYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1v
cnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL01lbW9yeVN0cmVhbS5j
cHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJlYW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8
U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1fYnVmZmVyKFdURk1vdmUoYnVmZmVyKSkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiTWVtb3J5
U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJNZW1vcnlTdHJlYW0iX3MpOwog
fQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0oKQogewogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJNZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVhbSJfcyk7CiB9CiAKIENPTVB0cjxNZW1v
cnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5zdGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rp
b25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9w
ZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1ZjkxZjI5NmM0ZTRkODA1MjRmM2EyZTNjYjE2
NC4uZTk3YzQxMzI0NzE2OTdjOWNmMTljYzE5YTU2NDQ5OWUyOWEwMjVjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblByb3BlcnR5QmFnLmNwcApAQCAtNDUsMTMg
KzQ1LDEzIEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjpXZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUo
ZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
QWN0aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJBY3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFj
dGlvblByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFnIl9zKTsKIH0KIAogV2ViQWN0aW9uUHJv
cGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxIVE1MRm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVm
UHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcAppbmRleCA4ZjI3MTYyYmJhZjE4ZWUxYzExOGI5NTExZjUxYjQ3ZTQ0
ODU3NzRjLi5mMzEwMmU1MjY4N2U5YzJkNTViYjY2YTg3OGIwNGExY2Q2M2FlNjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtNTAs
MTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQog
ICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNo
ZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsKIH0KIAogV2ViQXBw
bGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNoZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAt
ODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVQYXRoKCkKIAogV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIFdlYkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3Jh
Z2UoKQogewotICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBwbGljYXRpb25DYWNoZVBhdGgoKSwgIkFw
cGxpY2F0aW9uQ2FjaGUiKS5sZWFrUmVmKCk7CisgICAgc3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNh
dGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNoZSJfcykubGVha1JlZigpOwogCiAgICAg
cmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCmlu
ZGV4IDgxNTc5OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1Y2QzY2RjZGIxZmYuLjE3ZGViYzQ4N2U1
NDJmY2UzYjcyZjZjMzE1NWM5MDk2ZTQwMjY5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAgV2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShS
ZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJjaGl2ZSkKICNlbmRpZgogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2
ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBXZWJBcmNoaXZlOjpRdWVyeUludGVyZmFj
ZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3BwCmluZGV4IDkwNGFj
MmQyODEwNDc4MmRiZTIzZTY5YzQ3YTBhNDFjZWFhZmFhNTIuLjExNmFhNDIwMTc2OGQ4MjU0NTk3
ZDZhNTExYzViOTgyMzUwN2Y2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
QmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6
OldlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0ZvcndhcmRMaXN0PiYmIGJhY2tGb3J3YXJk
TGlzdAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0
LmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJh
Y2tGb3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldl
YkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUo
bV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3YXJkTGlzdCIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Il9zKTsKIH0KIAogV2ViQmFja0Zv
cndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNr
Rm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2Fj
aGUuY3BwCmluZGV4IGRlODUwZTcxM2IwMzQ4OTBjNTU3MzYxNGIzMzY4MmRlMjg5NGFjOGMuLjhi
MTZiNDNkNDFmOWYzMzg0ZTgwYzI4YWE1YTI4MTJjMTVkZWIzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDYWNoZS5jcHAKQEAgLTQ3LDEzICs0NywxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIFdlYkNhY2hlOjpXZWJDYWNoZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hlOjp+V2ViQ2FjaGUoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJDYWNoZSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ2FjaGUiX3MpOwogfQogCiBXZWJDYWNo
ZSogV2ViQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCAzNTY5ODNjNTJiMzc0OGE0Y2RiY2E1YWQ5MWY5
NTM1MTJhODg5YmUwLi5mMTMxNmRlNDZjMjEzNWE2ZDI2ZmFiOWQxNDRkZWIzZjgxZjA4OTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3RhdGlzdGljcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN0YXRpc3RpY3MuY3BwCkBAIC00
OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBXZWJDb3JlU3RhdGlzdGlj
czo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwogfQogCiBXZWJDb3JlU3RhdGlzdGljczo6
fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3RpY3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9zKTsKIH0KIAogV2ViQ29yZVN0YXRpc3Rp
Y3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcg
QEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5
cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlw
ZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmluZywgaW50PiB0eXBlQ291bnRNYXA7CiAg
ICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmplY3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1
cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAgIHR5cGVDb3VudE1hcC5zZXQoY3VycmVu
dC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAgIHR5cGVDb3VudE1hcC5zZXQoU3RyaW5n
IHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVlKTsKIAogICAgIENPTVB0cjxJUHJvcGVy
dHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9wZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0
YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRzLmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRD
b3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNVTFQgV2ViQ29yZVN0YXRpc3RpY3M6Omph
dmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5CiAgICAg
SXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMtPmVuZCgpOwogICAgIEhhc2hNYXA8U3Ry
aW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3IgKEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09i
amVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAhPSBlbmQ7ICsrY3VycmVudCkKLSAgICAg
ICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXksIGN1cnJlbnQtPnZhbHVlKTsKKyAgICAg
ICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJyZW50LT5rZXkgfSwgY3VycmVudC0+dmFs
dWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+IHJlc3VsdHMoQWRvcHRDT00sIENPTVBy
b3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5cGVDb3VudE1hcCkpOwogICAgIHJlc3Vs
dHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBI
UkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNzKF9DT01fT3V0cHRyX29w
dF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2JhbE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFs
TWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0
cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxk
czsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVzZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0
ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuY29tbWl0dGVk
Vk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RNYWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlz
dEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEhlYXBTaXplIiwgaGVhcFNpemUp
OwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBm
aWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
ZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgi
SmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2Jh
bE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2Vy
dmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9j
U3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9j
Q29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0
TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVzKSk7CisgICAgZmllbGRzLmFkZCgiRmFz
dE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4o
ZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkph
dmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3Jp
cHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFj
a1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3Rh
dHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRKSVRTaXplIl9zLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVz
KSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3BlcnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9u
ZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+OjphZG9wdChmaWVsZHMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlhNmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1
N2VlZmMxLi5iOWY0MTA5MzU5YjM2ZDUxY2FjYTQzMzM4ZDkyOTFkMjVmY2Q4NjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCBib29sIFdlYkVkaXRvckNsaWVudDo6
ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1lbnQqIGUsIEtleWJvYXJkRXZlbnQqIGtl
KQogICAgICAgICBpZiAoZG9tRWxlbWVudCkgewogICAgICAgICAgICAgSURPTUhUTUxJbnB1dEVs
ZW1lbnQqIGRvbUlucHV0RWxlbWVudDsKICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoZG9tRWxl
bWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01IVE1MSW5wdXRFbGVtZW50LCAodm9pZCoqKSZk
b21JbnB1dEVsZW1lbnQpKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBjb21tYW5kID0gbV93
ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSk7CisgICAgICAgICAgICAgICAgU3RyaW5nIGNv
bW1hbmQgeyBtX3dlYlZpZXctPmludGVycHJldEtleUV2ZW50KGtlKSB9OwogICAgICAgICAgICAg
ICAgIC8vIFdlIGFsbG93IGVtcHR5IGNvbW1hbmRzIGhlcmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUg
YWN0dWFsbHkgZGVwZW5kcyBvbiB0aGlzIGJlaW5nIGNhbGxlZCBmb3IgYWxsIGtleSBwcmVzc2Vz
LgogICAgICAgICAgICAgICAgIC8vIFdlIG1heSB3YW50IHRvIHJldmlzaXQgdGhpcyBsYXRlciBi
ZWNhdXNlIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2UgdG8gc2VuZCBhbiBlbXB0eSBjb21t
YW5kLgogICAgICAgICAgICAgICAgIGZvcm1EZWxlZ2F0ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9t
SW5wdXRFbGVtZW50LCBCU3RyaW5nKGNvbW1hbmQpLCBraXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgp
KSwgJnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRh
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCmlu
ZGV4IDllMDMxZDllZmI3OWQ5NGE5ZDM1NjJiMDZkYmRlZjI3MWU1ZDhjNzMuLmY3OGMxYmQyYTg1
MmI3NGYxNmQ4MjAzNTdmYTYyNzlmMjE2Y2Y1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRhdGFTb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRh
dGFTb3VyY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBXZWJEYXRhU291cmNl
Q291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJj
ZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2U6On5XZWJEYXRhU291cmNlKCkKQEAgLTY2LDcgKzY2
LDcgQEAgV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3VyY2UoKQogICAgICAgICBtX2xvYWRlci0+
ZGV0YWNoRGF0YVNvdXJjZSgpOwogICAgIFdlYkRhdGFTb3VyY2VDb3VudC0tOwogICAgIGdDbGFz
c0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhU291cmNlIl9zKTsKIH0KIAog
V2ViRGF0YVNvdXJjZSogV2ViRGF0YVNvdXJjZTo6Y3JlYXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1h
bmFnZXIuY3BwCmluZGV4IDY3Njc3MjAzMTVjMzkzM2NkYzIyZTQyNTJlM2VhMzM4ZmY4OTI1NDYu
LjhmMzc2NTQxMjU2ZGM2YWVkMTA3ZTA1MTMxMzhmMGVmMzMxNDNlMmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTYwLDEzICsxNjAs
MTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRhYmFzZU1hbmFnZXI6OmNyZWF0ZUluc3Rh
bmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5h
Z2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEYXRhYmFzZU1hbmFnZXIiX3Mp
OwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEYXRhYmFz
ZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRhdGFiYXNlTWFu
YWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDkyZDBmYTcyY2Q2ZjQy
OGE1MmExYzEwOGE4OGU3ZTNhMTkxZDY3ZjMuLjI1NmEzNTg4MDdkN2VhMjU4MmM2NmI2MjhlZWMz
YzkxOTAxMjgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvY3Vt
ZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb2N1bWVudExv
YWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9jdW1lbnRMb2FkZXI6OldlYkRvY3VtZW50
TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3QKICAgICAs
IG1fZGV0YWNoZWREYXRhU291cmNlKDApCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xh
c3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiB9CiAKIFJlZjxXZWJEb2N1bWVudExv
YWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRhKQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8
V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRMb2FkZXI6On5XZWJEb2N1bWVudExvYWRl
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJE
b2N1bWVudExvYWRlciJfcyk7CiAgICAgaWYgKG1fZGF0YVNvdXJjZSkgewogICAgICAgICBBU1NF
UlQoIW1fZGV0YWNoZWREYXRhU291cmNlKTsKICAgICAgICAgbV9kYXRhU291cmNlLT5SZWxlYXNl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3dubG9hZC5jcHAKaW5kZXggYWY3OTUyYTdl
NzU2YWIxNmNlZWM2ZWIxZTRhZGQzZmFkYzJmZDczOS4uOTk0NjkwNDU1MWMwY2M2ZDFjZTFjYmU5
Mjg4Y2E3M2E4YmI2OGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkLmNw
cApAQCAtNTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkRvd25sb2Fk
OjpXZWJEb3dubG9hZCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkRvd25sb2FkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJE
b3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkOjp+V2ViRG93bmxvYWQoKQpAQCAtNjEsNyAr
NjEsNyBAQCBXZWJEb3dubG9hZDo6fldlYkRvd25sb2FkKCkKICAgICBMT0coRG93bmxvYWQsICJX
ZWJEb3dubG9hZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQgKCVwKSIsIHRoaXMpOwogICAgIGNhbmNl
bCgpOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRG93bmxvYWQi
X3MpOwogfQogCiBXZWJEb3dubG9hZCogV2ViRG93bmxvYWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKaW5kZXggMTgxMGE2
Njg1ODE4MTEwZTc3YzY5OWQ2MDBiZmM4YWI3ZDE0NmNmNC4uZmM2NGI5YmM5OTk3ZDg0MjBhYjVj
MTcwOWMzMTlmOTI1MmMxODc1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93
bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBAQCBIUkVTVUxUIFdlYkRvd25sb2FkOjpj
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5fb3B0XyBJV2ViVVJMQXV0aGVudGljYXRp
bwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9u
IGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3VyY2VFcnJvciBlcnJvcihTdHJpbmcoV2Vi
VVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJDYW5jZWxsZWRBdXRoZW50aWNhdGlvbiwg
VVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVycm9yKFN0cmluZyhXZWJVUkxFcnJvckRv
bWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1w
dHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9yPiB3ZWJFcnJvcihBZG9wdENPTSwgV2Vi
RXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAgICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdp
dGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4OWZhM2M5ZDY5OTVjZGM3YjliNzhjZTc1
MjdlNjY5MC4uNWIxYzVkZmM3ZTg3MWJiMGQ4OGVmMjdiZjZmNGM0YWZlNjQyNjkxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKQEAgLTUzLDEzICs1MywxMyBA
QCBXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgOiBt
X3dlYlZpZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViRHJvcFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BTb3VyY2U6On5XZWJEcm9wU291cmNlKCkK
IHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
RHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJj
ZSJfcyk7CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9wU291cmNlOjpRdWVyeUludGVyZmFjZShf
SW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50UHJvcGVydHlCYWcuY3BwCmluZGV4IDhh
ZmJhMGY2ZDUzYWZkNTU1ODQ1YzE5NTM2YzJhOWMxZWM1ZjM3ZDAuLmM2MWYxNzJkNDdmYjMxNzhi
OWUwNzRjMjc5ODNkYWVjMjFhMGU1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1l
bnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQm
IHJlc3VsdCkKICAgICA6IG1fcmVzdWx0KG1ha2VVbmlxdWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0
KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFbGVt
ZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVtZW50UHJvcGVydHlCYWc6On5XZWJFbGVt
ZW50UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJhZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQ
cm9wZXJ0eUJhZyogV2ViRWxlbWVudFByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5jZShjb25zdCBI
aXRUZXN0UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAKaW5k
ZXggMTlkZTM3MWJlYTFjMTE2ZmQ3NjZkNmEzOTRkYjRlYTgwZmJkYmZjMi4uNzE2MTIxOTIzM2Vi
YzEwYWMyODIzMjU2ZGZkZjM3MzZmZjk3ODEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVy
cm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVycm9yOjpXZWJFcnJvcihjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1c2VySW5mbykKICAgICAsIG1fZXJyb3Io
ZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9
CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJFcnJvciogV2ViRXJyb3I6OmNyZWF0ZUlu
c3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZv
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3BwCmluZGV4IDU5NDhiMGVjNWI4MGQyNzli
MjY0MzRmNDJmNDVjZmExN2JmN2ZiY2EuLjA3YmQ0NmZjOTk4ZTE4ZTM2NzgzMmM2MGFjZmE3NDZi
ZWI4ZTY2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsy
NDMsNyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewogICAgIFdlYkZyYW1lQ291bnQrKzsKICAg
ICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZyYW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6
On5XZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAgV2ViRnJhbWU6On5XZWJGcmFtZSgpCiAg
ICAgZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJGcmFtZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQogCiBXZWJGcmFtZSogV2ViRnJhbWU6OmNy
ZWF0ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0
YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVU
eQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyhtaW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1p
bWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAi
dGV4dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIl9zOwogCiAg
ICAgU3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNvZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0
ZXh0RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyArMTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJh
bWU6OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiBFX1VO
RVhQRUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0
QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJT
ZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAogICAgIHJl
dHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGlj
eUxpc3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDJiOTgyOGEyZTQ0Nzc3NDFjZDU0NzYyNzM5
MDc3Li45NDQ2OGJiNzNkMDY1MjY2MDBiNGU4ZTVhZGNkNmI5MGRmOTY4ZTFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcApAQCAt
MzksMTMgKzM5LDEzIEBAIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlz
dGVuZXIoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQogICAgIDogbV9mcmFtZShXVEZNb3ZlKGZyYW1l
KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6On5XZWJG
cmFtZVBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNl
KFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3
NDA2YzI1Y2YyMTg5MDlkNWJlMGExYTc1YzA5OS4uNjg5MmY3NzFhZGRkMWE5MzhlYTE0NDM0MDNj
OTdmMzQ5YjBiODNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJH
ZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKFJl
ZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9sb2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0
aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9u
UG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBn
Q2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRp
b25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViR2Vv
bG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9zaXRp
b24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5j
cHAKaW5kZXggOTI0YzQ4YjEzYzQxNjVmZmU4ZjA4OGM4N2QwNmRmNDljNjAzNDZiNS4uZmYxZmQ5
MGM0Mzc5MzAzZGUzNWMwNGUwNzgyMWUxOTAzNTRmYzExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKQEAgLTM2LDEzICszNiwx
MyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlvbj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlv
bjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRp
b25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRpb246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8g
UkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiogcHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNlbnRhdGlvbi5jcHAKaW5kZXggNDZhYWFl
OTdkN2JiYmQ2ZWNkMzY3MGJhOTRhM2JhM2NjZmZmODliZS4uODZhM2NiNmRhYTI5ZTIyNTBjMzE1
NzkxMzVkM2QzNzdlMmFmZGQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkKIHsKICAgICBXZWJIVE1MUmVwcmVzZW50
YXRpb25Db3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6
fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCkBAIC01NCw3ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNl
bnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCiAKICAgICBXZWJIVE1MUmVwcmVzZW50
YXRpb25Db3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRh
dGlvbiogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjcmVhdGVJbnN0YW5jZShXZWJGcmFtZSogZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDNmMWViNmQ3Mzhi
ZDNhMjQ1YTFjZjRlYmI4NjBlZjQ5NDkyMWY1NWYuLjUwYThlNWY2YmNmMzBhYTQ4NDU0YmUwZDll
MTJiOWM4ZDEzYTNiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhp
c3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCkBA
IC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09NUHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRl
VXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3RpZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJI
aXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSJf
cyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJk
UHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcgQEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9y
eSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwogfQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0
b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2YWMzMmRjZjVjZjUwMTFjMzU0ODE3MWE2YzNiZS4u
OGRkOWJkYWFhMjg4NzBjMGNmMzQyYzI0ODI3MTI1ZTZhYTUzMDUyMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtNTMsNyArNTMsNyBAQCBXZWJIaXN0
b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiYmIGhpc3RvcnlJdGVt
KQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQobV9oaXN0b3J5SXRlbS5nZXQoKSwgdGhp
cyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2Vi
SGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVt
Il9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJIaXN0b3J5SXRlbSgpCkBAIC02Miw3ICs2
Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9yeUl0ZW0oKQogICAgIGhpc3RvcnlJdGVt
V3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5nZXQoKSk7CiAKICAgICBnQ2xhc3NDb3Vu
dC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViSGlzdG9yeUl0ZW0iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAogV2Vi
SGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRleCBmNjIxOWE2NmRhYTk1ZGM1NjIyNDE1
YjNmOTkwMzc1ZTdiN2ZiNzJjLi40NDdkOTJhM2EzY2NkYTU2YTIyNTJiODI2NGM2NTQ1NThhYzYy
ZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNwZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkluc3BlY3Rvci5jcHAKQEAgLTUxLDEz
ICs1MSwxMyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3BlY3RvcihXZWJWaWV3KiBpbnNwZWN0ZWRX
ZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlYwogICAgIEFTU0VSVF9BUkcoaW5zcGVj
dGVkV2ViVmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQogCiBXZWJJbnNwZWN0b3I6On5XZWJJbnNw
ZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVt
b3ZlKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYklu
c3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0
b3I6OmZyb250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
SmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhlNGJlOGFjMjFiZGI2NjE4ZDViY2IxMmIx
OTk2NWM5MjkxN2M5Yy4uNzU4NjYyNzJkNWY3ZGNiM2E1YTA4NjJlYmM5YTQxN2ZlYjcyYjNlZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkph
dmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVj
dG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9y
Il9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0
b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rv
ciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9yeS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3
N2M3ZWVmOGRiOGQ3NDY0M2Y5NTJhM2FmMWE1Ni4uNmVlMDcyNTMyZWU0MDkxYWFjYTIwZjQ4MWJh
MzNkZDEwM2I0ZGM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFz
c0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAgV2ViS2l0Q2xhc3NGYWN0b3J5OjpXZWJL
aXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3MpCiAgICAgV2ViQ29yZTo6cG9wdWxhdGVK
SVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBXZWJLaXRDbGFzc0ZhY3Rvcnk6On5XZWJL
aXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VM
b29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcApp
bmRleCA5MzdhNjY2OWU5MDhmZWU2MDdiYzQxZDViOTI3N2M3YTYwMWRlZDY5Li5lNjljMGM4MDg5
OGJmNzE1MDhiMDMyZDk5MjE4YmQxMmY3NTk1YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0zNCwxMyArMzQsMTMgQEAKIFdlYktpdE1l
c3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1lc3NhZ2VMb29wIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9vcCJfcyk7CiB9CiAKIFdlYktpdE1lc3Nh
Z2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRNZXNzYWdlTG9vcCIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2FnZUxvb3AiX3MpOwogfQogCiBXZWJLaXRN
ZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdFN0YXRpc3RpY3MuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKaW5kZXggMTI2M2JjMGMxMWY5
OGYxZGZlYzdlZjhkZjc4ZTliZGY4YmFjOTBjZC4uZjUxNTFjYmUwYmI2ZjZkMDYyMzM5YTQ5MGJk
ZmNiNDc3YThmNGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0
U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlz
dGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQgV2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJL
aXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRp
c3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGljcyJfcyk7CiB9CiAKIFdlYktpdFN0YXRp
c3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1
MjY5ZWJiMzQyNTAzY2M3MTAzMTk0YzMxMTVlNWU3Li4yNDQxMDY2ODg2NzZmNTcyYjk2ZDkyNWJm
ZjFhYjA1NjhlNmFkYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJN
dXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTXV0
YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0
OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0YWJsZSkKICAgICA6IG1faXNNdXRhYmxl
KGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogV2ViTXV0YWJsZVVSTFJlcXVlc3QqIFdl
Yk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpCkBAIC05Myw3ICs5Myw3IEBAIFdl
Yk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW1tdXRhYmxl
SW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6fldlYk11dGFibGVV
UkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgp
LnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRh
dGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwCmlu
ZGV4IGJjNGYyNjg0YWQxNmM5NDg1YWZhNzUwM2EyMzMzMWE4Mjc2ZjI2NzAuLjZhOTMzYWJiNWY4
NzI2YWFlMmYxZjE5MmJmODA1YzRiYzJjZGM1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcyLDEzICs3MiwxMyBAQCBXZWJOYXZpZ2F0
aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdlYk5hdmlnYXRpb25EYXRhOjp+V2ViTmF2
aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQogCiBXZWJOYXZpZ2F0aW9uRGF0YSogV2Vi
TmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVxdWVzdCwgSVdlYlVSTFJlc3BvbnNlKiBy
ZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwgY29uc3QgU3RyaW5nJiBjbGllbnRSZWRp
cmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlm
aWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb24uY3Bw
CmluZGV4IGY1M2JiNzI2MzUzZjc2YWNhMDY4YThkZmRjN2Y4YjE0OTFkZDYzMzguLjk0OTI1NmVl
ODAyMmZjNGEzZDcxN2YxYTM5YThjNTlhMWYwNWM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMsNyArNDMsNyBAQCBXZWJOb3RpZmljYXRp
b246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElVbmtub3duKiBhbk9iamVjdCwgSVByb3Bl
cnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5BZGRSZWYoKTsKIAogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5v
dGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBAIC01Niw3ICs1Niw3IEBAIFdlYk5vdGlm
aWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAgICAgIG1fdXNlckluZm8tPlJlbGVhc2Uo
KTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlm
aWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbiogV2ViTm90aWZpY2F0aW9uOjpjcmVh
dGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5rbm93biogYW5PYmplY3QgLyo9MCovLCBJ
UHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmluZGV4IDkyNTMyZGJkY2E0MWI4NTMxZTkx
NjhjZGRkZTMxYjU3YTdmNDU2YjUuLjZjZDg4NDJlN2EwNjc1ZWFhMGFmY2EzMGYwZDg2ZmU4YmNk
N2FlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlv
bkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9u
Q2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2Vi
Tm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFrZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25D
ZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNl
bnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbkNlbnRlciIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0K
IAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3RpZmljYXRpb25DZW50ZXI6OmNyZWF0ZUlu
c3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVu
Y2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRl
eCA5Y2Y4Y2MwMmEyMWNkZGViYjBlZDg0OTlmZmU5NDBmNmU0ZjE4NDM0Li5mYjE3M2RkNWMxZTUw
NjUxZWMzOTQ5MTdkZDdiMjcyOGZkMGE3N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0NywxMyBAQCBXZWJQcmVmZXJlbmNlcyog
V2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKQogV2ViUHJlZmVyZW5j
ZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2ViUHJlZmVyZW5jZXM6On5XZWJQcmVmZXJl
bmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1v
dmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJQ
cmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVuY2VzKiBXZWJQcmVmZXJlbmNlczo6Y3Jl
YXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVz
b3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4
IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0OWEzZTY0YTkuLjNiYmEzMWUzOWQ5NTY5
NjhiYzJlNzZkYjE5ZGJkNGRmZWNhMmI5MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJS
ZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBXZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2Uo
SVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVybCwgY29uc3QgV1RGOjpTdHJpbmcmCiAg
ICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdlYlJlc291cmNlOjp+V2ViUmVzb3VyY2Uo
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViUmVzb3VyY2Ui
X3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3VyY2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0
cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0T2Jq
ZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIwMTJjMWY1MzkxYTI4YjQ2YTA1OWM5YjBlOGRjLi5k
ZjA3ODFmNDEyMzliNzA0NWI0NzA3YzViYTliNjNmZjA5OTNkZmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAKQEAgLTM0LDEzICszNCwxMyBAQAogV2Vi
U2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRPYmplY3QiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJfcyk7CiB9CiAKIFdlYlNjcmlwdE9iamVj
dDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVjdCIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwCmluZGV4IDI2
ODEwMWE2YzBmMDZiM2IwZjE3MjBkZjk1MDU1ZWI0MDM3MzM2NDguLjdlZjhhNDUzNDYxMWJkOGQy
MTY3MjNmZWVhYWYwMTdlMjM5ZDYwZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
Y3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgaW5saW5lIFdlYlNjcmlwdFdvcmxkOjpX
ZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiYmIHdvcmxkKQogICAgIGFsbFdv
cmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsKIAogICAgICsrZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3JpcHRXb3JsZCIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3MpOwogfQogCiBXZWJTY3JpcHRXb3JsZDo6
fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcgQEAgV2ViU2NyaXB0V29ybGQ6On5XZWJT
Y3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVtb3ZlKG1fd29ybGQuZ2V0KCkpOwogCiAg
ICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlw
dFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCJf
cyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3JpcHRXb3JsZDo6c3RhbmRhcmRXb3JsZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAKaW5kZXgg
OTQ1Yjg2OTIzZjZiMWZjYTdkMGI0Nzc3ZjBjZDA2MDAyNDZhMTAwMC4uZWVmMTY0M2I2MTdjMjRk
MzA0M2ExYmYwMDZiNmQxMjE3YzhlMTg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMgKzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3Jp
Z2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCiAg
ICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKQogewogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTZWN1cml0eU9yaWdpbiIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJpdHlPcmlnaW4iX3MpOwogfQogCiBXZWJT
ZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2luKCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlY3VyaXR5T3JpZ2luIl9zKTsKIH0KIAog
Ly8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXggOGJiODBhMmZjYTI5MjdlMjRjZmQwMGY4
NjE2Y2I2MTc1NzYxNWVlZC4uN2YxMWRmNWZmZTE2NTExMWFmMTU5NTM0NDZiZjcxMmNmZGQ2ZDJh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VyaWFsaXplZEpTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVl
LmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogV2ViU2Vy
aWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1ZhbHVlKCkKIHsKICAgICArK2dDbGFzc0Nv
dW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VyaWFsaXplZEpTVmFsdWUiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0K
IAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJpYWxpemVkSlNWYWx1ZSgpCiB7CiAgICAg
LS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6
ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVk
SlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJpYWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFs
aXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZhN2Y2Nzg5Yzg3YTM3MzI3N2ZjZGQ1OWJl
ZjgyMzU4ZWQuLjA0NTM1ZjNmNzIzMTZmNDJhMzEwOTdjZjYwMzg1ZWVlMGMxZTg0NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJlbmRlcmVyLmNwcApAQCAtNDAsMTMgKzQw
LDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJlbmRlcmVyOjpjcmVhdGVJbnN0YW5jZSgp
CiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlRleHRSZW5kZXJlciIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRlcmVyIl9zKTsKIH0KIAogV2ViVGV4dFJl
bmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJlbmRlcmVyIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIiX3MpOwogfQogCiBIUkVTVUxUIFdlYlRl
eHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBSRUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJf
IHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAKaW5kZXggNTk3ODhjNGY1ZTI0Zjg5
NWJmYWU0M2M2MDU5MWE0NWFmZTNkNjY1MS4uNDBiN2I2NmZhN2FhZDFiYWVlMjY3ZjYxZDFkNzEz
NzE0YjNmNDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
b25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRlcihzZW5kZXIpCiB7CiAgICAgZ0NsYXNz
Q291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2NhMDVkYzc2ZGU2MzU2N2JjZTZmZTlkZGNhNmYx
Li41MDk5YmEwYWYxN2JlM2MzN2M3OTlmZjA1N2JmMDBhMWY5YmM2Mjk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIsMTMgQEAgV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJl
ZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
ciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRl
cjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9zKTsKIH0KIAogV2ViVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVy
OjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRpb25DbGllbnQ+JiYg
Y2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVu
dGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApp
bmRleCBlNzU5NDZiMjg0MjU0NzJlODFiY2Y3YjM4ZjliMGMzMTg5NjE2MTlmLi5hNTMxZDEwNjk5
NTJlOWQ1NjJiMTRkMjZlYWVjODUzZjY0NjJmZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcsMTMgKzM3LDEzIEBAIFdlYlVSTENyZWRl
bnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkKICAg
ICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2ViVVJMQ3JlZGVudGlh
bDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9zKTsKIH0KIAogV2ViVVJMQ3JlZGVudGlh
bCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFjZS5jcHAKaW5kZXggMTllZDk2ZjgyMTBk
ODkzOWE5ZWVjYTJjNTFhMmQ4MzRiZTgwMGU1MC4uMzFiMDlhYzRjYjQ0NDBmZGU5MTdmNDY1MGVl
MTZlNmEzNDVjYzg0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJM
UHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQ
cm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcsMTMgQEAgV2ViVVJMUHJvdGVjdGlvblNw
YWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0
aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBn
Q2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlv
blNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3BhY2U6On5XZWJVUkxQcm90ZWN0aW9uU3Bh
Y2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUo
IldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAKIFdlYlVSTFByb3RlY3Rpb25TcGFjZSog
V2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXggYTViMjNkYmZhNTQ5NGMzZTA4MzJlYWQ2
ODRlNGZiYmU3MDhiYjUwOC4uNjEyMjk2Y2I1NTAwZDZhNGU2ZDVhNGI3Y2E0NzkyNzVhNGRjYTlh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1
LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2NhbGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9y
U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVSTFJlc3BvbnNlOjpXZWJVUkxSZXNwb25z
ZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxSZXNwb25z
ZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2ViVVJMUmVzcG9uc2UoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25z
ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwog
fQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsK
ICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBuZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAg
ICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBpdCBoYXMgdGhlIElXZWJIVFRQVVJMUmVz
cG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1fcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3Bv
bnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3RyaW5nKCksIDAsIFN0cmluZygpKTsKKyAg
ICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6
Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwogICAgIGluc3RhbmNlLT5BZGRSZWYoKTsK
ICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAppbmRleCA0ODEyMzg0NzEzYzhiOTlkYTVj
YmE1YjYzZjI1NDQ0OWZlNTBjNjQyLi5lZGYzMzU4NmIxYTAxM2FiMThmYjA1NzgyM2ZhOTE4ZjVj
ZGYxZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVu
dFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OldlYlVzZXJDb250ZW50VVJM
UGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsKIH0KIAogV2ViVXNlckNvbnRlbnRVUkxQ
YXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuKCkKIHsKICAgICAtLWdDbGFzc0NvdW50
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVc2VyQ29udGVudFVSTFBhdHRl
cm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29u
dGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmll
dy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0ZjY2MWUwMDdlZTEyZDBkMTk0NWQzYjc4ZmM5Yi4uZTU1
YTI0MmRjZWIyYzU2Nzk0ZTQyOTg4MDM3ZGJlODg5MjU2MzVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBAQCBXZWJWaWV3OjpXZWJWaWV3KCkKIAog
ICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3
Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpAQCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZp
ZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFt
ZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldyogV2ViVmlldzo6Y3Jl
YXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwxMSBAQCBib29sIFdlYlZpZXc6OmV4ZWND
b21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQYXJhbSovKQogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAg
c3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICBjYXNlIFNlbGVjdEFsbDoKLSAgICAg
ICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRl
KCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxs
Il9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5kbzoKLSAgICAgICAgICAgIHJldHVybiBm
cmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgcmV0
dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8iX3MpLmV4ZWN1dGUoKTsKICAgICAgICAg
Y2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlJl
ZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFu
ZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0y
MTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50
KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVudC50eXBlKCkgIT0gZXZlbnROYW1l
cygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleXByZXNz
RXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gY29tbWFuZCA9IGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2ZW50KCZldmVudCkpOworICAgIGF1dG8g
Y29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKFN0cmluZyB7IGludGVycHJldEtleUV2
ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZlbnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2
ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdlYktpdCBkb2Vzbid0IGhhdmUgZW5vdWdo
IGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRlIGhvdyBjb21tYW5kcyB0aGF0IGp1c3Qg
aW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRvciBzaG91bGQgYmUgdHJlYXRlZCwKQEAg
LTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weShfSW5fb3B0XyBJVW5rbm93
biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
IAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRp
dG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4
ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDczNCw3ICs0NzM0LDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25vd24qIC8qc2VuZGVyKi8pCiAgICAgaWYg
KCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4
ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09L
OwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVTVUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9v
cHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQo
IlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyAr
NDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVSTChfSW5fIEJTVFIgdXJsKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxs
aW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5n
SGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0cmluZygpKTsKICAgICByZXR1cm4gU19P
SzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpkZWxldGVfKF9J
bl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7CisgICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21t
YW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtlcnNQcml2YXRlLmNwcAppbmRleCAwNDUx
OGZhZDFhNzYyYmU2Y2M3MGQ2OGMzNWJmOTBhZmExODU5ODY4Li4yZTkzMWUwOGU3NzI2N2IyMjMx
MDdhNTgzODgxYTU0OWQ3ZWYxODIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
V29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSArOTAsMTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUq
IFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6
V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFt
ZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgp
LmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQogCiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldl
YldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9zKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYTkyYTcwMGJjM2JiYzFlOGY1M2IyZWY1
NTEzMTFjYWYxNzZmOWVhLi4wMDJhZmQ1OTEzZjE1OTA5Yzk5NTVkMTE5ODM4YTc4MTQ5NzlkZGE4
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzMgQEAKKzIwMjItMDQtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGlj
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGZpbmRGb250RmFs
bGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFz
ay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJl
ZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWFkQWxsQ2h1bmtzKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojphc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVCcm93c2VyUXVpcmspOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzRmlyZWZveEJyb3dzZXJRdWly
ayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQ
bGF0Zm9ybVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmFzc2VydFVzZXJBZ2VudEZv
clVSTEhhc0VtcHR5UXVpcmspOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHA6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpDdXJsOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bToKKyAgICAgICAgKGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKToKKyAg
ICAgICAgKGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2Vi
QXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNl
c3Npb24uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0
U1NMLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJ
Q2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3V2luZG93UHJvcGVydGllcyk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNw
cDoKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25QYWdlSUQpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxlcik6CisgICAgICAgIChXZWJLaXRUZXN0
U2VydmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoIGNvbnN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RTZXJ2ZXI6OmdldFVSSUZvclBhdGggY29uc3QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
aW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0
VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nV2l0aG91dE5hdmlnYXRpb25E
ZWxlZ2F0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRVcFdlYlZpZXdGb3JQcmVmZXJy
ZWRDb250ZW50TW9kZVRlc3RpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRzcGkuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVNldHRhYmxlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQpOgorICAg
ICAgICAoV1RSOjp4bWxSb2xlVmFsdWVTdHJpbmcpOgorICAgICAgICAoV1RSOjpyb2xlVmFsdWVU
b1N0cmluZyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24p
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxMZXZl
bCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dy
YWJiZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphcmlh
RHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudEVuY29kaW5nKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZG9jdW1lbnRVUkkpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0
Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6OnRvSlNPTk9iamVjdCk6CisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwOgorICAgICAgICAodGVzdFN1bW1hcnlQ
cm92aWRlcnMpOgorCiAyMDIyLTA0LTA0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxl
LmNvbT4KIAogICAgICAgICBbZ2l0LXdlYmtpdCBjYW5vbmljYWxpemVdIFN1cHBvcnQgbXVsdGlw
bGUgZW1wdHkgbGluZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1w
UmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUu
Y3BwCmluZGV4IGNmN2I3ODliMzVlYTFlZjcyYmQ2YzhlNjRlMzk2OTA4ZGM4YzE3NmEuLmUxOTY2
OGNjZDc0OWJiZTlhNjg4ZTA2ODQzNzA4OGZkMzY1OGFmODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGlj
IHZvaWQgc2l6ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAKIHN0YXRpYyBTdHJpbmcgZmluZEZv
bnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiB7Ci0gICAgU3RyaW5nIHBhdGhUb0Zv
bnRGYWxsYmFjayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgocGF0aE9yVXJsKTsKKyAgICBTdHJp
bmcgcGF0aFRvRm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChTdHJpbmc6OmZy
b21VVEY4KHBhdGhPclVybCkpOwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwog
ICAgIGlmICghX3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLndpZGVDaGFy
YWN0ZXJzKCkuZGF0YSgpLCBfTUFYX1BBVEgpKQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGlj
IFN0cmluZyBmaW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIAogICAgIFN0
cmluZyBwYXRoVG9DaGVjayA9IGZ1bGxQYXRoOwogCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBs
YXlvdXRUZXN0cyA9ICJMYXlvdXRUZXN0cyI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlv
dXRUZXN0cyA9ICJMYXlvdXRUZXN0cyJfczsKIAogICAgIC8vIEZpbmQgdGhlIGxheW91dCB0ZXN0
IHJvb3Qgb24gdGhlIGN1cnJlbnQgcGF0aDoKICAgICBzaXplX3QgbG9jYXRpb24gPSBwYXRoVG9D
aGVjay5maW5kKGxheW91dFRlc3RzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9Dcm9zc1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OTk4YTYwYzgzOTJiNGY4
MjJhNzhiNTI2MTQ3ZjguLmZhNjE4YmIxYjc5YjcwZDc1NzFlNWE1N2IxNTMwNDU2YzViYWUyNGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFz
ay5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNr
LmNwcApAQCAtMTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNp
YykKICAgICB9CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXpl
KCkpOwotICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1
Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCJsb2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1
Y3RvclNldC5zaXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNv
dW50KCJsb2dnZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVj
dG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNv
bnN0cnVjdG9yU2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBj
b3B5Q29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRf
RVEoMXUsIGNvcHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAj
aWYgIUNPTVBJTEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
c2l6ZSgpKTsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywg
QmFzaWMpCiAgICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4g
TVNWQydzIGltcGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0
ZDo6bWFrZV90dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXpl
KCkpOwogI2VuZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQo
ImxvZ2dlci0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoImxvZ2dlci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQu
Y291bnQoIjxkZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0
b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29u
c3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBt
b3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VR
KDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NF
UlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAg
IEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9z
KSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0
Pi0yLTIiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgi
PGRlZmF1bHQ+LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0
LmNvdW50KCI8ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBB
U1NFUlRfRVEoMTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRleCBmZmJhMDBiODAyMWE1
YTQ2YjgzMWEzYjk3YzQ1ZGI0YmYzYjQ1OGViLi5lODA3MDc0ZjRjYzVkZGM5Mzk1ZjEzZjhiODMx
NzI0YzU5OWEyOWU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29y
ZS9IVFRQUGFyc2Vycy5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBURVNUKEhUVFBQYXJzZXJzLCBQ
YXJzZUNyb3NzT3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAjaWYgVVNFKEdMSUIpCiBURVNU
KEhUVFBQYXJzZXJzLCBWYWxpZGF0ZVVzZXJBZ2VudFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSIpKTsKLSAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiKSk7Ci0gICAgRVhQ
RUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQv
MTYzIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpLzEwLjAgV2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1Zh
bGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7
IGxpa2UgR2Vja28pIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiU2FmYXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkpIikpOwotICAgIEVYUEVDVF9U
UlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21t
ZW50KSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNh
ZmFyaSAobGVmdCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIikpOwotICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFu
dW1lcmljIHRva2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIp
KTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmds
ZSBjaGFyYWN0ZXIgdG9rZW4pIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiU2FmYXJpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxp
ZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCJfcykpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiX3MpKTsKKyAg
ICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdl
YktpdCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpLzEwLjAgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBH
ZWNrbykiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUo
IlNhZmFyaSAoY29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSJfcykpOworICAgIEVYUEVDVF9UUlVF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50
KSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpIChsZWZ0IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiX3MpKTsKKyAgICBFWFBFQ1RfVFJV
RShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhh
bnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJz
KSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAo
c2luZ2xlIGNoYXJhY3RlciB0b2tlbikiX3MpKTsKIAotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIiAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5n
IHdoaXRlc3BhY2UpICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRl
clZhbHVlKCJcblNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4i
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJp
LyAobm8gdmVyc2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlz
VmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIp
KTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkg
dW5vcGVuZWQgY29tbWFuZW50KSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAo
ZW1iZWRlZCBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhl
YWRlclZhbHVlKCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHBy
b2R1Y3QgdG9rZW4pIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIiAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCIgU2FmYXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNF
KGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNl
KSAiX3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJc
blNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiJfcykpOwor
ICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5v
IHZlcnNpb24gdG9rZW4gYWZ0ZXIgc2xhc2gpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCJfcykp
OworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1
bm9wZW5lZCBjb21tYW5lbnQpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIl9zKSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAu
MCAoZW1iZWRlZCBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIl9zKSk7
CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlz
c2luZyBwcm9kdWN0IHRva2VuKSJfcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYjAxMTI4YjI2
YjFjYzBhMjA1YzY1NDFhNDg1NmI3ZjAyZjQ4YmM3Ni4uMDdhNDVlMGVmNDE0YmY3NDk3MTI5MmZj
MWNjMmFhODc0OGFkZDUxNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUX0YoRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCiB0ZW1wbGF0ZTwgdHlwZW5h
bWUgVCwgc2l6ZV90IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYp
W05dICkgeyByZXR1cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVj
dG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25z
dCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFs
c2UpCitzdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5r
cywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRv
ciA9ICJcclxuIl9zLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFy
ZWRCdWZmZXJDaHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgp
LmRhdGEoKSk7CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4
U3RyaW5nV2l0aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtNDc3LDMyICs0
NzcsMzIgQEAgVEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5r
c0luTXVsdGlTZWdtZW50KQogICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVm
ZmVyJiBzaGFyZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7
CiAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0
b3JbXSA9IHsgIlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0
b3J5IHRoZXJlICIsICJzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFy
ZWRCdWZmZXIsICJpIik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVm
ZmVyLCAiaSJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhw
ZWN0ZWRDaHVua3MxV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdp
dGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaSIs
ICJzIGkiLCAicyB0aGUgbW9zdCByaSIsICJkaSIsICJjdWxvdXMgaGkiLCAic3RvcnkgdGhlcmUg
aSIsICJzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpIiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVy
LCAiaSJfcywgdHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywg
ZXhwZWN0ZWRDaHVua3MxV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdp
dGhTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0
IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwg
IiAiLCAiIHRoZSBtb3N0IHJpZGljdWxvdXMgaCIsICJ0b3J5IHRoZXJlICIsICIuIiB9OwotICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIik7CisgICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiX3MpOwogICAgICAgICBF
WFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBh
cmF0b3IsIGFycmF5c2l6ZShleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAg
ICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3Rl
ZENodW5rczJXaXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIiwgIiBpcyIsICIgdGhlIG1vc3Qgcmlk
aWN1bG91cyBoaXMiLCAidG9yeSB0aGVyZSBpcyIsICIuIiB9OwotICAgICAgICByZWFkQWxsQ2h1
bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiX3MsIHRydWUpOwogICAgICAgICBFWFBF
Q1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3Is
IGFycmF5c2l6ZShleHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNo
dW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNX
aXRob3V0U2VwYXJhdG9yW10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaCIsICJv
cnkgdGhlcmUgaXMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1
ZmZlciwgImlzdCIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZl
ciwgImlzdCJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhw
ZWN0ZWRDaHVua3MzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dp
dGhvdXRTZXBhcmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNv
bnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaXMg
aXMgdGhlIG1vc3QgcmlkaWN1bG91cyBoaXN0IiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAg
IHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0IiwgdHJ1ZSk7CisgICAg
ICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zLCB0cnVlKTsK
ICAgICAgICAgRVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNX
aXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvcikpKTsK
ICAgICB9OwogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2lt
cGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKQEAgLTU1NywxMiArNTU3LDEyIEBAIFRFU1Rf
RihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgICAg
IGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3Ry
bGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVu
a3NXaXRob3V0U2VwYXJhdG9yW10gPSB7ICIiIH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmlu
Zz4gY2h1bmtzOwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwg
ImRvZyIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRv
ZyJfcyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRD
aHVua3NXaXRob3V0U2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2Vw
YXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFy
KiBjb25zdCBleHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3JbXSA9IHsgImRvZyIgfTsKLSAgICAg
ICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciLCB0cnVlKTsKKyAg
ICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3MsIHRydWUp
OwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtz
V2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsK
ICAgICB9CiAKQEAgLTU3MiwxMiArNTcyLDEyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1Jl
YWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAg
ICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yW10g
PSB7ICJCZWF1Y291cCBkZSBjaGF0cyAiLCAiIiwgIiIsICIiLCAiIiB9OwogICAgICAgICBzdGQ6
OnZlY3RvcjxTdHJpbmc+IGNodW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBz
aGFyZWRCdWZmZXIsICJjYXQiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFy
ZWRCdWZmZXIsICJjYXQiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVu
a3MsIGV4cGVjdGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1
bmtzV2l0aG91dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAg
ICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJC
ZWF1Y291cCBkZSBjaGF0cyBjYXQiLCAiY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiB9OwotICAg
ICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIsIHRydWUpOwor
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcywgdHJ1
ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVu
a3NXaXRoU2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yKSkp
OwogICAgIH0KICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVXNlckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9Vc2VyQWdlbnRRdWlya3MuY3BwCmluZGV4IDVmOTI1MzI3OTFhNDBlODM1MjMzZDBhYzE1
ODI1NTE3YTlkZDViMDAuLjJkZDdlNGFlN2EwMWMyOWVmMTRiZTg5ZmVkYWIyODVkOTc2Zjk4MDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRR
dWlya3MuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdl
bnRRdWlya3MuY3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAogc3RhdGljIHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJr
KGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJB
Z2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFy
ZFVzZXJBZ2VudEZvclVSTChVUkwoIFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfVFJV
RSh1YVN0cmluZy5jb250YWlucygiQ2hyb21lIikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5n
LmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2b2lkIGFzc2Vy
dFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAK
IHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmso
Y29uc3QgY2hhciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFn
ZW50Rm9yVVJMKFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJk
VXNlckFnZW50Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX0ZBTFNF
KHVhU3RyaW5nLmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5n
LmNvbnRhaW5zKCJTYWZhcmkiKSk7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIGFzc2Vy
dFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQog
CiBzdGF0aWMgdm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNv
bnN0IGNoYXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2Vu
dEZvclVSTChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVz
ZXJBZ2VudEZvclVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVh
U3RyaW5nLmNvbnRhaW5zKCJNYWNpbnRvc2giKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcu
Y29udGFpbnMoIk1hYyBPUyBYIikpOwpAQCAtNzIsMTQgKzcyLDE0IEBAIHN0YXRpYyB2b2lkIGFz
c2VydFVzZXJBZ2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoY29uc3QgY2hhciogdXJsKQog
Ly8gdGhhdCB0aGUgc3RhbmRhcmQgdXNlciBhZ2VudCBzaG91bGQgYmUgdXNlZC4pCiBzdGF0aWMg
dm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNFbXB0eVF1aXJrKGNvbnN0IGNoYXIqIHVybCkK
IHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9
LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChV
UkwoU3RyaW5nIHsgdXJsIH0pKTsKICAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuaXNOdWxsKCkp
OwogfQogCiBURVNUKFVzZXJBZ2VudFRlc3QsIFF1aXJrcykKIHsKICAgICAvLyBBIHNpdGUgd2l0
aCBubyBxdWlya3Mgc2hvdWxkIHJldHVybiBhIG51bGwgU3RyaW5nLgotICAgIFN0cmluZyB1YVN0
cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sICJodHRwOi8vd3d3LndlYmtp
dC5vcmcvIikpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJM
KFVSTCgiaHR0cDovL3d3dy53ZWJraXQub3JnLyJfcykpOwogICAgIEVYUEVDVF9UUlVFKHVhU3Ry
aW5nLmlzTnVsbCgpKTsKIAogICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dz
ZXJRdWlyaygiaHR0cDovL3R5cGVraXQuY29tLyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCAwZDBiMDA3ZjY0ZWRlNWM0
M2QzYWRkYjBiMzg3MjdlMmE4MzdjM2YwLi42NDM4ZjFjYTZhYjE2YWM3M2ZhYjRhN2JkNGZiZjcz
ZGNjOGM2ODJmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y3VybC9Db29raWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Y3VybC9Db29raWVzLmNwcApAQCAtNjQsMzAgKzY0LDMwIEBAIHByb3RlY3RlZDoKIAogVEVTVF9G
KEN1cmxDb29raWVzLCBSZWplY3RUYWlsbWF0Y2hGYWlsdXJlRG9tYWluKQogewotICAgIFVSTCB1
cmwgeyAiaHR0cDovL2V4YW1wbGUuY29tIiB9OworICAgIFVSTCB1cmwgeyAiaHR0cDovL2V4YW1w
bGUuY29tIl9zIH07CiAKICAgICAvLyBzdWNjZXNzOiBkb21haW4gbWF0Y2gKLSAgICBFWFBFQ1Rf
VFJVRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPWV4
YW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9U
UlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49ZXhh
bXBsZS5jb20iX3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBzdWNj
ZXNzOiB3aWxkY2FyZCBvZiBkb21haW5zCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNl
dENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj0uZXhhbXBsZS5jb20iLCBDb29raWVK
YXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNl
dENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj0uZXhhbXBsZS5jb20iX3MsIENvb2tp
ZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBmYWlsdXJlOiBzcGVjaWZpYyBzdWIg
ZG9tYWluCi0gICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmws
ICJmb289YmFyOyBEb21haW49d3d3LmV4YW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6
TmV0d29yaykpOworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwg
dXJsLCAiZm9vPWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSJfcywgQ29va2llSmFyREI6OlNv
dXJjZTo6TmV0d29yaykpOwogICAgIC8vIGZhaWx1cmU6IGRpZmZlcmVudCBkb21haW4KLSAgICBF
WFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERv
bWFpbj1zYW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVY
UEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9t
YWluPXNhbXBsZS5jb20iX3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKIH0KIAog
VEVTVF9GKEN1cmxDb29raWVzLCBUZXN0SHR0cE9ubHlDYXNlKQogewotICAgIFVSTCB1cmwgeyAi
aHR0cDovL2V4YW1wbGUuY29tIiB9OworICAgIFVSTCB1cmwgeyAiaHR0cDovL2V4YW1wbGUuY29t
Il9zIH07CiAKICAgICAvLyBzdWNjZXNzOiBmcm9tIG5ldHdvcmsKLSAgICBFWFBFQ1RfVFJVRSht
X2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgSHR0cE9ubHkiLCBDb29r
aWVKYXJEQjo6U291cmNlOjpOZXR3b3JrKSk7CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXIt
PnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IEh0dHBPbmx5Il9zLCBDb29raWVKYXJEQjo6
U291cmNlOjpOZXR3b3JrKSk7CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwot
ICAgIEVYUEVDVF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJiaW5nbz1i
b25nbzsiLCBDb29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQpKTsKKyAgICBFWFBFQ1RfVFJVRSht
X2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiYmluZ289Ym9uZ287Il9zLCBDb29raWVK
YXJEQjo6U291cmNlOjpTY3JpcHQpKTsKICAgICAvLyBmYWlsdXJlOiBmb28gaXMgYWxyZWFkeSBz
dG9yZWQgYXMgSHR0cE9ubHkKLSAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tp
ZSh1cmwsIHVybCwgImZvbz1iYXI7IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFy
OyJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAgICAgLy8gZmFpbHVyZTogaW5j
b25zaXN0ZW50LiBTb3VyY2UgaXMgU2NyaXB0LCBidXQgYXR0cmlidXRlIHNheXMgSHR0cE9ubHkK
LSAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1i
YXI7IEh0dHBPbmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CisgICAgRVhQRUNU
X0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25s
eSJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9y
dC5tbQppbmRleCA4MDhiMzBjMjM4YzM4OGU5NTk3NGQxZWRjNTMzOTEyMTU3MjA3ZmUzLi5kZGMx
ODVkOTZiYzZlYjQ4MmQ3Nzg0ZDM5MGYwOWM5ODRjYzY1NmZmIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1t
CkBAIC0yNDQsNyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0
ZWRSZXF1ZXN0V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNF
KAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNj
cmlwdD4KIHRyeSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5q
cycpLnRoZW4oZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBh
bGVydCgnRXhjZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylT
V1JFU09VUkNFIl9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0
Y2hlZCB9OwogZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBA
IC0yNzYsMjQgKzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNw
b25zZVR5cGUsIElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0g
bnVsbHB0cjsKKyAgICBBU0NJSUxpdGVyYWwganM7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRB
bGVydCA9IG51bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2Ug
UmVzcG9uc2VUeXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRk
RXZlbnRMaXN0ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3
IFJlc3BvbnNlKG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwi
KTwvc2NyaXB0PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhw
ZWN0ZWRBbGVydCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFJlc3BvbnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExp
c3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2Zl
dGNoZWQuaHRtbCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
J2ZldGNoJywgKGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5o
dG1sJykpIH0pOyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2Vy
dmVyIjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAg
IHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVy
dCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3Ms
IHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQt
VHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAg
eyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZl
cicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3
IG5ld10pOwpAQCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0
aXBsZVdlYlZpZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0
aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChmZXRjaCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZEFsZXJ0ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6
SFRUUFNlcnZlciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0g
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlw
dD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsg
Ii8iX3MsIHsgbWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNv
bnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAg
ICAgICAgeyAiL2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9t
IHNlcnZlcicpPC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dL
V2ViVmlldyBuZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRh
dGVUZXN0KElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgp
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2Vy
dmVyUG9ydDsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3Rl
bmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
bmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+
J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1
dG8ganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVu
dC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3lu
dGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0p
Il9zOwogCiAgICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEo
ewotICAgICAgICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBqcyB9IH0sCisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAg
ICAgICAgIHsgIi9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAg
ICAgc2VydmVyUG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3Rh
dGljIHZvaWQgc29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAK
ICAgICB7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAg
ICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMi
LCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0g
fQorICAgICAgICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7
ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfX0sIGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAK
ICAgICAgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpA
QCAtNTU4LDcgKzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdp
blRlc3ROb25BcHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBj
b25zdGV4cHIgYXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAg
ICBsb2coJ0V4Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7Cisp
U1dSRVNPVVJDRSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZh
bHVlID0gUiJTV1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVm
YXVsdFZhbHVlID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAg
ICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYy
MCw3IEBAIGFzeW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBo
YXZlU2VudEluaXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9u
IGFwcCBpbml0aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAK
IAogc3RhdGljIFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVT
VChBcHBQcml2YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBw
SW5pdGlhdGVkVmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7
Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwK
LSAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAi
L21haW4uaHRtbCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3Jp
cHQiX3MgfSB9LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAv
LyBMb2FkIFdlYlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0
aGUgU2VydmljZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmll
bnRhdGlvbi5tbQppbmRleCBjZGI5MTA0YWViNWZkMDFjYTVlNzE0ODBlYmExOTQ5Njc0N2U2MmVm
Li4zMjRiZDAyNDY4ZWIzZmQyYjBhNWQ5MzgzZWI3MDYxMmI5MTc2ZmUwIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50
YXRpb24ubW0KQEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJl
T3JpZW50YXRpb25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAg
IEVYUEVDVF9XS19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQo
KVsxXSk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJD
RSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxz
Y3JpcHQ+CiAKIGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlv
biByZXF1ZXN0UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsK
KylURVNUUkVTT1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25T
ZWN1cmVDb250ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsg
bWFpbkJ5dGVzIH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlv
bi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0
YVN0b3JlXTsKQEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9
CiBAZW5kCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0Mo
CitzdGF0aWMgY29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0
bWw+PGJvZHk+CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxs
b3c9J2FjY2VsZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6
Ly8xMjcuMC4wLjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9p
ZnJhbWU+CiA8L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciog
ZnJhbWVUZXh0ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIGZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRt
bD4KLSlET0NET0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9y
aWVudGF0aW9uUGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgc2VydmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAg
ICAgIHsgIi8iX3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAg
ICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1l
IiwgeyBmcmFtZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0g
fSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51
bGxwdHIsIG51bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbQppbmRleCA4NWY3ZDg5ZGJkODFlNDZmMzUwNmQ0NjZjYzk3YTZkMzJjNGYwMjkwLi5m
NmRiMTY3YTViZDFjNzUwZjBhZThhNmVlN2Q1ZjVhOTMyOGZhNWZjIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQ
cml2YWN5Lm1tCkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVw
SW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJB
cHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3Jl
OjpzZXRBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdl
YktpdEFQSSIpOworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigi
Y29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5p
dGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5p
dGlhbGl6ZU1haW5UaHJlYWQoKTsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxl
SWRlbnRpZmllclRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7Cisg
ICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdElkZW50aWZpZXIiX3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IE5vbkFwcEJvdW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1
LDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9s
bGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5CeXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWlu
Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAt
ODUwLDkgKzg1MCw5IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMn
KS50aGVuKGZ1bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylT
V1JFU09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVz
ID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwx
NSArODc1LDE1IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50
aGVuKGZ1bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JF
U09VUkNFIl9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VS
Q0UoCitzdGF0aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAK
IHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50
LnNvdXJjZS5wb3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRh
dGEpOwogfSk7CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBw
QnJvd3NlclByaXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBA
IC04OTksOCArODk5LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFp
bkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9
IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRp
b24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0
bWwiX3MsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29u
dGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVz
IH0gfSwKICAgICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURh
dGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlz
RG9uZSA9IGZhbHNlOwogICAgIAogICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9h
ZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3Nh
Z2UgZnJvbSB3b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBw
LWJvdW5kIGRvbWFpbiI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3Jr
ZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFp
biJfczsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhv
c3QoIi9tYWluLmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogICAgIGlzRG9uZSA9IGZhbHNlOwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIs
IHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9
IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0s
CisgICAgICAgIHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0
aW9uL2phdmFzY3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBb
V0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNd
OwpAQCAtOTY3LDcgKzk2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3Rl
clNlcnZpY2VXb3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
ICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0
aW9uIHN1Y2Nlc3MiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNj
ZXNzIl9zOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2Fs
aG9zdCgiL21haW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9u
ZSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYmE1
NTg5ZWY0NjRkZTRmZWFkZGY0OWU1ZjhlYTguLjViY2VhODEwOTNjZmVlNWY4ODJmZjY5NmY1ODZm
OTI2OTg3OGJkMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4
ICs4MzE3LDggQEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9j
ZXNzU3dhcCkKICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0g
ICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0
L2h0bWwiIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9
IH0sICJiYXIiIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9
LAorICAgICAgICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJf
cywgInRleHQvaHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNh
bWUtb3JpZ2luIl9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9j
b2w6Okh0dHBzKTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFBy
b2Nlc3NTd2FwLCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAg
ICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZl
cjEoewotICAgICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAi
L3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVz
dGluYXRpb24uaHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJD
cm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0s
CisgICAgICAgIHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9z
LCAidGV4dC9odG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2Ft
ZS1vcmlnaW4iX3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cCk7CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bQppbmRleCAzM2M4ZGJjNWI3MWUxYmJmOTIyYzExM2I0Y2M1ZGVjZGVhZWIzMmM5Li5mZGQ2NzA4
NjgzZWJjYmVmMjJlMDg1NjdmNzZiZTU5NmUxODBkZDM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50
aWNhdGlvblBhbmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0
aW9uUGFuZWwsIERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwsIFJlY292ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAg
ICAgICB7ICIvIl9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXgg
OWE2OGU2ZTQ1MWZlZjEzYmY1MDA3Y2IyZjAzNzY1MGFjMzNmZmRjMi4uMmYxOTUyYzI5ODliNDFm
ZDcwYWIxN2I5NGU1ZDBiN2NhNzUwZjRmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
QEAgLTE5Miw3ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld1dhc0Nh
bGxlZCA9IGZhbHNlOwogICAgICAgICBtX21lc3NhZ2UgPSBDU3RyaW5nKCk7CiAgICAgICAgIGF1
dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmll
dyIsIEdfQ0FMTEJBQ0soY3JlYXRlV2ViVmlld0NhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNl
bmRDb21tYW5kVG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiKTsKKyAgICAgICAgc2Vu
ZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcyk7CiAgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxl
cl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVl
KG1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCk7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgog
ICAgICAgICBtX2NyZWF0ZVdlYlZpZXdJbldpbmRvd1dhc0NhbGxlZCA9IGZhbHNlOwogICAgICAg
ICBtX21lc3NhZ2UgPSB7IH07CiAgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25u
ZWN0KG1fc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldzo6d2luZG93IiwgR19DQUxMQkFDSyhjcmVh
dGVXZWJWaWV3SW5XaW5kb3dDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRv
QmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0IiwgIntcInByZXNlbnRhdGlvbkhpbnRcIjpc
IldpbmRvd1wifSIpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3Np
bmdDb250ZXh0Il9zLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiV2luZG93XCJ9Il9zKTsKICAg
ICAgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CiAgICAgICAgIGdfYXNz
ZXJ0X3RydWUobV9jcmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQpOwpAQCAtMjMwLDcgKzIz
MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3SW5UYWJXYXNDYWxsZWQgPSBm
YWxzZTsKICAgICAgICAgbV9tZXNzYWdlID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0g
Z19zaWduYWxfY29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OnRhYiIsIEdfQ0FM
TEJBQ0soY3JlYXRlV2ViVmlld0luVGFiQ2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENv
bW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25I
aW50XCI6XCJUYWJcIn0iKTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJy
b3dzaW5nQ29udGV4dCJfcywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIlRhYlwifSJfcyk7CiAg
ICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWdu
YWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fz
c2VydF90cnVlKG1fY3JlYXRlV2ViVmlld0luVGFiV2FzQ2FsbGVkKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcAppbmRleCA1MWM4MTUxYzkw
YWEwZTgxMjVlNGJhNTlmOWRkZTBiODU2ZWUzMWIzLi4wNTQwNTUzN2E3NTc0OGQwZmVmZjhkZjU4
ZDQ2NTA2YjA2ZDIxNWFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdEdMaWIvVGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRHTGliL1Rlc3RTU0wuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgICAgICBh
c3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNlcnRpZmljYXRl
KSk7CiAgICAgICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKICAgICAgICAgbV90bHNF
cnJvcnMgPSB0bHNFcnJvcnM7Ci0gICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTCh7IH0sIGZhaWxp
bmdVUkkpOworICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoU3RyaW5nIHsgZmFpbGluZ1VSSSB9
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDI4NGY4MDRi
NjQxMDViODRiNjc2MjgzNzhjZThjZjBjMTk3MmFjZjguLmI3YzFjYzFjNWM1M2I5NzA2ZWRkNGJj
NGY3NzJjYTI5NjNkMTM0MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgd2luZG93UHJvcGVydGllc05vdGlmeUNhbGxiYWNrKEdPYmpl
Y3QqLCBHUGFyYW1TcGVjKiBwYXJhbVNwZWMsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0g
ICAgICAgIHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19n
ZXRfbmFtZShwYXJhbVNwZWMpKTsKKyAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hh
bmdlZC5hZGQoU3RyaW5nIHsgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykgfSk7CiAg
ICAgfQogCiAgICAgc3RhdGljIFdlYktpdFdlYlZpZXcqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uLCBV
SUNsaWVudFRlc3QqIHRlc3QpCkBAIC03NjAsMTEgKzc2MCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2ViVmlld1dpbmRvd1Byb3BlcnRpZXMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVy
KQogICAgIHRlc3QtPmxvYWRIdG1sKGh0bWxTdHJpbmcuZ2V0KCksIG51bGxwdHIpOwogICAgIHRl
c3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMoKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBwcm9wZXJ0aWVzQ2hhbmdlZFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRl
cmFsIHByb3BlcnRpZXNDaGFuZ2VkW10gPSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAi
Z2VvbWV0cnkiLAorICAgICAgICAiZ2VvbWV0cnkiX3MsCiAjZW5kaWYKLSAgICAgICAgImxvY2F0
aW9uYmFyLXZpc2libGUiLCAibWVudWJhci12aXNpYmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwg
InRvb2xiYXItdmlzaWJsZSIsICJzY3JvbGxiYXJzLXZpc2libGUiCisgICAgICAgICJsb2NhdGlv
bmJhci12aXNpYmxlIl9zLCAibWVudWJhci12aXNpYmxlIl9zLCAic3RhdHVzYmFyLXZpc2libGUi
X3MsICJ0b29sYmFyLXZpc2libGUiX3MsICJzY3JvbGxiYXJzLXZpc2libGUiX3MKICAgICB9Owog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKHByb3BlcnRpZXNDaGFuZ2Vk
KTsgKytpKQogICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2luZG93UHJvcGVydGllc0No
YW5nZWQuY29udGFpbnMocHJvcGVydGllc0NoYW5nZWRbaV0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3Bw
CmluZGV4IDQwZWFlYjdiZjI3YTRiODRkNzMwYjQzOWY3MWY2OTZiZWRjZWZiMTEuLmM1NjkwMmEy
Mjk3MDcyMmQzY2MxMTZiYmEzMTBkZGI2YjQzZGU4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApA
QCAtNDc2LDcgKzQ3Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25QYWdlSUQoV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gUmVnaXN0ZXIgYSBjdXN0b20g
VVJJIHNjaGVtZSB0byB0ZXN0IGhpc3RvcnkgbmF2aWdhdGlvbi4KICAgICB3ZWJraXRfd2ViX2Nv
bnRleHRfcmVnaXN0ZXJfdXJpX3NjaGVtZSh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJmb28i
LAogICAgICAgICBbXShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBncG9pbnRlcikg
ewotICAgICAgICAgICAgVVJMIHVybCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVl
c3RfZ2V0X3VyaShyZXF1ZXN0KSk7CisgICAgICAgICAgICBVUkwgdXJsID0gVVJMKFN0cmluZyB7
IHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSB9KTsKICAgICAgICAg
ICAgIEdSZWZQdHI8R0lucHV0U3RyZWFtPiBpbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9y
eV9pbnB1dF9zdHJlYW1fbmV3KCkpOwogICAgICAgICAgICAgY2hhciogaHRtbCA9IGdfc3RyZHVw
X3ByaW50ZigiPGh0bWw+PGhlYWQ+PHRpdGxlPiVzPC90aXRsZT48L2hlYWQ+PGJvZHk+PC9ib2R5
PjwvaHRtbD4iLCB1cmwuaG9zdCgpID09ICJob3N0NSIgPyAiVGl0bGU1IiA6ICJUaXRsZTYiKTsK
ICAgICAgICAgICAgIGdfbWVtb3J5X2lucHV0X3N0cmVhbV9hZGRfZGF0YShHX01FTU9SWV9JTlBV
VF9TVFJFQU0oaW5wdXRTdHJlYW0uZ2V0KCkpLCBodG1sLCBzdHJsZW4oaHRtbCksIGdfZnJlZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRU
ZXN0U2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktp
dFRlc3RTZXJ2ZXIuY3BwCmluZGV4IGYwYmQ4NjY1ZjcwYTBkNDUxNGYxZDFkMDg5MDVmNWFjMmVi
OTQxMjkuLjI4MDM0MTE0MGYwMmY4NGY3OTQ5NGVlYzRiN2UzNmIxMWMwOTlkODMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cnVuKFNv
dXBTZXJ2ZXJDYWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKIAogdm9pZCBXZWJLaXRUZXN0U2VydmVy
OjphZGRXZWJTb2NrZXRIYW5kbGVyKFNvdXBTZXJ2ZXJXZWJzb2NrZXRDYWxsYmFjayBjYWxsYmFj
aywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgbV9iYXNlV2ViU29ja2V0VVJMID0gVVJMKG1f
YmFzZVVSTCwgIi93ZWJzb2NrZXQvIik7CisgICAgbV9iYXNlV2ViU29ja2V0VVJMID0gVVJMKG1f
YmFzZVVSTCwgIi93ZWJzb2NrZXQvIl9zKTsKICAgICBtX2Jhc2VXZWJTb2NrZXRVUkwuc2V0UHJv
dG9jb2wobV9iYXNlV2ViU29ja2V0VVJMLnByb3RvY29sSXMoImh0dHAiKSA/ICJ3cyIgOiAid3Nz
Iik7CiAKICAgICBpZiAobV9xdWV1ZSkgewpAQCAtMTAxLDEyICsxMDEsMTIgQEAgQ1N0cmluZyBX
ZWJLaXRUZXN0U2VydmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgp
IGNvbnN0CiB7CiAgICAgZ19hc3NlcnRfZmFsc2UobV9iYXNlV2ViU29ja2V0VVJMLmlzTnVsbCgp
KTsKICAgICBnX2Fzc2VydF90cnVlKHBhdGggJiYgKnBhdGggPT0gJy8nKTsKLSAgICByZXR1cm4g
VVJMKG1fYmFzZVdlYlNvY2tldFVSTCwgcGF0aCArIDEpLnN0cmluZygpLnV0ZjgoKTsgLy8gSWdu
b3JlIHRoZSBsZWFkaW5nIHNsYXNoLgorICAgIHJldHVybiBVUkwobV9iYXNlV2ViU29ja2V0VVJM
LCBTdHJpbmcgeyBwYXRoICsgMSB9KS5zdHJpbmcoKS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVh
ZGluZyBzbGFzaC4KIH0KIAogQ1N0cmluZyBXZWJLaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQYXRo
KGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VVUkwsIHBh
dGgpLnN0cmluZygpLnV0ZjgoKTsKKyAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgU3RyaW5nIHsg
cGF0aCB9KS5zdHJpbmcoKS51dGY4KCk7CiB9CiAKIHVuc2lnbmVkIFdlYktpdFRlc3RTZXJ2ZXI6
OnBvcnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVy
cmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250
ZW50TW9kZS5tbQppbmRleCBmMjJjMzcyMjc5Njk0NGI1NmZhZjQ1YzgwNTBkNzQ0ZGI4NmEyOWY0
Li45ODVkNDkxNWM2YWI5MWYzM2NhOTA0MTc4YzNjNWQ0ZDQxMTQwYjkyIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2
OSw3IEBAIEBlbmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFZpZXdDbGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZl
cnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRp
b25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJ
IiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3
Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXRO
YXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29u
dGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFr
ZSgxMDI0LCA3NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50
TW9kZSkKQEAgLTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xh
c3M+LCBSZXRhaW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZp
ZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRN
b2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBs
aWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6
ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNz
PiwgUmV0YWluUHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3
Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9k
ZT4gZGVmYXVsdENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6
ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVn
YXRlPFZpZXdDbGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQsIHNpemUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0Nv
bnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcy
LDcgQEAgVEVTVChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0
VmFyaW91c1ZpZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFk
VXNlckludGVyZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2Vi
Vmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVz
dFdlYktpdEFQSSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVd
ID0gc2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4o
eyB9LCB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpX
S0NvbnRlbnRNb2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAg
W1t3ZWJWaWV3IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3pp
bGxhLzUuMCAoTWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcg
KzQxOSw3IEBAIFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRl
c2t0b3BVc2VyQWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRo
ZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBN
b2JpbGUvMTVFMTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdl
YlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRN
b2RlRGVza3RvcCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcs
IGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxX
S1dlYlZpZXc+KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwog
ICAgICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURl
Y2lzaW9uSGFuZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZp
ZXcgbmF2aWdhdG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBj
b250YWluc1N0cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJp
bGl0eVVJRWxlbWVudEF0c3BpLmNwcAppbmRleCA4Y2QyMmU0ZDM3MmE1OWM2ODczOTYyOGJiZTll
YjU4ZjVlYzE3YzM2Li44OTVmMmU2OTkwMzU3MmM2NzhjN2E2MjU3MmQyMmM3MWVkYTgxNjc5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdHNwaS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBA
IC0zOTgsMTggKzM5OCwxOCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZQogICAgIG1fZWxlbWVu
dC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50
LT5hdHRyaWJ1dGVzKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYUGxhY2Vob2xkZXJW
YWx1ZSIpCi0gICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0
ZXMuZ2V0KCJwbGFjZWhvbGRlci10ZXh0IikpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQoInBsYWNlaG9sZGVyLXRleHQi
X3MpKS5sZWFrUmVmKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW52YWxpZCIpIHsK
ICAgICAgICAgYXV0byB0ZXh0QXR0cmlidXRlcyA9IG1fZWxlbWVudC0+dGV4dEF0dHJpYnV0ZXMo
KTsKLSAgICAgICAgYXV0byB2YWx1ZSA9IHRleHRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMuZ2V0KCJp
bnZhbGlkIik7CisgICAgICAgIGF1dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVz
LmdldCgiaW52YWxpZCJfcyk7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICB2YWx1ZSA9IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6
QXRzcGk6OlN0YXRlOjpJbnZhbGlkRW50cnkpID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAg
ICAgIHZhbHVlID0gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LmdldCgpLCBXZWJDb3JlOjpB
dHNwaTo6U3RhdGU6OkludmFsaWRFbnRyeSkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfczsKICAgICAg
ICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKICAg
ICB9CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUxpdmUiKQotICAgICAgICByZXR1
cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSIpKS5sZWFr
UmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0
ZXMuZ2V0KCJsaXZlIl9zKSkubGVha1JlZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJB
WEFSSUFSZWxldmFudCIpCi0gICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBP
cGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCJfcykpLmxl
YWtSZWYoKTsKIAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxw
dHIsIDApOwogfQpAQCAtNDIwLDIxICs0MjAsMjEgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBt
X2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1f
ZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFT
ZXRTaXplIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIikudG9Eb3Vi
bGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIl9zKS50b0RvdWJs
ZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAg
IHJldHVybiBhdHRyaWJ1dGVzLmdldCgicG9zaW5zZXQiKS50b0RvdWJsZSgpOworICAgICAgICBy
ZXR1cm4gYXR0cmlidXRlcy5nZXQoInBvc2luc2V0Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1bW5Db3VudCIpCi0gICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzLmdldCgiY29sY291bnQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmli
dXRlcy5nZXQoImNvbGNvdW50Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEFSSUFSb3dDb3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93
Y291bnQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2Nv
dW50Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1
bW5JbmRleCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29saW5kZXgiKS50b0Rv
dWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGluZGV4Il9zKS50b0Rv
dWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dJbmRleCIpCi0gICAg
ICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93aW5kZXgiKS50b0RvdWJsZSgpOworICAgICAg
ICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2luZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1bW5TcGFuIikKLSAgICAgICAgcmV0dXJuIGF0
dHJpYnV0ZXMuZ2V0KCJjb2xzcGFuIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJp
YnV0ZXMuZ2V0KCJjb2xzcGFuIl9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1l
ID09ICJBWEFSSUFSb3dTcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dz
cGFuIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFu
Il9zKS50b0RvdWJsZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NDIsOCArNDQyLDggQEAg
ZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3Ry
aW5nUmVmIGF0dHJpYnV0ZSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjdXJyZW50U3RhdGVWYWx1ZSgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBhdXRvIHZhbHVlID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJjdXJyZW50Iik7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUoIXZhbHVlLmlzTnVsbCgpID8gdmFsdWUgOiAiZmFsc2UiKS5sZWFrUmVmKCk7CisgICAgYXV0
byB2YWx1ZSA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCJfcyk7CisgICAg
cmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVlLmlzTnVsbCgpID8gdmFsdWUg
OiAiZmFsc2UiX3MpLmxlYWtSZWYoKTsKIH0KIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0
ZSkgY29uc3QKQEAgLTUxNCw3ICs1MTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmJvb2xBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0dHJp
YnV0ZU5hbWUgPT0gIkFYSW50ZXJmYWNlVGFibGVDZWxsIikKICAgICAgICAgcmV0dXJuIG1fZWxl
bWVudC0+aW50ZXJmYWNlcygpLmNvbnRhaW5zKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RB
dHNwaTo6SW50ZXJmYWNlOjpUYWJsZUNlbGwpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJB
WEFSSUFBdG9taWMiKQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0
KCJhdG9taWMiKSA9PSAidHJ1ZSI7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0
ZXMoKS5nZXQoImF0b21pYyJfcykgPT0gInRydWUiOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpA
QCAtNTM2LDcgKzUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1
dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgU3Ry
aW5nIGlzUmVhZE9ubHkgPSBhdHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiKTsKKyAgICBTdHJpbmcg
aXNSZWFkT25seSA9IGF0dHJpYnV0ZXMuZ2V0KCJyZWFkb25seSJfcyk7CiAgICAgaWYgKCFpc1Jl
YWRPbmx5LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGlzUmVhZE9ubHkgPT0gInRydWUiID8g
ZmFsc2UgOiB0cnVlOwogCkBAIC01NzMsMTcgKzU3MywxNyBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAg
ICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9
IG1fZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFS
SUFTZXRTaXplIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUi
KTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUiX3MpOwogICAg
IGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVzLmNvbnRhaW5zKCJwb3NpbnNldCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRl
cy5jb250YWlucygicG9zaW5zZXQiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFS
SUFMaXZlIikgewotICAgICAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlcy5nZXQoImxpdmUiKTsK
KyAgICAgICAgYXV0byB2YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIl9zKTsKICAgICAgICAg
cmV0dXJuICF2YWx1ZS5pc0VtcHR5KCkgJiYgdmFsdWUgIT0gIm9mZiI7CiAgICAgfQogICAgIGlm
IChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSZWxldmFudCIpCi0gICAgICAgIHJldHVybiBhdHRy
aWJ1dGVzLmNvbnRhaW5zKCJyZWxldmFudCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5j
b250YWlucygicmVsZXZhbnQiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFB
dG9taWMiKQotICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIik7Cisg
ICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJhdG9taWMiX3MpOwogICAgIGlmIChh
dHRyaWJ1dGVOYW1lID09ICJBWEVsZW1lbnRCdXN5IikKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
QEAgLTU5OCwyNyArNTk4LDI3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQogc3RhdGljIFN0cmlu
ZyB4bWxSb2xlVmFsdWVTdHJpbmcoY29uc3QgU3RyaW5nJiB4bWxSb2xlcykKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4+IHJlZ2lvblJvbGVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4oewotICAgICAgICAiZG9jLWFja25vd2xlZGdtZW50cyIsCi0gICAgICAgICJkb2MtYWZ0ZXJ3
b3JkIiwKLSAgICAgICAgImRvYy1hcHBlbmRpeCIsCi0gICAgICAgICJkb2MtYmlibGlvZ3JhcGh5
IiwKLSAgICAgICAgImRvYy1jaGFwdGVyIiwKLSAgICAgICAgImRvYy1jb25jbHVzaW9uIiwKLSAg
ICAgICAgImRvYy1jcmVkaXRzIiwKLSAgICAgICAgImRvYy1lbmRub3RlcyIsCi0gICAgICAgICJk
b2MtZXBpbG9ndWUiLAotICAgICAgICAiZG9jLWVycmF0YSIsCi0gICAgICAgICJkb2MtZm9yZXdv
cmQiLAotICAgICAgICAiZG9jLWdsb3NzYXJ5IiwKLSAgICAgICAgImRvYy1nbG9zc3JlZiIsCi0g
ICAgICAgICJkb2MtaW5kZXgiLAotICAgICAgICAiZG9jLWludHJvZHVjdGlvbiIsCi0gICAgICAg
ICJkb2MtcGFnZWxpc3QiLAotICAgICAgICAiZG9jLXBhcnQiLAotICAgICAgICAiZG9jLXByZWZh
Y2UiLAotICAgICAgICAiZG9jLXByb2xvZ3VlIiwKLSAgICAgICAgImRvYy10b2MiLAotICAgICAg
ICAicmVnaW9uIgorICAgICAgICAiZG9jLWFja25vd2xlZGdtZW50cyJfcywKKyAgICAgICAgImRv
Yy1hZnRlcndvcmQiX3MsCisgICAgICAgICJkb2MtYXBwZW5kaXgiX3MsCisgICAgICAgICJkb2Mt
YmlibGlvZ3JhcGh5Il9zLAorICAgICAgICAiZG9jLWNoYXB0ZXIiX3MsCisgICAgICAgICJkb2Mt
Y29uY2x1c2lvbiJfcywKKyAgICAgICAgImRvYy1jcmVkaXRzIl9zLAorICAgICAgICAiZG9jLWVu
ZG5vdGVzIl9zLAorICAgICAgICAiZG9jLWVwaWxvZ3VlIl9zLAorICAgICAgICAiZG9jLWVycmF0
YSJfcywKKyAgICAgICAgImRvYy1mb3Jld29yZCJfcywKKyAgICAgICAgImRvYy1nbG9zc2FyeSJf
cywKKyAgICAgICAgImRvYy1nbG9zc3JlZiJfcywKKyAgICAgICAgImRvYy1pbmRleCJfcywKKyAg
ICAgICAgImRvYy1pbnRyb2R1Y3Rpb24iX3MsCisgICAgICAgICJkb2MtcGFnZWxpc3QiX3MsCisg
ICAgICAgICJkb2MtcGFydCJfcywKKyAgICAgICAgImRvYy1wcmVmYWNlIl9zLAorICAgICAgICAi
ZG9jLXByb2xvZ3VlIl9zLAorICAgICAgICAiZG9jLXRvYyJfcywKKyAgICAgICAgInJlZ2lvbiJf
cwogICAgIH0pOwogCiAgICAgaWYgKHJlZ2lvblJvbGVzLT5jb250YWlucyh4bWxSb2xlcykpCkBA
IC03NjIsNyArNzYyLDcgQEAgc3RhdGljIFN0cmluZyByb2xlVmFsdWVUb1N0cmluZyh1bnNpZ25l
ZCByb2xlVmFsdWUpCiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2Nyb2xsQmFyOgog
ICAgICAgICByZXR1cm4gIkFYU2Nyb2xsQmFyIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6
OlJvbGU6OlNjcm9sbFBhbmU6Ci0gICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIjsKKyAgICAg
ICAgcmV0dXJuICJBWFNjcm9sbEFyZWEiX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9s
ZTo6U2VjdGlvbjoKICAgICAgICAgcmV0dXJuICJBWFNlY3Rpb24iX3M7CiAgICAgY2FzZSBXZWJD
b3JlOjpBdHNwaTo6Um9sZTo6U2VwYXJhdG9yOgpAQCAtODE3LDcgKzgxNyw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKIHsKICAgICBt
X2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gcm9sZVZhbHVlID0gbV9l
bGVtZW50LT5yb2xlKCk7Ci0gICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0g
V2ViQ29yZTo6QXRzcGk6OlJvbGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxl
bWVudC0+YXR0cmlidXRlcygpLmdldCgieG1sLXJvbGVzIikpIDogcm9sZVZhbHVlVG9TdHJpbmco
cm9sZVZhbHVlKTsKKyAgICBhdXRvIHJvbGVWYWx1ZVN0cmluZyA9IHJvbGVWYWx1ZSA9PSBXZWJD
b3JlOjpBdHNwaTo6Um9sZTo6TGFuZG1hcmsgPyB4bWxSb2xlVmFsdWVTdHJpbmcobV9lbGVtZW50
LT5hdHRyaWJ1dGVzKCkuZ2V0KCJ4bWwtcm9sZXMiX3MpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJv
bGVWYWx1ZSk7CiAgICAgaWYgKHJvbGVWYWx1ZVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCkBAIC04MzIs
MTQgKzgzMiwxNCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c3Vicm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwotICAgIGF1dG8gcm9sZURlc2NyaXB0aW9uID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJyb2xlZGVzY3JpcHRpb24iKTsKKyAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9
IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9uIl9zKTsKICAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtYWtlU3RyaW5nKCJBWFJvbGVEZXNjcmlw
dGlvbjogIiwgcm9sZURlc2NyaXB0aW9uKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkK
IHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gY29tcHV0
ZWRSb2xlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIik7Cisg
ICAgYXV0byBjb21wdXRlZFJvbGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImNvbXB1
dGVkLXJvbGUiX3MpOwogICAgIGlmIChjb21wdXRlZFJvbGUuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtOTcy
LDcgKzk3Miw3IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNv
bnN0CiAKICAgICAvLyBDb25zaWRlciBoZWFkaW5ncyBhcyBhbiBzcGVjaWFsIGNhc2Ugd2hlbiBy
ZXR1cm5pbmcgdGhlIGludCB2YWx1ZS4KICAgICBpZiAobV9lbGVtZW50LT5yb2xlKCkgPT0gV2Vi
Q29yZTo6QXRzcGk6OlJvbGU6OkhlYWRpbmcpCi0gICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKS5nZXQoImxldmVsIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIG1fZWxl
bWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2ZWwiX3MpLnRvRG91YmxlKCk7CiAKICAgICByZXR1
cm4gMDsKIH0KQEAgLTk5OSw3ICs5OTksNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50
LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQt
PmF0dHJpYnV0ZXMoKTsKLSAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2Ny
aXB0aW9uOiAiLCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0IikpOworICAgIGF1dG8gdmFsdWUg
PSBtYWtlU3RyaW5nKCJBWFZhbHVlRGVzY3JpcHRpb246ICIsIGF0dHJpYnV0ZXMuZ2V0KCJ2YWx1
ZXRleHQiX3MpKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh2YWx1ZSku
bGVha1JlZigpOwogfQogCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7Ci0gICAgYXV0byBsZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygp
LmdldCgibGV2ZWwiKTsKKyAgICBhdXRvIGxldmVsID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCku
Z2V0KCJsZXZlbCJfcyk7CiAgICAgaWYgKGxldmVsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKQEAgLTEwOTEsMTMgKzEwOTEsMTMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrQXMoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tp
bmdTdG9yZSgpOwotICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJi
ZWQiKSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgi
Z3JhYmJlZCJfcykgPT0gInRydWUiOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QKIHsKICAgICBtX2Vs
ZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gZHJvcEVmZmVjdHMgPSBtX2Vs
ZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImRyb3BlZmZlY3QiKTsKKyAgICBhdXRvIGRyb3BFZmZl
Y3RzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Il9zKTsKICAgICBp
ZiAoZHJvcEVmZmVjdHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRy
eUNyZWF0ZShkcm9wRWZmZWN0cykubGVha1JlZigpOwpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5j
b2RpbmcoKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxs
cHRyLCAwKTsKIAogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0
dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0
ZSgiRW5jb2RpbmciKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIl9zKSkubGVha1Jl
ZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6ZG9jdW1lbnRVUkkoKQpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKICAgICAgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2Vs
ZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6
dHJ5Q3JlYXRlKG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSIpKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVu
dEF0dHJpYnV0ZSgiVVJJIl9zKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDAzNjY1MmVj
Mzg5OTlmNWYxM2JhZjAwZTZjNWM5MGFhOTQ2NjI3M2EuLjJhODg1MjcxNGFlZmYxYTIxOWQxN2Rh
NTJmOGU1N2U3ZWI2NWU5MTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3Rr
L1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9n
dGsvVUlTY3JpcHRDb250cm9sbGVyR3RrLmNwcApAQCAtMTg1LDExICsxODUsMTEgQEAgc3RhdGlj
IFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdChHVmFyaWFudCogdmFyaWFudCkKICAgICB3
aGlsZSAoZ192YXJpYW50X2l0ZXJfbG9vcCgmaXRlciwgInsmc3Z9IiwgJmtleSwgJnZhbHVlKSkg
ewogICAgICAgICBjb25zdCBHVmFyaWFudFR5cGUqIHR5cGUgPSBnX3ZhcmlhbnRfZ2V0X3R5cGUo
dmFsdWUpOwogICAgICAgICBpZiAodHlwZSAmJiBnX3ZhcmlhbnRfdHlwZV9lcXVhbCh0eXBlLCBH
X1ZBUklBTlRfVFlQRV9WQVJESUNUKSkKLSAgICAgICAgICAgIGpzb25PYmplY3QtPnNldE9iamVj
dChrZXksIHRvSlNPTk9iamVjdCh2YWx1ZSkpOworICAgICAgICAgICAganNvbk9iamVjdC0+c2V0
T2JqZWN0KFN0cmluZyB7IGtleSB9LCB0b0pTT05PYmplY3QodmFsdWUpKTsKICAgICAgICAgZWxz
ZSBpZiAodHlwZSAmJiBnX3ZhcmlhbnRfdHlwZV9lcXVhbCh0eXBlLCBHX1ZBUklBTlRfVFlQRV9T
VFJJTkcpKQotICAgICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKGtleSwgZ192YXJpYW50
X2dldF9zdHJpbmcodmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIGpzb25PYmplY3QtPnNl
dFN0cmluZyhTdHJpbmcgeyBrZXkgfSwgU3RyaW5nIHsgZ192YXJpYW50X2dldF9zdHJpbmcodmFs
dWUsIG51bGxwdHIpIH0pOwogICAgICAgICBlbHNlIGlmICh0eXBlICYmIGdfdmFyaWFudF90eXBl
X2VxdWFsKHR5cGUsIEdfVkFSSUFOVF9UWVBFX0RPVUJMRSkpCi0gICAgICAgICAgICBqc29uT2Jq
ZWN0LT5zZXREb3VibGUoa2V5LCBnX3ZhcmlhbnRfZ2V0X2RvdWJsZSh2YWx1ZSkpOworICAgICAg
ICAgICAganNvbk9iamVjdC0+c2V0RG91YmxlKFN0cmluZyB7IGtleSB9LCBnX3ZhcmlhbnRfZ2V0
X2RvdWJsZSh2YWx1ZSkpOwogICAgIH0KICAgICByZXR1cm4ganNvbk9iamVjdDsKIH0KZGlmZiAt
LWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzZhODMxMGIyZWZjN2I2
ZWQyMDVhYjhmMWIyNDBiLi5jZjEzMWFlYmEwYWUzODY4OTM3ODM4NjBlZGZjODQxNTI0ZTE3ODhj
IDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIv
VG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0
YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxl
PFN0cmluZyosIHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVl
IHsgJmFuOEJpdFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcq
LCBib29sPiBleGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3Ry
aW5nLCB0cnVlIH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBs
ZS5jb20iKTsKKyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAg
ICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456714</attachid>
            <date>2022-04-05 10:09:08 -0700</date>
            <delta_ts>2022-04-05 11:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238693-20220405100907.patch</filename>
            <type>text/plain</type>
            <size>415733</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2E2MDYwN2UwYzM2ZDYyZWYzYjU5ZDZkNzhlNzhkZmYxOWI0ZjE4Li40MWZhNTE2NzY2NGRhOWY0
YTBlZTJjNWNjZTcxZTVmYThlZGY5MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNp
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4Njkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBBUEkv
Z2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAgICAgKGpzY19jb250ZXh0X2NoZWNrX3N5bnRheCk6
CisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yU29ja2V0
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6UmVtb3RlSW5zcGVjdG9yOjpzdGFydEF1dG9tYXRp
b25TZXNzaW9uKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OX1dJVEhfQVRUUklCVVRFUyk6CisKIDIwMjItMDQt
MDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBS
ZWR1Y2Ugc2l6ZW9mKEJhc2VsaW5lQ2FsbExpbmtJbmZvKSB0byBtYWtlIGJ1ZyAyMzg1MzUgZ29v
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCAyY2Q5NzFiZjUzMDkyMDQ0MDQwYThlZDZlNTlkOGJlNTU2NDRkNDgxLi5kYjVkZjY3
ZmFjMDgzNDI3NTRjMGM2NWUzMzhkNTljZWIzYWI5YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDIyLTA0LTA1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTWFy
ayBTdHJpbmcoY29uc3QgY2hhciopIGNvbnN0cnVjdG9yIGFzIGV4cGxpY2l0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg2OTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmNw
cDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmZpbGVzSGF2ZVNhbWVWb2x1bWUpOgor
ICAgICAgICAqIHd0Zi9GaWxlU3lzdGVtLmg6CisgICAgICAgICogd3RmL2dsaWIvRmlsZVN5c3Rl
bUdsaWIuY3BwOgorICAgICAgICAoV1RGOjpGaWxlU3lzdGVtSW1wbDo6Z2V0RmlsZURldmljZUlk
KToKKyAgICAgICAgKiB3dGYvcG9zaXgvRmlsZVN5c3RlbVBPU0lYLmNwcDoKKyAgICAgICAgKFdU
Rjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVEZXZpY2VJZCk6CisgICAgICAgICogd3RmL3RleHQv
V1RGU3RyaW5nLmg6CisgICAgICAgICogd3RmL3VuaXgvTG9nZ2luZ1VuaXguY3BwOgorICAgICAg
ICAoV1RGOjpsb2dMZXZlbFN0cmluZyk6CisgICAgICAgICogd3RmL3dpbi9GaWxlU3lzdGVtV2lu
LmNwcDoKKyAgICAgICAgKFdURjo6RmlsZVN5c3RlbUltcGw6OmdldEZpbGVEZXZpY2VJZCk6Cisg
ICAgICAgICogd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHA6CisgICAgICAgIChXVEY6OnBsYXRmb3Jt
TGFuZ3VhZ2UpOgorCiAyMDIyLTA0LTA1ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbVW5peF0gQWRkIFVuaXhGaWxlRGVzY3JpcHRvciwgdXNlIGl0IGlu
IElQQzo6U2VtYXBob3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA0OWUxYmI4NjA5NTVmNDEzYWE3MjU4MjQ1
NGYwYzE1ZjQyMWMyYS4uMDI2NWUxZGNmY2YzZTk2MTk2NDgwMTc4ZWMyNDZkNTY2ZDUwMmVjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1MiBAQAorMjAyMi0wNC0wNSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0IGNoYXIqKSBjb25z
dHJ1Y3RvciBhcyBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZldGNoRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6c3RvcmVSZW1vdGVNTGluZUlu
Zm8pOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2Fu
ZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0
ZVNlc3Npb25EZXNjcmlwdGlvblN1Y2NlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJNZWRpYUVuZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25GYWlsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRwb2ludDo6Y29sbGVjdFRyYW5zY2VpdmVycyk6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdzdHJlYW1lclJ0cENhcGF0
aWJsaXRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNr
ZW5kOjpkb0NyZWF0ZUFuc3dlcik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6bWlkKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxlY3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpmaWxsUlRDU3RhdHMpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbFJU
Q1JUUFN0cmVhbVN0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxPdXRib3VuZFJUUFN0cmVh
bVN0YXRzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJXZWJSVENVdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1JUQ0Vycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OnRvUlRDRW5jb2RpbmdQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnhyL1dlYlhST3BhcXVlRnJhbWVidWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJPcGFxdWVGcmFtZWJ1ZmZlcjo6c2V0dXBGcmFtZWJ1ZmZlcik6CisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eU9iamVjdEF0c3BpOjphdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6ZWZmZWN0aXZlUm9sZU5hbWUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb2xlTmFtZSBjb25zdCk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3Bp
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0
dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJp
bGl0eVJvb3RBdHNwaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5Um9vdEF0
c3BpOjplbWJlZGRlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNo
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBs
YXRmb3JtTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZv
cm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVySU9TLm1tOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5U2Nyb2xsOl0pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAqIGVkaXRpbmcvZ3RrL1dlYkNvbnRl
bnRSZWFkZXJHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6cmVh
ZEZpbGVQYXRoKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1MubW06CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNldFRleHRBbGlnbm1lbnRGb3JDaGFuZ2VkQmFzZVdyaXRpbmdE
aXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVT
dHlsZXMpOgorICAgICAgICAqIGVkaXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
VVJMPjo6dG9TdHJpbmcpOgorICAgICAgICAqIGh0bWwvT2Zmc2NyZWVuQ2FudmFzLmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YSk6CisgICAgICAgICogbG9hZGVyL3NvdXAvUmVz
b3VyY2VMb2FkZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjps
b2FkR1Jlc291cmNlKToKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKToKKyAgICAgICAgKiBwYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6dmFsdWVGb3JTZXR0aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KToK
KyAgICAgICAgKiBwYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2V0dGluZ3NCYXNlOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1pbGllcyk6CisgICAg
ICAgICogcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9Vc2Vy
QWdlbnQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5h
dGlvbkdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uR1N0
cmVhbWVyOjpBdWRpb0Rlc3RpbmF0aW9uR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
bGliL1VzZXJBZ2VudEdMaWIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1WZXJzaW9u
Rm9yVUFTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMQU5HTEU6OnZhbGlkYXRlRGVwdGhT
dGVuY2lsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRl
eHRHTEFOR0xFLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHA6CisgICAgICAgIChwcmludENvbG9yKToKKyAgICAgICAgKHByaW50TGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9C
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kOjp0
b0RhdGFVUkwgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEZhbWlseU5hbWVTdHJp
bmdGcm9tRmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9UcmFj
a1ByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZUNvbmZpZ3VyYXRpb25Gcm9tQ2Fwcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZUdzdFN0cnVjdHVyZVZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudEZhY3Rvcmllczo6
aGFzRWxlbWVudEZvck1lZGlhVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHU3RyZWFt
ZXJSZWdpc3RyeVNjYW5uZXI6OmluaXRpYWxpemVEZWNvZGVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlv
U2luayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhh
bmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb25maWd1cmVEb3dubG9hZEJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmRvd25sb2FkQnVmZmVy
RmlsZUNyZWF0ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OmxvYWROZXh0TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVHU1RQbGF5QmluKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFyc2VJbml0RGF0YUZyb21Qcm90ZWN0
aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6OmhhbmRsZVByb3RlY3Rpb25FdmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYWNrUHJpdmF0ZUJhc2VHU3RyZWFtZXI6OmdldExhbmd1YWdlQ29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyOjpnZXRUYWcp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb0ZyYW1lTWV0YWRh
dGFHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0R3N0VHJhY2VQcm9jZXNzaW5nVGltZUZv
ckVsZW1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1Ry
YWNrUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb1RyYWNrUHJp
dmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmlndXJhdGlvbkZyb21DYXBzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKHdlYktpdFdlYlNyY1NldEV4dHJhSGVhZGVyKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY01ha2VSZXF1ZXN0KToKKyAgICAgICAgKGNvbnZlcnRQbGF5YmluVVJJKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGVuZFBpcGVsaW5lOjpwYXJzZURlbXV4ZXJTcmNQYWRDYXBzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lck1TRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0U6OmxvYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uc0dM
T3BlbkdMOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnNHTE9wZW5HTDo6aXNWZXJ0ZXhBcnJheU9iamVjdFN1cHBvcnRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zR0xPcGVuR0xDb21tb246OmdldFRyYW5zbGF0
ZWRTaGFkZXJTb3VyY2VBTkdMRSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnNH
TE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2lsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0xCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlQXR0cmlidXRlcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFO
R0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBl
ckFOR0xFOjpwbGF0Zm9ybUluaXRpYWxpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1cmVNYXBw
ZXJGUFNDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpkdW1wQWRkaXRpb25hbFBy
b3BlcnRpZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckNvcHlBbmRQYXN0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpjcmVhdGVGb3JHbG9iYWxTZWxlY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjprZXlJZGVudGlmaWVyRm9y
R2RrS2V5Q29kZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpuYW1lT2ZEcmFnUGFzdGVib2FyZCk6CisgICAg
ICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9z
TmFtZUZvclVzZXJBZ2VudCk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tOgorICAgICAgICAoVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6On5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCk6CisgICAgICAgICogcGxhdGZvcm0v
bGlid3BlL1Bhc3RlYm9hcmRMaWJXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6CisgICAgICAgICogcGxhdGZv
cm0vbGlid3BlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudExpYldQRS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlDb2RlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlR1N0
cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVh
bWVyOjpjb250YWluZXJQcm9maWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TUlNRUhlYWRlcjo6cGFyc2VIZWFkZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6UmVzb3VyY2VFcnJvcik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6dmVyaWZpY2F0aW9uRXJyb3JEZXNjcmlwdGlvbiBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZUphckRCOjpzZWFyY2hDb29raWVzKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVVdGlsOjpkZWZhdWx0UGF0aEZvclVSTCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxDYWNo
ZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsQ2FjaGVFbnRy
eTo6c2F2ZVJlc3BvbnNlSGVhZGVycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdl
cjo6c2V0Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybENhY2hlTWFuYWdl
cjo6c2F2ZUluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRl
eHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDdXJsSGFuZGxlOjpyZW1vdmVSZXF1ZXN0SGVhZGVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OnNldHVwUFVUKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0Ojpz
ZXR1cFNlbmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291
cmNlSGFuZGxlRGVsZWdhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmRlZmF1bHRDb29raWVKYXJQYXRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvT3BlblNTTEhlbHBlci5jcHA6CisgICAgICAgIChPcGVuU1NMOjp0bHNWZXJzaW9uKToK
KyAgICAgICAgKE9wZW5TU0w6OnRsc0NpcGhlck5hbWUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW5JbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jl
c291cmNlUmVzcG9uc2VDdXJsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2U6OlJlc291cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL0xl
Z2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVByZXZp
ZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZCk6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNDb29raWVzIGNvbnN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcjo6YXV0aGVudGljYXRpb25FcnJvcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yOjpnZW5lcmljR0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OnRsc0Vycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OnRp
bWVvdXRFcnJvcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2VTb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OlJlc291
cmNlUmVzcG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvaHlwaGVuL0h5cGhlbmF0aW9u
TGliSHlwaGVuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjYW5EaXJlY3RvcnlGb3JEaWN0aW9u
YXJpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhbGVXaW46OmluaXRpYWxpemVMb2NhbGVEYXRhKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRl
bnRpZmllckZvcldpbmRvd3NLZXlDb2RlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTG9jYWxp
emVkU3RyaW5nc1dpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGxvYWRGaWxlVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjphbGxGaWxlc1RleHQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9N
SU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0
cnk6Om1pbWVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVi
b2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGRNaW1lVHlwZXNGb3JGb3JtYXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXNTYWZlRm9yQmluZGluZ3MpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
Ojp3cml0ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0
YU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUds
b2JhbEltYWdlRmlsZURlc2NyaXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
d3JpdGVNYXJrdXApOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Om9zVmVyc2lvbkZvclVBU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OmFyY2hpdGVjdHVyZVRva2VuRm9yVUFTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3hyL29w
ZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpidXR0b25U
eXBlVG9TdHJpbmcpOgorICAgICAgICAoUGxhdGZvcm1YUjo6YXhpc1R5cGV0b1N0cmluZyk6Cisg
ICAgICAgICogcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmg6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpoYW5kZW5lc3NUb1N0cmluZyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRl
KToKKwogMjAyMi0wNC0wNSAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNv
bT4KIAogICAgICAgICBbbWFjT1NdW3NlbGVjdG9yc10gOmZvY3VzLXZpc2libGUgbWF0Y2hpbmcg
b24gYnV0dG9uIGZvY3VzZWQgdmlhIHNjcmlwdCAoYWZ0ZXIgY2xpY2tpbmcgb24gYSBkaWZmZXJl
bnQgYnV0dG9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggODA5MzVkZmFmYWE2ZTRjYTI1NTdlNjBm
OGU0M2QyMTA2ODI4OTNhOC4uNWNmMTZhY2IwZGUzYTBmOTE0OTg0MTg0YzA3MWEzNzE3MTE0NmNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDQtMDUgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBj
aGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLgorCisgICAgICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFk
YXB0ZXJJbXBsLmNwcDoKKyAgICAgICAgKFBBTDo6V2ViR1BVOjphZGFwdGVyTmFtZSk6CisgICAg
ICAgICogcGFsL2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwOgorICAg
ICAgICAoUEFMOjpXZWJHUFU6OkRldmljZUltcGw6OnBvcEVycm9yU2NvcGUpOgorCiAyMDIyLTA0
LTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gQWRkIGhlbHBlciBtZXRob2RzIHRvIGluc3RhbGwgYW5kIHVuaW5zdGFsbCBWS0NJbWFn
ZUFuYWx5c2lzT3ZlcmxheVZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKaW5kZXggNTZmOWY4NWY1YjY2NTlkZjQ2
YWM1NjFiNTBhOGIwMjBjMzQ4ZmY5MS4uZjI3OGMxNTI5ZDIzNWZhY2EwOWVkOTNhOTNjYWE3N2U4
YThmNjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wNC0wNSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU3RyaW5nKGNvbnN0
IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2Vv
ZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBDb21tYW5kUmVzdWx0LmNwcDoKKyAgICAgICAgKFdl
YkRyaXZlcjo6Q29tbWFuZFJlc3VsdDo6Q29tbWFuZFJlc3VsdCk6CisgICAgICAgICogU2Vzc2lv
bi5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OlNlc3Npb246OmhhbmRsZVVzZXJQcm9tcHRzKToK
KyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lvbjo6Z2V0Q3VycmVudFVSTCk6CisgICAgICAgIChX
ZWJEcml2ZXI6OlNlc3Npb246OnNldFdpbmRvd1JlY3QpOgorICAgICAgICAoV2ViRHJpdmVyOjpT
ZXNzaW9uOjplbGVtZW50SXNGaWxlVXBsb2FkKToKKyAgICAgICAgKFdlYkRyaXZlcjo6U2Vzc2lv
bjo6ZWxlbWVudElzRWRpdGFibGUpOgorICAgICAgICAoV2ViRHJpdmVyOjpTZXNzaW9uOjplbGVt
ZW50U2VuZEtleXMpOgorICAgICAgICAoV2ViRHJpdmVyOjpidWlsdEF1dG9tYXRpb25Db29raWUp
OgorICAgICAgICAoV2ViRHJpdmVyOjphdXRvbWF0aW9uU291cmNlVHlwZSk6CisgICAgICAgIChX
ZWJEcml2ZXI6OmF1dG9tYXRpb25PcmlnaW5UeXBlKToKKyAgICAgICAgKiBXZWJEcml2ZXJTZXJ2
aWNlLmNwcDoKKyAgICAgICAgKFdlYkRyaXZlcjo6V2ViRHJpdmVyU2VydmljZTo6cnVuKToKKyAg
ICAgICAgKFdlYkRyaXZlcjo6ZGVzZXJpYWxpemVQcm94eSk6CisgICAgICAgIChXZWJEcml2ZXI6
OldlYkRyaXZlclNlcnZpY2U6OmNyZWF0ZVNlc3Npb24pOgorICAgICAgICAqIHNvY2tldC9DYXBh
YmlsaXRpZXNTb2NrZXQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpDYXBhYmlsaXRpZXNTb2Nr
ZXQ6OnBhcnNlQ2FwYWJpbGl0aWVzKToKKyAgICAgICAgKiBzb2NrZXQvSFRUUFNlcnZlclNvY2tl
dC5jcHA6CisgICAgICAgIChXZWJEcml2ZXI6OkhUVFBSZXF1ZXN0SGFuZGxlcjo6ZGlkUmVjZWl2
ZSk6CisKIDIwMjItMDMtMzEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4K
IAogICAgICAgICBbUGxheVN0YXRpb25dIEVuYWJsZSBXZWJEcml2ZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKaW5kZXggY2Vk
MjU0ZDdmNzFlODBkNzc0MjgxYzRhNjExY2ViMmNkZDNjNGQ1My4uODBlOTI0ZGE5MGZjMmFhMWFk
ZWIzZGY3ZWZiZTMyNGQ3MDhmYzAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkdQVS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMi0w
NC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIE1hcmsgU3Ry
aW5nKGNvbnN0IGNoYXIqKSBjb25zdHJ1Y3RvciBhcyBleHBsaWNpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NjkzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW06CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJl
KToKKyAgICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIp
OgorICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb1RleHR1cmUp
OgorCiAyMDIyLTA0LTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkdQVV0gRml4IEFwcGxlJ3MgaW50ZXJuYWwgYnVpbGQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5k
ZXggZjRjYmM3MTAxZWZhY2M2YTU1Y2E5NGMwZTdiNzA4NWQ2ZmNiZTc1OC4uNzdlYzZjZWUxNjdi
ZTY4OTUwYTI2NzkxNzdiNTQ1NmZlYWNlYWIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMjAgQEAK
KzIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBN
YXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHN0cmluZ0ZvclNTTFByb3Rv
Y29sKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDdXJsOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0
YVRhc2tTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrU291cDo6Y29u
dGludWVIVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpyZWFkQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tTb3Vw
OjpkaWRSZXF1ZXN0TmV4dFBhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpkb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1NvdXA6Ondy
aXRlRG93bmxvYWRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza1Nv
dXA6OmRpZEZpbmlzaERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
U291cDo6ZGlkR2V0RmlsZUluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tT
b3VwOjpyZWFkRmlsZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
U291cDo6ZW51bWVyYXRlRmlsZUNoaWxkcmVuQ2FsbGJhY2spOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
b2NrZXRUYXNrOjpkaWRDb25uZWN0KToKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVt
b3RlT2JqZWN0Q29kZXIuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW06CisgICAgICAgIChXZWJLaXQ6Om1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRp
YmxlKToKKyAgICAgICAgKGRlY29kZUludm9jYXRpb24pOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Q29jb2EvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkubW06CisgICAgICAgIChyZXBseUJsb2NrU2ln
bmF0dXJlKToKKyAgICAgICAgKC1bX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgX2ludm9rZU1ldGhv
ZDpdKToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHA6Cisg
ICAgICAgICh3ZWJraXRfdXJpX3JlcXVlc3Rfc2V0X3VyaSk6CisgICAgICAgICogU2hhcmVkL2d0
ay9XZWJFcnJvcnNHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpwcmludGVyTm90Rm91bmRFcnJv
cik6CisgICAgICAgIChXZWJLaXQ6OmludmFsaWRQYWdlUmFuZ2VUb1ByaW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAod2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyTmFtZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwOgorICAgICAgICAod2Via2l0X2Ny
ZWRlbnRpYWxfbmV3X2Zvcl9jZXJ0aWZpY2F0ZV9waW4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYktpdFByb3RvY29sSGFuZGxlcjo6aGFuZGxlUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdFNldHRpbmdzLmNwcDoKKyAgICAgICAgKF9XZWJLaXRTZXR0aW5n
c1ByaXZhdGU6Ol9XZWJLaXRTZXR0aW5nc1ByaXZhdGUpOgorICAgICAgICAod2Via2l0X3NldHRp
bmdzX3NldF91c2VyX2FnZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
VVJJU2NoZW1lUmVxdWVzdC5jcHA6CisgICAgICAgICh3ZWJraXRVUklTY2hlbWVSZXF1ZXN0UmVh
ZENhbGxiYWNrKToKKyAgICAgICAgKHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZmluaXNoX2Vy
cm9yKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRyYWdTb3VyY2U6OmJlZ2luKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyb3BUYXJnZXQ6
OkRyb3BUYXJnZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJvcFRhcmdldDo6RHJvcFRhcmdldCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp+
UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
SW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpoYW5kbGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjp0YXJnZXRMaXN0Q2hhbmdlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwOgorICAgICAg
ICAod2Via2l0V2ViVmlld0Jhc2VFbnRlckZ1bGxTY3JlZW4pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvd3BlL1dlYktpdENvbG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb2xvcl9wYXJzZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6bWFsd2FyZURldGFpbHNCYXNlKToKKyAgICAgICAgKFdlYktpdDo6
cmVwb3J0QW5FcnJvckJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2
aWV3Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ3Rr
L1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVXZWJJbnNwZWN0b3JVSVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6OnJlbW90ZUZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayk6
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2ViSW5zcGVjdG9yVUlQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlRnJvbnRlbmRQYWdlKToKKyAgICAgICAgKFdlYktpdDo6ZmlsZVJlcGxhY2VDb250ZW50c0Nh
bGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNw
ZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9u
dGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dl
Ykluc3BlY3RvclVJUHJveHlXaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JV
SVByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNz
L0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
YmluZFN5bWxpbmtzUmVhbFBhdGgpOgorICAgICAgICAoV2ViS2l0OjpidWJibGV3cmFwU3Bhd24p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uOjpXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OnBsYXRmb3JtR2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNz
L2dsaWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrMy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNsaXBib2FyZDo6d3JpdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvQ2xpcGJvYXJkR3RrNC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNsaXBib2FyZDo6d3JpdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvS2V5QmluZGlu
Z1RyYW5zbGF0b3IuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xX
aW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpiYWNrZW5kQ29tbWFuZHNQYXRoKToKKyAgICAgICAg
KiBVSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpX
ZWJWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwOgorICAgICAgICAod2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdl
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9NL1dlYktp
dERPTURvY3VtZW50R3RrLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3Zp
c2liaWxpdHlfc3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3Bl
L1dlYkVkaXRvckNsaWVudFdQRS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmhhbmRsZUtleVByZXNz
KToKKyAgICAgICAgKFdlYktpdDo6aGFuZGxlS2V5RG93bik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZh
U2NyaXB0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUgY29u
c3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25H
dGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50IGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudCk6CisgICAgICAg
ICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJQdXNoRDo6
Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcik6CisKIDIwMjIt
MDQtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UGFzcyBhbiBJT1N1cmZhY2VQb29sIHRvIEltYWdlQnVmZmVyOjpyZWxlYXNlQnVmZmVyVG9Qb29s
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0OWZlZmI3OTRkYzgwNjUyNGRiY2Mx
MDk0MDQwOTkyOTI4NDgzNGRhLi5kMGQwY2RhOTg1NjhkMmJiMWEwMTM1MjgyYWFlMWRlYzdiZjQ3
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjIt
MDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0
cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmll
d2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogRE9NL0RPTS5tbToKKyAgICAgICAg
KC1bRE9NSFRNTExpbmtFbGVtZW50IF9tZWRpYVF1ZXJ5TWF0Y2hlc10pOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5oOgorICAgICAgICAoV2ViRWRpdG9yQ2xpZW50
OjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCk6CisgICAgICAgICog
V2ViVmlldy9XZWJEYXRhU291cmNlLm1tOgorICAgICAgICAoLVtXZWJEYXRhU291cmNlIF9zZXRP
dmVycmlkZVRleHRFbmNvZGluZ05hbWU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJh
bWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDIyLTA0LTA1ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzeXN0ZW0gZmVhdHVy
ZSBmbGFncyBpbXBsZW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCmluZGV4IDM2
Nzg5OWE2MDEwNGMzYWU2OGYzNTMwZTk3MDU4MmM1NDc3MDkyMjYuLmZmM2E4N2MzYTg1MDUxZTUw
YjM1OWI1ZGU1ZmRmYjNhMjE3ZDMxMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNzUgQEAKKzIwMjItMDQtMDUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3IgYXMgZXhw
bGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICog
QWNjZXNzaWJsZUJhc2UuY3BwOgorICAgICAgICAoQWNjZXNzaWJsZUJhc2U6OkFjY2Vzc2libGVC
YXNlKToKKyAgICAgICAgKEFjY2Vzc2libGVCYXNlOjp+QWNjZXNzaWJsZUJhc2UpOgorICAgICAg
ICAqIENGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcDoKKyAgICAgICAgKENGRGljdGlvbmFyeVBy
b3BlcnR5QmFnOjpDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyk6CisgICAgICAgIChDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6fkNGRGljdGlvbmFyeVByb3BlcnR5QmFnKToKKyAgICAgICAgKiBEZWZh
dWx0RG93bmxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChEZWZhdWx0RG93bmxvYWREZWxlZ2F0
ZTo6RGVmYXVsdERvd25sb2FkRGVsZWdhdGUpOgorICAgICAgICAoRGVmYXVsdERvd25sb2FkRGVs
ZWdhdGU6On5EZWZhdWx0RG93bmxvYWREZWxlZ2F0ZSk6CisgICAgICAgICogRGVmYXVsdFBvbGlj
eURlbGVnYXRlLmNwcDoKKyAgICAgICAgKERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6RGVmYXVsdFBv
bGljeURlbGVnYXRlKToKKyAgICAgICAgKERlZmF1bHRQb2xpY3lEZWxlZ2F0ZTo6fkRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgICogTWVtb3J5U3RyZWFtLmNwcDoKKyAgICAgICAgKE1l
bW9yeVN0cmVhbTo6TWVtb3J5U3RyZWFtKToKKyAgICAgICAgKE1lbW9yeVN0cmVhbTo6fk1lbW9y
eVN0cmVhbSk6CisgICAgICAgICogV2ViQWN0aW9uUHJvcGVydHlCYWcuY3BwOgorICAgICAgICAo
V2ViQWN0aW9uUHJvcGVydHlCYWc6OldlYkFjdGlvblByb3BlcnR5QmFnKToKKyAgICAgICAgKFdl
YkFjdGlvblByb3BlcnR5QmFnOjp+V2ViQWN0aW9uUHJvcGVydHlCYWcpOgorICAgICAgICAqIFdl
YkFwcGxpY2F0aW9uQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQXBwbGljYXRpb25DYWNoZTo6V2Vi
QXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjp+V2ViQXBw
bGljYXRpb25DYWNoZSk6CisgICAgICAgIChXZWJBcHBsaWNhdGlvbkNhY2hlOjpzdG9yYWdlKToK
KyAgICAgICAgKiBXZWJBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkFyY2hpdmU6OldlYkFyY2hp
dmUpOgorICAgICAgICAoV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUpOgorICAgICAgICAqIFdlYkJh
Y2tGb3J3YXJkTGlzdC5jcHA6CisgICAgICAgIChXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tG
b3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJCYWNrRm9yd2FyZExpc3Q6On5XZWJCYWNrRm9yd2Fy
ZExpc3QpOgorICAgICAgICAqIFdlYkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNhY2hlOjpXZWJD
YWNoZSk6CisgICAgICAgIChXZWJDYWNoZTo6fldlYkNhY2hlKToKKyAgICAgICAgKiBXZWJDb3Jl
U3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRp
c3RpY3MpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6On5XZWJDb3JlU3RhdGlzdGljcyk6
CisgICAgICAgIChXZWJDb3JlU3RhdGlzdGljczo6amF2YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5
cGVDb3VudHMpOgorICAgICAgICAoV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RU
eXBlQ291bnRzKToKKyAgICAgICAgKFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlTdGF0aXN0aWNz
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViRWRpdG9yQ2xpZW50Ojpkb1RleHRGaWVsZENvbW1hbmRGcm9tRXZlbnQpOgorICAgICAg
ICAqIFdlYkRhdGFTb3VyY2UuY3BwOgorICAgICAgICAoV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFT
b3VyY2UpOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJE
YXRhYmFzZU1hbmFnZXI6OldlYkRhdGFiYXNlTWFuYWdlcik6CisgICAgICAgIChXZWJEYXRhYmFz
ZU1hbmFnZXI6On5XZWJEYXRhYmFzZU1hbmFnZXIpOgorICAgICAgICAqIFdlYkRvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkRvY3VtZW50TG9hZGVyOjpXZWJEb2N1bWVudExvYWRlcik6
CisgICAgICAgIChXZWJEb2N1bWVudExvYWRlcjo6fldlYkRvY3VtZW50TG9hZGVyKToKKyAgICAg
ICAgKiBXZWJEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6V2ViRG93bmxvYWQp
OgorICAgICAgICAoV2ViRG93bmxvYWQ6On5XZWJEb3dubG9hZCk6CisgICAgICAgICogV2ViRG93
bmxvYWRDRk5ldC5jcHA6CisgICAgICAgIChXZWJEb3dubG9hZDo6Y2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpOgorICAgICAgICAqIFdlYkRyb3BTb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
RHJvcFNvdXJjZTo6V2ViRHJvcFNvdXJjZSk6CisgICAgICAgIChXZWJEcm9wU291cmNlOjp+V2Vi
RHJvcFNvdXJjZSk6CisgICAgICAgICogV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcDoKKyAgICAg
ICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5QmFnKToKKyAgICAg
ICAgKFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6fldlYkVsZW1lbnRQcm9wZXJ0eUJhZyk6CisgICAg
ICAgICogV2ViRXJyb3IuY3BwOgorICAgICAgICAoV2ViRXJyb3I6OldlYkVycm9yKToKKyAgICAg
ICAgKFdlYkVycm9yOjp+V2ViRXJyb3IpOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkZyYW1lOjpXZWJGcmFtZSk6CisgICAgICAgIChXZWJGcmFtZTo6fldlYkZyYW1lKToK
KyAgICAgICAgKFdlYkZyYW1lOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJGcmFtZTo6c2VsZWN0
QWxsKToKKyAgICAgICAgKiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lUG9saWN5TGlzdGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAo
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcjo6fldlYkZyYW1lUG9saWN5TGlzdGVuZXIpOgorICAgICAg
ICAqIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViR2VvbG9j
YXRpb25Qb2xpY3lMaXN0ZW5lcjo6V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjp+V2ViR2VvbG9jYXRpb25Qb2xpY3lM
aXN0ZW5lcik6CisgICAgICAgICogV2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHA6CisgICAgICAg
IChXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjpXZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkdlb2xvY2F0aW9uUG9zaXRpb246On5XZWJHZW9sb2NhdGlvblBvc2l0aW9uKToKKyAg
ICAgICAgKiBXZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjpXZWJIVE1MUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViSFRNTFJlcHJl
c2VudGF0aW9uOjp+V2ViSFRNTFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBXZWJIaXN0b3J5
LmNwcDoKKyAgICAgICAgKFdlYkhpc3Rvcnk6OldlYkhpc3RvcnkpOgorICAgICAgICAoV2ViSGlz
dG9yeTo6fldlYkhpc3RvcnkpOgorICAgICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAg
ICAgKFdlYkhpc3RvcnlJdGVtOjpXZWJIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJIaXN0b3J5
SXRlbTo6fldlYkhpc3RvcnlJdGVtKToKKyAgICAgICAgKiBXZWJJbnNwZWN0b3IuY3BwOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Ojp+V2ViSW5zcGVjdG9yKToKKyAgICAgICAgKiBXZWJKYXZhU2NyaXB0Q29sbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRDb2xsZWN0b3Ip
OgorICAgICAgICAoV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6fldlYkphdmFTY3JpcHRDb2xsZWN0
b3IpOgorICAgICAgICAqIFdlYktpdENsYXNzRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXRD
bGFzc0ZhY3Rvcnk6OldlYktpdENsYXNzRmFjdG9yeSk6CisgICAgICAgIChXZWJLaXRDbGFzc0Zh
Y3Rvcnk6On5XZWJLaXRDbGFzc0ZhY3RvcnkpOgorICAgICAgICAqIFdlYktpdE1lc3NhZ2VMb29w
LmNwcDoKKyAgICAgICAgKFdlYktpdE1lc3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCk6Cisg
ICAgICAgIChXZWJLaXRNZXNzYWdlTG9vcDo6fldlYktpdE1lc3NhZ2VMb29wKToKKyAgICAgICAg
KiBXZWJLaXRTdGF0aXN0aWNzLmNwcDoKKyAgICAgICAgKFdlYktpdFN0YXRpc3RpY3M6OldlYktp
dFN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViS2l0U3RhdGlzdGljczo6fldlYktpdFN0YXRpc3Rp
Y3MpOgorICAgICAgICAqIFdlYk11dGFibGVVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYk11
dGFibGVVUkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdCk6CisgICAgICAgIChXZWJNdXRh
YmxlVVJMUmVxdWVzdDo6fldlYk11dGFibGVVUkxSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJOYXZp
Z2F0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlv
bkRhdGEpOgorICAgICAgICAoV2ViTmF2aWdhdGlvbkRhdGE6On5XZWJOYXZpZ2F0aW9uRGF0YSk6
CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlv
bjo6V2ViTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlm
aWNhdGlvbik6CisgICAgICAgICogV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcDoKKyAgICAgICAg
KFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKToKKyAgICAgICAg
KFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcik6CisgICAgICAg
ICogV2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OldlYlByZWZl
cmVuY2VzKToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjp+V2ViUHJlZmVyZW5jZXMpOgorICAg
ICAgICAqIFdlYlJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYlJlc291cmNlOjpXZWJSZXNvdXJj
ZSk6CisgICAgICAgIChXZWJSZXNvdXJjZTo6fldlYlJlc291cmNlKToKKyAgICAgICAgKiBXZWJT
Y3JpcHRPYmplY3QuY3BwOgorICAgICAgICAoV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmpl
Y3QpOgorICAgICAgICAoV2ViU2NyaXB0T2JqZWN0Ojp+V2ViU2NyaXB0T2JqZWN0KToKKyAgICAg
ICAgKiBXZWJTY3JpcHRXb3JsZC5jcHA6CisgICAgICAgIChXZWJTY3JpcHRXb3JsZDo6V2ViU2Ny
aXB0V29ybGQpOgorICAgICAgICAoV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCk6Cisg
ICAgICAgICogV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgorICAgICAgICAoV2ViU2VjdXJpdHlPcmln
aW46OldlYlNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luOjp+V2Vi
U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFdlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYlNlcmlhbGl6ZWRKU1ZhbHVlOjpXZWJTZXJpYWxpemVkSlNWYWx1ZSk6CisgICAg
ICAgIChXZWJTZXJpYWxpemVkSlNWYWx1ZTo6fldlYlNlcmlhbGl6ZWRKU1ZhbHVlKToKKyAgICAg
ICAgKiBXZWJUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViVGV4dFJlbmRlcmVyOjpXZWJU
ZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVy
KToKKyAgICAgICAgKiBXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHA6CisgICAgICAg
IChXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTo6V2ViVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpOgorICAgICAgICAoV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6On5XZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogV2ViVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VTZW5kZXI6OldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyKToKKyAgICAgICAg
KFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjp+V2ViVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VTZW5kZXIpOgorICAgICAgICAqIFdlYlVSTENyZWRlbnRpYWwuY3BwOgorICAg
ICAgICAoV2ViVVJMQ3JlZGVudGlhbDo6V2ViVVJMQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJV
UkxDcmVkZW50aWFsOjp+V2ViVVJMQ3JlZGVudGlhbCk6CisgICAgICAgICogV2ViVVJMUHJvdGVj
dGlvblNwYWNlLmNwcDoKKyAgICAgICAgKFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6V2ViVVJMUHJv
dGVjdGlvblNwYWNlKToKKyAgICAgICAgKFdlYlVSTFByb3RlY3Rpb25TcGFjZTo6fldlYlVSTFBy
b3RlY3Rpb25TcGFjZSk6CisgICAgICAgICogV2ViVVJMUmVzcG9uc2UuY3BwOgorICAgICAgICAo
V2ViVVJMUmVzcG9uc2U6OldlYlVSTFJlc3BvbnNlKToKKyAgICAgICAgKFdlYlVSTFJlc3BvbnNl
Ojp+V2ViVVJMUmVzcG9uc2UpOgorICAgICAgICAoV2ViVVJMUmVzcG9uc2U6OmNyZWF0ZUluc3Rh
bmNlKToKKyAgICAgICAgKiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwOgorICAgICAgICAo
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4pOgorICAg
ICAgICAoV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OldlYlZpZXcpOgor
ICAgICAgICAoV2ViVmlldzo6fldlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6ZXhlY0NvbW1h
bmQpOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlRWRpdGluZ0tleWJvYXJkRXZlbnQpOgorICAg
ICAgICAoV2ViVmlldzo6Y29weSk6CisgICAgICAgIChXZWJWaWV3OjpjdXQpOgorICAgICAgICAo
V2ViVmlldzo6cGFzdGUpOgorICAgICAgICAoV2ViVmlldzo6Y29weVVSTCk6CisgICAgICAgIChX
ZWJWaWV3OjpkZWxldGVfKToKKyAgICAgICAgKiBXZWJXb3JrZXJzUHJpdmF0ZS5jcHA6CisgICAg
ICAgIChXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUpOgorICAgICAgICAoV2Vi
V29ya2Vyc1ByaXZhdGU6On5XZWJXb3JrZXJzUHJpdmF0ZSk6CisKIDIwMjItMDQtMDQgIEdhYnJp
ZWwgTmF2YSBNYXJpbm8gIDxnbmF2YW1hcmlub0BhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIFJl
ZiBhbmQgUmVmUHRyIHBhdHRlcm4gd2hlbiBoYW5kbGluZyBkb2N1bWVudCBjbG9zZSBjYWxscwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCmluZGV4IDY1
OGUwNGJmNWFkN2ViNjEzNjMwYjdiNzExMWE5YmYyYWQyM2NkMzEuLjBkMzU4Mzg1MzJmODk0NmM5
NzQ5YTcxYjIxYzQ3NTA0MzFlMzM2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTk3MSw3ICs5NzEsNyBAQCBKU0NDaGVja1N5bnRheFJl
c3VsdCBqc2NfY29udGV4dF9jaGVja19zeW50YXgoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogYwogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAKLSAgICBVUkwgc291cmNlVVJMID0gdXJpID8gVVJM
KHsgfSwgdXJpKSA6IFVSTCgpOworICAgIFVSTCBzb3VyY2VVUkwgPSB1cmkgPyBVUkwoU3RyaW5n
IHsgdXJpIH0pIDogVVJMKCk7CiAgICAgSlNDOjpTb3VyY2VDb2RlIHNvdXJjZSA9IEpTQzo6bWFr
ZVNvdXJjZShTdHJpbmc6OmZyb21VVEY4KGNvZGUsIGxlbmd0aCA8IDAgPyBzdHJsZW4oY29kZSkg
OiBsZW5ndGgpLCBKU0M6OlNvdXJjZU9yaWdpbiB7IHNvdXJjZVVSTCB9LAogICAgICAgICBzb3Vy
Y2VVUkwuc3RyaW5nKCkgLCBUZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2Vk
SW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICBib29sIHN1Y2Nlc3MgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JTb2NrZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKaW5kZXgg
NWUyMzZhMmM0ZTAyNjc4YTE1YjgzZTg3ZmY3N2ZmZDBlMWEzZGEzYi4uZTdjMDE5ZGZhZjdiYTVi
ZjYyODYyMThlNjM1MDRlMjIzNTk2MWU4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUluc3BlY3RvclNvY2tldC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvc29ja2V0L1JlbW90ZUlu
c3BlY3RvclNvY2tldC5jcHAKQEAgLTM2Nyw4ICszNjcsOCBAQCB2b2lkIFJlbW90ZUluc3BlY3Rv
cjo6c3RhcnRBdXRvbWF0aW9uU2Vzc2lvbihjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgYXV0byBj
YXBhYmlsaXR5ID0gY2xpZW50Q2FwYWJpbGl0aWVzKCk7CiAKICAgICBhdXRvIG1lc3NhZ2UgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIG1lc3NhZ2UtPnNldFN0cmluZygiYnJvd3Nlck5h
bWUiX3MsIGNhcGFiaWxpdHkgPyBjYXBhYmlsaXR5LT5icm93c2VyTmFtZSA6ICIiKTsKLSAgICBt
ZXNzYWdlLT5zZXRTdHJpbmcoImJyb3dzZXJWZXJzaW9uIl9zLCBjYXBhYmlsaXR5ID8gY2FwYWJp
bGl0eS0+YnJvd3NlclZlcnNpb24gOiAiIik7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93
c2VyTmFtZSJfcywgY2FwYWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJOYW1lIDogZW1wdHlT
dHJpbmcoKSk7CisgICAgbWVzc2FnZS0+c2V0U3RyaW5nKCJicm93c2VyVmVyc2lvbiJfcywgY2Fw
YWJpbGl0eSA/IGNhcGFiaWxpdHktPmJyb3dzZXJWZXJzaW9uIDogZW1wdHlTdHJpbmcoKSk7CiAg
ICAgc2VuZEV2ZW50LT5zZXRTdHJpbmcoIm1lc3NhZ2UiX3MsIG1lc3NhZ2UtPnRvSlNPTlN0cmlu
ZygpKTsKICAgICBzZW5kV2ViSW5zcGVjdG9yRXZlbnQoc2VuZEV2ZW50LT50b0pTT05TdHJpbmco
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAppbmRleCA1
MGIyZGZmYmMxZjcxYjU4ZmI3NzZmYTQ4NzE2YzdlZjVmMjZhZmE1Li5hNzQ2NmM5NzI0ZjRkOTA5
OTMyNTMxMzBhYmYxMWY4YzExODBhYjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0pTRG9sbGFyVk0uY3BwCkBAIC0yODc0LDcgKzI4NzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT05fV0lUSF9BVFRSSUJVVEVTKGZ1bmN0aW9uQ2FsbFdpdGhTdGFja1NpemUsIFNVUFBSRVNT
X0FTQQogCiAjZWxzZSAvLyBub3QgRU5BQkxFKEFTU0VNQkxFUikKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKLSAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgcGxhdGZvcm0iKTsKKyAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIk5vdCBzdXBwb3J0ZWQgZm9yIHRo
aXMgcGxhdGZvcm0iX3MpOwogI2VuZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0uY3BwIGIvU291cmNlL1dURi93dGYvRmls
ZVN5c3RlbS5jcHAKaW5kZXggNzFlNGRjZmE1Y2Q2OTQxN2RiZWNjY2M5Y2FjYWU4ZjE1NDg1YWQ1
ZC4uMzlmMmUyY2EyYTFkOGMyZTZiNDhiMmM3ZTMzMjViMzNjNzQxMWYwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvRmlsZVN5
c3RlbS5jcHAKQEAgLTI4NiwxNiArMjg2LDEzIEBAIGJvb2wgYXBwZW5kRmlsZUNvbnRlbnRzVG9G
aWxlSGFuZGxlKGNvbnN0IFN0cmluZyYgcGF0aCwgUGxhdGZvcm1GaWxlSGFuZGxlJiB0YXJnCiAK
IGJvb2wgZmlsZXNIYXZlU2FtZVZvbHVtZShjb25zdCBTdHJpbmcmIGZpbGVBLCBjb25zdCBTdHJp
bmcmIGZpbGVCKQogewotICAgIGF1dG8gZnNSZXBGaWxlQSA9IGZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihmaWxlQSk7Ci0gICAgYXV0byBmc1JlcEZpbGVCID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGZpbGVCKTsKLQotICAgIGlmIChmc1JlcEZpbGVBLmlzTnVsbCgpIHx8IGZzUmVwRmlsZUIu
aXNOdWxsKCkpCisgICAgaWYgKGZpbGVBLmlzTnVsbCgpIHx8IGZpbGVCLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogCi0gICAgYXV0
byBmaWxlQURldiA9IGdldEZpbGVEZXZpY2VJZChmc1JlcEZpbGVBKTsKLSAgICBhdXRvIGZpbGVC
RGV2ID0gZ2V0RmlsZURldmljZUlkKGZzUmVwRmlsZUIpOworICAgIGF1dG8gZmlsZUFEZXYgPSBn
ZXRGaWxlRGV2aWNlSWQoZmlsZUEpOworICAgIGF1dG8gZmlsZUJEZXYgPSBnZXRGaWxlRGV2aWNl
SWQoZmlsZUIpOwogCiAgICAgaWYgKGZpbGVBRGV2ICYmIGZpbGVCRGV2KQogICAgICAgICByZXN1
bHQgPSAoZmlsZUFEZXYgPT0gZmlsZUJEZXYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
RmlsZVN5c3RlbS5oIGIvU291cmNlL1dURi93dGYvRmlsZVN5c3RlbS5oCmluZGV4IDIxMTgzYWE3
ZWIyZjY3ZTk0N2M0OGM1ZDkxNzMyMDVhODYxY2ZhYjkuLmJjYWUxMDZiM2UzNDVlMWRiZjhkZWI1
YmQ0Zjc5NzM4ZjA2ODVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpbGVTeXN0ZW0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9GaWxlU3lzdGVtLmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHBhdGhGaWxlTmFtZShjb25zdCBTdHJpbmcmKTsKIFdU
Rl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcGFyZW50UGF0aChjb25zdCBTdHJpbmcmKTsKIFdURl9F
WFBPUlRfUFJJVkFURSBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiB2b2x1bWVGcmVlU3BhY2UoY29u
c3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
dm9sdW1lRmlsZUJsb2NrU2l6ZShjb25zdCBTdHJpbmcmKTsKLVdURl9FWFBPUlRfUFJJVkFURSBz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJZChjb25zdCBDU3RyaW5nJik7CitX
VEZfRVhQT1JUX1BSSVZBVEUgc3RkOjpvcHRpb25hbDxpbnQzMl90PiBnZXRGaWxlRGV2aWNlSWQo
Y29uc3QgU3RyaW5nJik7CiBXVEZfRVhQT1JUX1BSSVZBVEUgYm9vbCBjcmVhdGVTeW1ib2xpY0xp
bmsoY29uc3QgU3RyaW5nJiB0YXJnZXRQYXRoLCBjb25zdCBTdHJpbmcmIHN5bWJvbGljTGlua1Bh
dGgpOwogV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyBjcmVhdGVUZW1wb3JhcnlaaXBBcmNoaXZl
KGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
Z2xpYi9GaWxlU3lzdGVtR2xpYi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1H
bGliLmNwcAppbmRleCA2ZTBlNDc2NzIyNjY0NGE5NjIzYjJiYzYzMWFhNTA5MTAxZTU4ZjcxLi44
NTEwMDQwNjNlY2UzMzBhZDhhYzczZTQ2ZGRlMGRhNWQwOTg0MTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9nbGliL0ZpbGVTeXN0ZW1HbGliLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9n
bGliL0ZpbGVTeXN0ZW1HbGliLmNwcApAQCAtMjQ3LDggKzI0NywxMiBAQCBpbnQgcmVhZEZyb21G
aWxlKFBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGUsIHZvaWQqIGRhdGEsIGludCBsZW5ndGgpCiAg
ICAgcmV0dXJuIC0xOwogfQogCi1zdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVEZXZpY2VJ
ZChjb25zdCBDU3RyaW5nJiBmc0ZpbGUpCitzdGQ6Om9wdGlvbmFsPGludDMyX3Q+IGdldEZpbGVE
ZXZpY2VJZChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgYXV0byBmc0ZpbGUgPSBmaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24ocGF0aCk7CisgICAgaWYgKGZzRmlsZS5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIEdSZWZQdHI8R0ZpbGU+IGZpbGUgPSBhZG9w
dEdSZWYoZ19maWxlX25ld19mb3JfcGF0aChmc0ZpbGUuZGF0YSgpKSk7CiAgICAgR1JlZlB0cjxH
RmlsZUluZm8+IGZpbGVJbmZvID0gYWRvcHRHUmVmKGdfZmlsZV9xdWVyeV9maWxlc3lzdGVtX2lu
Zm8oZmlsZS5nZXQoKSwgR19GSUxFX0FUVFJJQlVURV9VTklYX0RFVklDRSwgbnVsbHB0ciwgbnVs
bHB0cikpOwogICAgIGlmICghZmlsZUluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9w
b3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwIGIvU291cmNlL1dURi93dGYvcG9zaXgvRmlsZVN5c3Rl
bVBPU0lYLmNwcAppbmRleCA3ZjllOGZjM2QwZmMzZTNjNjg3NGNlNjcyOGUzNmVkMjRjODBmMzhj
Li45MzMyNDUwZmZiZTY5ODg1MjNlZDYxOWFmODNhZGVmMWJiM2I4ZTc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9wb3NpeC9GaWxlU3lzdGVtUE9TSVguY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3Bvc2l4L0ZpbGVTeXN0ZW1QT1NJWC5jcHAKQEAgLTI0MSw4ICsyNDEsMTIgQEAgZW5kOgog
fQogI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKIAotc3RkOjpvcHRpb25hbDxpbnQzMl90PiBn
ZXRGaWxlRGV2aWNlSWQoY29uc3QgQ1N0cmluZyYgZnNGaWxlKQorc3RkOjpvcHRpb25hbDxpbnQz
Ml90PiBnZXRGaWxlRGV2aWNlSWQoY29uc3QgU3RyaW5nJiBwYXRoKQogeworICAgIGF1dG8gZnNG
aWxlID0gZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHBhdGgpOworICAgIGlmIChmc0ZpbGUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBzdHJ1Y3Qgc3RhdCBm
aWxlU3RhdDsKICAgICBpZiAoc3RhdChmc0ZpbGUuZGF0YSgpLCAmZmlsZVN0YXQpID09IC0xKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
YTQzZWEyZTQ2NTBlMDMzZThlZDFiZWZiNzdjNTAwODA5MTNkNGRiYS4uNjcxYmY4ODIyNmRiMGY2
ODZlNzMwZDZiNmRmMGU0YTJhOGMyMDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC04
MCw4ICs4MCwxMSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25z
dCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCk7CiAK
LSAgICAvLyBDb25zdHJ1Y3QgYSBzdHJpbmcgd2l0aCBsYXRpbjEgZGF0YSwgZnJvbSBhIG51bGwt
dGVybWluYXRlZCBzb3VyY2UuCi0gICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhjb25zdCBj
aGFyKiBjaGFyYWN0ZXJzKTsKKyAgICAvLyBUaGlzIGNvbnN0cnVjdG9yIGlzIGV4cGxpY2l0IHRv
IGVuY291cmFnZSBkZXZlbG9wZXJzIHRvIHVzZSBBU0NJSUxpdGVyYWwgYW5kIHRoZSAiIl9zIHN1
ZmZpeCB3aGVuIHBvc3NpYmxlLAorICAgIC8vIGFzIHRoZSBTdHJpbmcoQVNDSUlMaXRlcmFsKSBp
cyBtb3JlIGVmZmljaWVudC4gQWxzbyBub3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3RvciB0cmVhdHMg
aW5wdXQgYXMgTGF0aW4tMS4KKyAgICAvLyBEZXZlbG9wZXJzIG9mdGVuIHdhbnQgdG8gY2FsbCBT
dHJpbmc6OmZyb21VVEY4KCkgaW5zdGVhZC4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHByb2Jh
Ymx5IHJlbmFtZSB0aGlzIHRvIGZyb21MYXRpbjEoKS4KKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
ZXhwbGljaXQgU3RyaW5nKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMpOwogCiAgICAgLy8gQ29uc3Ry
dWN0IGEgc3RyaW5nIHJlZmVyZW5jaW5nIGFuIGV4aXN0aW5nIFN0cmluZ0ltcGwuCiAgICAgU3Ry
aW5nKFN0cmluZ0ltcGwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTG9nZ2lu
Z1VuaXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAKaW5kZXggYjAx
MmM4YzFjZjM5YWQ4OTkxZjRmYzRlMDYxOGUyNzk4NWM4YmI5MS4uOThiZjU2NmNlMjVjYTVlNmNm
MWY0MTlkNDMwNzUyMmE5MzUxYzU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdW5peC9M
b2dnaW5nVW5peC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdW5peC9Mb2dnaW5nVW5peC5jcHAK
QEAgLTM5LDcgKzM5LDcgQEAgU3RyaW5nIGxvZ0xldmVsU3RyaW5nKCkKICAgICBXVEZMb2dBbHdh
eXMoIldFQktJVF9ERUJVRyBpcyBub3QgZW1wdHksIGJ1dCB0aGlzIGlzIGEgcmVsZWFzZSBidWls
ZC4gTm90aWNlIHRoYXQgbWFueSBsb2cgbWVzc2FnZXMgd2lsbCBvbmx5IGFwcGVhciBpbiBhIGRl
YnVnIGJ1aWxkLiIpOwogI2VuZGlmCiAKLSAgICByZXR1cm4gbG9nRW52OworICAgIHJldHVybiBT
dHJpbmcgeyBsb2dFbnYgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi93aW4vRmlsZVN5c3RlbVdpbi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi93aW4v
RmlsZVN5c3RlbVdpbi5jcHAKaW5kZXggMjhkMWNlNWY2ZWUxOGJkMDY5ZDdmNjc2ZGI1MTI1NGY0
YTM1ZWZhOC4uOTc5MTVhMjM4MWZjMjMzNjc4ZDUyZGMzZjBkMGRhNTczY2NlOTg1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvd2luL0ZpbGVTeXN0ZW1XaW4uY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3dpbi9GaWxlU3lzdGVtV2luLmNwcApAQCAtMzQ1LDkgKzM0NSw5IEBAIFN0cmluZyBy
b2FtaW5nVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlZFN0
b3JhZ2VEaXJlY3RvcnkoQ1NJRExfQVBQREFUQSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8aW50MzJf
dD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IENTdHJpbmcmIGZzRmlsZSkKK3N0ZDo6b3B0aW9uYWw8
aW50MzJfdD4gZ2V0RmlsZURldmljZUlkKGNvbnN0IFN0cmluZyYgZnNGaWxlKQogewotICAgIGF1
dG8gaGFuZGxlID0gb3BlbkZpbGUoZnNGaWxlLmRhdGEoKSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsK
KyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKGZzRmlsZSwgRmlsZU9wZW5Nb2RlOjpSZWFkKTsK
ICAgICBpZiAoIWlzSGFuZGxlVmFsaWQoaGFuZGxlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNwcCBi
L1NvdXJjZS9XVEYvd3RmL3dpbi9MYW5ndWFnZVdpbi5jcHAKaW5kZXggYmY5NmIwYTU1Yzg4OTkz
MWM0YzJkNTMzMTdlOGM1ZTAxN2UyYWExMi4uYzkyYTc3YThjMTY0MjllMGZkNjI0NDI0MTIwMWIz
ZTk2NTMzMGRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvd2luL0xhbmd1YWdlV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi93aW4vTGFuZ3VhZ2VXaW4uY3BwCkBAIC02Myw3ICs2Myw3
IEBAIHN0YXRpYyBTdHJpbmcgcGxhdGZvcm1MYW5ndWFnZSgpCiAgICAgaWYgKCFjb21wdXRlZERl
ZmF1bHRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlZERlZmF1bHRM
YW5ndWFnZS5pc29sYXRlZENvcHkoKTsKIAotICAgIFN0cmluZyBsYW5ndWFnZU5hbWUgPSBsb2Nh
bGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsICJlbiIpOworICAgIFN0cmluZyBsYW5ndWFn
ZU5hbWUgPSBsb2NhbGVJbmZvKExPQ0FMRV9TSVNPNjM5TEFOR05BTUUsICJlbiJfcyk7CiAgICAg
U3RyaW5nIGNvdW50cnlOYW1lID0gbG9jYWxlSW5mbyhMT0NBTEVfU0lTTzMxNjZDVFJZTkFNRSwg
U3RyaW5nKCkpOwogCiAgICAgaWYgKGNvdW50cnlOYW1lLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1l
ZGlhRW5kcG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3Ry
ZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKaW5kZXggMWFlNjIyOTg1OGZlNGU5Y2U2
ODNjMzJjMmU2YWI3YjkwMThiODA2Zi4uMjllMjU1NzY0ZWEzNWYxMjRlMWM5YmRhMTNmOTgzNTkw
YTA4MTJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9n
c3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAK
QEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8UlRDU2Rw
VHlwZSwgU3RyaW5nPj4gZmV0Y2hEZXNjcmlwdGlvbihHc3RFbGVtZW50KgogCiAgICAgR1VuaXF1
ZVB0cjxjaGFyPiBzZHBTdHJpbmcoZ3N0X3NkcF9tZXNzYWdlX2FzX3RleHQoZGVzY3JpcHRpb24t
PnNkcCkpOwogICAgIEdTVF9UUkFDRV9PQkpFQ1Qod2VicnRjQmluLCAiJXMtZGVzY3JpcHRpb24g
U0RQOiAlcyIsIG5hbWUsIHNkcFN0cmluZy5nZXQoKSk7Ci0gICAgcmV0dXJuIHsgeyBmcm9tU2Vz
c2lvbkRlc2NyaXB0aW9uVHlwZSgqZGVzY3JpcHRpb24uZ2V0KCkpLCBzZHBTdHJpbmcuZ2V0KCkg
fSB9OworICAgIHJldHVybiB7IHsgZnJvbVNlc3Npb25EZXNjcmlwdGlvblR5cGUoKmRlc2NyaXB0
aW9uLmdldCgpKSwgU3RyaW5nIHsgc2RwU3RyaW5nLmdldCgpIH0gfSB9OwogfQogCiBzdGF0aWMg
R3N0V2ViUlRDU2lnbmFsaW5nU3RhdGUgZmV0Y2hTaWduYWxpbmdTdGF0ZShHc3RFbGVtZW50KiB3
ZWJydGNCaW4pCkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50
OjpzdG9yZVJlbW90ZU1MaW5lSW5mbyhHc3RTRFBNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBtX21lZGlhRm9yTWlkLnNldCh7IG1p
ZCB9LCBnX3N0cl9lcXVhbChtZWRpYVR5cGUsICJhdWRpbyIpID8gUmVhbHRpbWVNZWRpYVNvdXJj
ZTo6VHlwZTo6QXVkaW8gOiBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpWaWRlbyk7CisgICAg
ICAgIG1fbWVkaWFGb3JNaWQuc2V0KFN0cmluZyB7IG1pZCB9LCBnX3N0cl9lcXVhbChtZWRpYVR5
cGUsICJhdWRpbyJfcykgPyBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA6IFJlYWx0
aW1lTWVkaWFTb3VyY2U6OlR5cGU6OlZpZGVvKTsKIAogICAgICAgICAvLyBodHRwczovL2dpdGxh
Yi5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhZC8tL21lcmdlX3JlcXVl
c3RzLzE5MDcKICAgICAgICAgaWYgKHNkcE1lZGlhSGFzQXR0cmlidXRlS2V5KG1lZGlhLCAiaWNl
LWxpdGUiKSkgewpAQCAtOTI0LDcgKzkyNCw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRwb2lu
dDo6YWRkSWNlQ2FuZGlkYXRlKEdTdHJlYW1lckljZUNhbmRpZGF0ZSYgY2FuZGlkYXRlLCBQCiAK
ICAgICBpZiAoIWNhbmRpZGF0ZS5jYW5kaWRhdGUuc3RhcnRzV2l0aCgiY2FuZGlkYXRlOiIpKSB7
CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Rhc2sgPSBjcmVhdGVTaGFyZWRUYXNrPFBlZXJD
b25uZWN0aW9uQmFja2VuZDo6QWRkSWNlQ2FuZGlkYXRlQ2FsbGJhY2tGdW5jdGlvbj4oV1RGTW92
ZShjYWxsYmFjaykpXSgpIG11dGFibGUgewotICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yLCAiRXhwZWN0IGxpbmU6IGNhbmRpZGF0ZTo8Y2FuZGlkYXRlLXN0
cj4iIH0pOworICAgICAgICAgICAgdGFzay0+cnVuKEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
LCAiRXhwZWN0IGxpbmU6IGNhbmRpZGF0ZTo8Y2FuZGlkYXRlLXN0cj4iX3MgfSk7CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTMyLDcgKzkzMiw3IEBAIHZvaWQgR1N0
cmVhbWVyTWVkaWFFbmRwb2ludDo6YWRkSWNlQ2FuZGlkYXRlKEdTdHJlYW1lckljZUNhbmRpZGF0
ZSYgY2FuZGlkYXRlLCBQCiAgICAgYXV0byBwYXJzZWRDYW5kaWRhdGUgPSBwYXJzZUljZUNhbmRp
ZGF0ZVNEUChjYW5kaWRhdGUuY2FuZGlkYXRlKTsKICAgICBpZiAoIXBhcnNlZENhbmRpZGF0ZSkg
ewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0YXNrID0gY3JlYXRlU2hhcmVkVGFzazxQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OkFkZEljZUNhbmRpZGF0ZUNhbGxiYWNrRnVuY3Rpb24+KFdURk1v
dmUoY2FsbGJhY2spKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHRhc2stPnJ1bihFeGNlcHRp
b24geyBPcGVyYXRpb25FcnJvciwgIkVycm9yIHByb2Nlc3NpbmcgSUNFIGNhbmRpZGF0ZSIgfSk7
CisgICAgICAgICAgICB0YXNrLT5ydW4oRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IsICJFcnJv
ciBwcm9jZXNzaW5nIElDRSBjYW5kaWRhdGUiX3MgfSk7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTA4NSw5ICsxMDg1LDkgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVu
ZHBvaW50OjpjcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25TdWNjZWVkZWQoR1VuaXF1ZVB0cjxHc3RX
ZWIKIAogICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHNkcChnc3Rfc2RwX21lc3NhZ2VfYXNfdGV4
dChkZXNjcmlwdGlvbi0+c2RwKSk7CiAgICAgICAgIGlmIChtX2lzSW5pdGlhdG9yKQotICAgICAg
ICAgICAgbV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlT2ZmZXJTdWNjZWVkZWQoc2RwLmdl
dCgpKTsKKyAgICAgICAgICAgIG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLmNyZWF0ZU9mZmVyU3Vj
Y2VlZGVkKFN0cmluZyB7IHNkcC5nZXQoKSB9KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
bV9wZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3JlYXRlQW5zd2VyU3VjY2VlZGVkKHNkcC5nZXQoKSk7
CisgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5jcmVhdGVBbnN3ZXJTdWNjZWVk
ZWQoU3RyaW5nIHsgc2RwLmdldCgpIH0pOwogICAgIH0pOwogfQogCkBAIC0xMDk3LDcgKzEwOTcs
NyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNyZWF0ZVNlc3Npb25EZXNjcmlwdGlv
bkZhaWxlZChHVW5pcXVlUHRyPEdFcnJvcj4mJgogICAgICAgICBpZiAoaXNTdG9wcGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBleGMgPSBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciwgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIiB9Owor
ICAgICAgICBhdXRvIGV4YyA9IEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yLCBlcnJvciA/IFN0
cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpIDogIlVua25vd24gRXJyb3IiX3MgfTsKICAg
ICAgICAgaWYgKG1faXNJbml0aWF0b3IpCiAgICAgICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFj
a2VuZC5jcmVhdGVPZmZlckZhaWxlZChXVEZNb3ZlKGV4YykpOwogICAgICAgICBlbHNlCkBAIC0x
MTI1LDcgKzExMjUsNyBAQCB2b2lkIEdTdHJlYW1lck1lZGlhRW5kcG9pbnQ6OmNvbGxlY3RUcmFu
c2NlaXZlcnMoKQogICAgICAgICBpZiAoIXJlY2VpdmVyIHx8ICFtaWQpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBtX3BlZXJDb25uZWN0aW9uQmFja2VuZC5uZXdSZW1vdGVUcmFu
c2NlaXZlcihXVEY6Om1ha2VVbmlxdWU8R1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPihX
VEZNb3ZlKGN1cnJlbnQpKSwgbV9tZWRpYUZvck1pZC5nZXQobWlkLmdldCgpKSk7CisgICAgICAg
IG1fcGVlckNvbm5lY3Rpb25CYWNrZW5kLm5ld1JlbW90ZVRyYW5zY2VpdmVyKFdURjo6bWFrZVVu
aXF1ZTxHU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQ+KFdURk1vdmUoY3VycmVudCkpLCBt
X21lZGlhRm9yTWlkLmdldChTdHJpbmcgeyBtaWQuZ2V0KCkgfSkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0
cmVhbWVyUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAK
aW5kZXggMjU2NGU5YTQ2NDgwOGJiMDhjYjQwNjNjYWFjNjEyNDAyYmRmZDVjMi4uMzBmZWYwZTAy
Mjc4NWIxNWExMTY4YjNkNGZiYzY2NjkxYmUxNTM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJl
YW1lci9HU3RyZWFtZXJQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC01OSw0MCArNTksNDAg
QEAgQ3JlYXRlUGVlckNvbm5lY3Rpb25CYWNrZW5kIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Jl
YXRlID0gY3JlYXRlR1N0cmVhbWVyUGVlckMKIHN0YXRpYyBSVENSdHBDYXBhYmlsaXRpZXMgZ3N0
cmVhbWVyUnRwQ2FwYXRpYmxpdGllcyhjb25zdCBTdHJpbmcmIGtpbmQpCiB7CiAgICAgUlRDUnRw
Q2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllczsKLSAgICBjYXBhYmlsaXRpZXMuaGVhZGVyRXh0ZW5z
aW9ucy5hcHBlbmQoeyAiaHR0cDovL3d3dy5pZXRmLm9yZy9pZC9kcmFmdC1ob2xtZXItcm1jYXQt
dHJhbnNwb3J0LXdpZGUtY2MtZXh0ZW5zaW9ucy0wMSIgfSk7CisgICAgY2FwYWJpbGl0aWVzLmhl
YWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgImh0dHA6Ly93d3cuaWV0Zi5vcmcvaWQvZHJhZnQtaG9s
bWVyLXJtY2F0LXRyYW5zcG9ydC13aWRlLWNjLWV4dGVuc2lvbnMtMDEiX3MgfSk7CiAgICAgaWYg
KGtpbmQgPT0gImF1ZGlvIl9zKSB7CiAgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MucmVzZXJ2
ZUNhcGFjaXR5KDQpOwotICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVu
ZCh7IC5taW1lVHlwZSA9ICJhdWRpby9PUFVTIiwKKyAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vT1BVUyJfcywKICAgICAgICAg
ICAgIC5jbG9ja1JhdGUgPSA0ODAwMCwKICAgICAgICAgICAgIC5jaGFubmVscyA9IDIsCi0gICAg
ICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vRzcyMiIsCisgICAgICAgICAg
ICAuc2RwRm10cExpbmUgPSBlbXB0eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMu
Y29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9HNzIyIl9zLAogICAg
ICAgICAgICAgLmNsb2NrUmF0ZSA9IDgwMDAsCiAgICAgICAgICAgICAuY2hhbm5lbHMgPSAxLAot
ICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5j
b2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTUEiLAorICAgICAg
ICAgICAgLnNkcEZtdHBMaW5lID0gZW1wdHlTdHJpbmcoKSB9KTsKKyAgICAgICAgY2FwYWJpbGl0
aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAiYXVkaW8vUENNQSJfcywK
ICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA4MDAwLAogICAgICAgICAgICAgLmNoYW5uZWxzID0g
MSwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICIiIH0pOwotICAgICAgICBjYXBhYmlsaXRp
ZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJhdWRpby9QQ01VIiwKKyAg
ICAgICAgICAgIC5zZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CisgICAgICAgIGNhcGFi
aWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBlID0gImF1ZGlvL1BDTVUi
X3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gODAwMCwKICAgICAgICAgICAgIC5jaGFubmVs
cyA9IDEsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAiIiB9KTsKKyAgICAgICAgICAgIC5z
ZHBGbXRwTGluZSA9IGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY2Fw
YWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5kKHsgInVybjozZ3BwOnZpZGVvLW9yaWVu
dGF0aW9uIiB9KTsKKyAgICAgICAgY2FwYWJpbGl0aWVzLmhlYWRlckV4dGVuc2lvbnMuYXBwZW5k
KHsgInVybjozZ3BwOnZpZGVvLW9yaWVudGF0aW9uIl9zIH0pOwogICAgICAgICBjYXBhYmlsaXRp
ZXMuY29kZWNzLnJlc2VydmVDYXBhY2l0eSg0KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVj
cy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4IiwKKyAgICAgICAgY2Fw
YWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5cGUgPSAidmlkZW8vVlA4
Il9zLAogICAgICAgICAgICAgLmNsb2NrUmF0ZSA9IDkwMDAwLAotICAgICAgICAgICAgLnNkcEZt
dHBMaW5lID0gIiIgfSk7Ci0gICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBw
ZW5kKHsgLm1pbWVUeXBlID0gInZpZGVvL1ZQOSIsCisgICAgICAgICAgICAuc2RwRm10cExpbmUg
PSBlbXB0eVN0cmluZygpIH0pOworICAgICAgICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tl
ZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRlby9WUDkiX3MsCiAgICAgICAgICAgICAuY2xvY2tS
YXRlID0gOTAwMDAsCi0gICAgICAgICAgICAuc2RwRm10cExpbmUgPSAicHJvZmlsZS1pZD0wIiB9
KTsKLSAgICAgICAgY2FwYWJpbGl0aWVzLmNvZGVjcy51bmNoZWNrZWRBcHBlbmQoeyAubWltZVR5
cGUgPSAidmlkZW8vVlA5IiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlk
PTAiX3MgfSk7CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsg
Lm1pbWVUeXBlID0gInZpZGVvL1ZQOSJfcywKICAgICAgICAgICAgIC5jbG9ja1JhdGUgPSA5MDAw
MCwKLSAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiIH0pOwotICAgICAg
ICBjYXBhYmlsaXRpZXMuY29kZWNzLnVuY2hlY2tlZEFwcGVuZCh7IC5taW1lVHlwZSA9ICJ2aWRl
by9IMjY0IiwKKyAgICAgICAgICAgIC5zZHBGbXRwTGluZSA9ICJwcm9maWxlLWlkPTEiX3MgfSk7
CisgICAgICAgIGNhcGFiaWxpdGllcy5jb2RlY3MudW5jaGVja2VkQXBwZW5kKHsgLm1pbWVUeXBl
ID0gInZpZGVvL0gyNjQiX3MsCiAgICAgICAgICAgICAuY2xvY2tSYXRlID0gOTAwMDAsCi0gICAg
ICAgICAgICAuc2RwRm10cExpbmUgPSAicGFja2V0aXphdGlvbi1tb2RlPTE7cHJvZmlsZS1sZXZl
bC1pZD00MmUwMWYiIH0pOworICAgICAgICAgICAgLnNkcEZtdHBMaW5lID0gInBhY2tldGl6YXRp
b24tbW9kZT0xO3Byb2ZpbGUtbGV2ZWwtaWQ9NDJlMDFmIl9zIH0pOwogICAgIH0KICAgICByZXR1
cm4gY2FwYWJpbGl0aWVzOwogfQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgR1N0cmVhbWVyUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjpkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmIG9wdGlv
bnMpCiB2b2lkIEdTdHJlYW1lclBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9DcmVhdGVBbnN3ZXIo
UlRDQW5zd2VyT3B0aW9ucyYmKQogewogICAgIGlmICghbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0
KSB7Ci0gICAgICAgIGNyZWF0ZUFuc3dlckZhaWxlZChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIk5vIHJlbW90ZSBkZXNjcmlwdGlvbiBzZXQiIH0pOworICAgICAgICBjcmVhdGVBbnN3
ZXJGYWlsZWQoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJObyByZW1vdGUgZGVzY3Jp
cHRpb24gc2V0Il9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fZW5kcG9pbnQt
PmRvQ3JlYXRlQW5zd2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAppbmRleCAyNDQ5YWU4NWYxNmRkNDFiMWEzOWEyMDgwYjQ2
M2E1ODY3MDA4NDljLi5lNzc4ZjZkNGYwYzBiNDY3ODIzMGM2MmNkNjYwMmE4ZTljNjEzZmJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9H
U3RyZWFtZXJSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2Vu
ZC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5nIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFj
a2VuZDo6bWlkKCkKIHsKICAgICBHVW5pcXVlT3V0UHRyPGNoYXI+IG1pZDsKICAgICBnX29iamVj
dF9nZXQobV9ydGNUcmFuc2NlaXZlci5nZXQoKSwgIm1pZCIsICZtaWQub3V0UHRyKCksIG51bGxw
dHIpOwotICAgIHJldHVybiBtaWQuZ2V0KCk7CisgICAgcmV0dXJuIFN0cmluZyB7IG1pZC5nZXQo
KSB9OwogfQogCiB2b2lkIEdTdHJlYW1lclJ0cFRyYW5zY2VpdmVyQmFja2VuZDo6c3RvcCgpCkBA
IC05Nyw3ICs5Nyw3IEBAIGJvb2wgR1N0cmVhbWVyUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOjpzdG9w
cGVkKCkgY29uc3QKIHN0YXRpYyBpbmxpbmUgV0FSTl9VTlVTRURfUkVUVVJOIEV4Y2VwdGlvbk9y
PEdzdENhcHMqPiB0b1J0cENvZGVjQ2FwYWJpbGl0eShjb25zdCBSVENSdHBDb2RlY0NhcGFiaWxp
dHkmIGNvZGVjKQogewogICAgIGlmICghY29kZWMubWltZVR5cGUuc3RhcnRzV2l0aCgidmlkZW8v
IikgJiYgIWNvZGVjLm1pbWVUeXBlLnN0YXJ0c1dpdGgoImF1ZGlvLyIpKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBh
YmlsaXR5IGJhZCBtaW1lVHlwZSIgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRNb2RpZmljYXRpb25FcnJvciwgIlJUQ1J0cENvZGVjQ2FwYWJpbGl0eSBiYWQgbWltZVR5cGUi
X3MgfTsKIAogICAgIGF1dG8gY29tcG9uZW50cyA9IGNvZGVjLm1pbWVUeXBlLnNwbGl0KCcvJyk7
CiAgICAgYXV0byogY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUoImFwcGxpY2F0aW9uL3gtcnRw
IiwgIm1lZGlhIiwgR19UWVBFX1NUUklORywgY29tcG9uZW50c1swXS5hc2NpaSgpLmRhdGEoKSwg
ImVuY29kaW5nLW5hbWUiLCBHX1RZUEVfU1RSSU5HLCBjb21wb25lbnRzWzFdLmFzY2lpKCkuZGF0
YSgpLCBudWxscHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lclN0YXRzQ29sbGVjdG9y
LmNwcAppbmRleCBlM2I4MjMyYWJhMmEzN2U1OTY1MjFjMDBiZTFiY2ZhYTYzMzhmNjY4Li5kY2Y3
YWQxZThjNzA4YWFmY2VlNWM5MGYwNjkwMzQyMWVjNTFhZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJTdGF0c0NvbGxl
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyU3RhdHNDb2xsZWN0b3IuY3BwCkBAIC00MywxNSArNDMsMTUgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGZpbGxSVENTdGF0cyhSVENTdGF0c1JlcG9ydDo6U3RhdHMmIHN0YXRzLCBj
b25zdCBHc3RTdHJ1Y3R1cmUKICAgICBkb3VibGUgdGltZXN0YW1wOwogICAgIGlmIChnc3Rfc3Ry
dWN0dXJlX2dldF9kb3VibGUoc3RydWN0dXJlLCAidGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCiAg
ICAgICAgIHN0YXRzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLSAgICBzdGF0cy5pZCA9IGdzdF9z
dHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJpZCIpOworICAgIHN0YXRzLmlkID0gU3Ry
aW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgImlkIikgfTsKIH0KIAog
c3RhdGljIGlubGluZSB2b2lkIGZpbGxSVENSVFBTdHJlYW1TdGF0cyhSVENTdGF0c1JlcG9ydDo6
UnRwU3RyZWFtU3RhdHMmIHN0YXRzLCBjb25zdCBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
ICAgICBmaWxsUlRDU3RhdHMoc3RhdHMsIHN0cnVjdHVyZSk7CiAKLSAgICBzdGF0cy50cmFuc3Bv
cnRJZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJ0cmFuc3BvcnQtaWQi
KTsKLSAgICBzdGF0cy5jb2RlY0lkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVy
ZSwgImNvZGVjLWlkIik7CisgICAgc3RhdHMudHJhbnNwb3J0SWQgPSBTdHJpbmcgeyBnc3Rfc3Ry
dWN0dXJlX2dldF9zdHJpbmcoc3RydWN0dXJlLCAidHJhbnNwb3J0LWlkIikgfTsKKyAgICBzdGF0
cy5jb2RlY0lkID0gU3RyaW5nIHsgZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwg
ImNvZGVjLWlkIikgfTsKIAogICAgIHVuc2lnbmVkIHZhbHVlOwogICAgIGlmIChnc3Rfc3RydWN0
dXJlX2dldF91aW50KHN0cnVjdHVyZSwgInNzcmMiLCAmdmFsdWUpKQpAQCAtMTY2LDcgKzE2Niw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmaWxsT3V0Ym91bmRSVFBTdHJlYW1TdGF0cyhSVENTdGF0
c1JlcG9ydDo6T3V0Ym91bmRSdHBTdHJlYW1TCiAgICAgICAgIHN0YXRzLm5hY2tDb3VudCA9IG5h
Y2tDb3VudDsKIAogICAgIGlmIChjb25zdCBjaGFyKiByZW1vdGVJZCA9IGdzdF9zdHJ1Y3R1cmVf
Z2V0X3N0cmluZyhzdHJ1Y3R1cmUsICJyZW1vdGUtaWQiKSkKLSAgICAgICAgc3RhdHMucmVtb3Rl
SWQgPSByZW1vdGVJZDsKKyAgICAgICAgc3RhdHMucmVtb3RlSWQgPSBTdHJpbmcgeyByZW1vdGVJ
ZCB9OwogCiAgICAgLy8gRklYTUUKICAgICAvLyBzdGF0cy50YXJnZXRCaXRyYXRlID0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJl
YW1lcldlYlJUQ1V0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lcldlYlJUQ1V0aWxzLmNwcAppbmRleCA1NGI5NzRkM2E3MmQ2Yjdh
NDlkMzI4YzEyYjNhMTQyYjFhMWVhM2QxLi42YTE2MzZjNmRkYjZlNmZiNTk1YThjNWQyZmUyMGJk
NzM3NDYxYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9HU3RyZWFtZXJXZWJSVENVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyV2ViUlRDVXRpbHMuY3BwCkBA
IC04NSw3ICs4NSw3IEBAIFJlZlB0cjxSVENFcnJvcj4gdG9SVENFcnJvcihHRXJyb3IqIHJ0Y0Vy
cm9yKQogICAgIGF1dG8gZGV0YWlsID0gdG9SVENFcnJvckRldGFpbFR5cGUoc3RhdGljX2Nhc3Q8
R3N0V2ViUlRDRXJyb3I+KHJ0Y0Vycm9yLT5jb2RlKSk7CiAgICAgaWYgKCFkZXRhaWwpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBSVENFcnJvcjo6Y3JlYXRlKCpkZXRhaWws
IHJ0Y0Vycm9yLT5tZXNzYWdlKTsKKyAgICByZXR1cm4gUlRDRXJyb3I6OmNyZWF0ZSgqZGV0YWls
LCBTdHJpbmc6OmZyb21VVEY4KHJ0Y0Vycm9yLT5tZXNzYWdlKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgZG91YmxlIHRvV2ViUlRDQml0UmF0ZVByaW9yaXR5KFJUQ1ByaW9yaXR5VHlwZSBwcmlvcml0
eSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgaW5saW5lIFJUQ1J0cEVuY29kaW5nUGFyYW1l
dGVycyB0b1JUQ0VuY29kaW5nUGFyYW1ldGVycyhjb25zdCBHc3RTdHJ1Y3R1cgogICAgIGlmIChn
c3Rfc3RydWN0dXJlX2dldF91aW50NjQocnRjUGFyYW1ldGVycywgIm1heC1mcmFtZXJhdGUiLCAm
bWF4RnJhbWVyYXRlKSkKICAgICAgICAgcGFyYW1ldGVycy5tYXhGcmFtZXJhdGUgPSBtYXhGcmFt
ZXJhdGU7CiAKLSAgICBwYXJhbWV0ZXJzLnJpZCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyhy
dGNQYXJhbWV0ZXJzLCAicmlkIik7CisgICAgcGFyYW1ldGVycy5yaWQgPSBTdHJpbmcgeyBnc3Rf
c3RydWN0dXJlX2dldF9zdHJpbmcocnRjUGFyYW1ldGVycywgInJpZCIpIH07CiAKICAgICBkb3Vi
bGUgc2NhbGVSZXNvbHV0aW9uRG93bkJ5OwogICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3Vi
bGUocnRjUGFyYW1ldGVycywgInNjYWxlLXJlc29sdXRpb24tZG93bi1ieSIsICZzY2FsZVJlc29s
dXRpb25Eb3duQnkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUk9wYXF1ZUZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJPcGFxdWVGcmFtZWJ1ZmZlci5jcHAKaW5kZXggOTJlMWExOGVhNzg5N2Y2YTQyMmQyZjQ5
N2NiNjk0MTJmMDE1OTE1Yi4uNjc2MTAxOTcxODE2MzE3NGEwMmNmZmYwNzU1ZjczMjA0ZjNhMjMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUk9wYXF1ZUZy
YW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhST3Bh
cXVlRnJhbWVidWZmZXIuY3BwCkBAIC0yNzUsMTIgKzI3NSwxMiBAQCBib29sIFdlYlhST3BhcXVl
RnJhbWVidWZmZXI6OnNldHVwRnJhbWVidWZmZXIoKQogICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9
IEdMOjpTVEVOQ0lMX0lOREVYODsKICNlbGlmIFVTRShPUEVOR0xfRVMpCiAgICAgYXV0byYgZXh0
ZW5zaW9ucyA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wmPihnbCku
Z2V0RXh0ZW5zaW9ucygpOwotICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERlcHRoU3Rl
bmNpbCA9IGhhc0RlcHRoT3JTdGVuY2lsICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpOworICAgIGJvb2wgcGxhdGZvcm1TdXBwb3J0c1BhY2tlZERl
cHRoU3RlbmNpbCA9IGhhc0RlcHRoT3JTdGVuY2lsICYmIGV4dGVuc2lvbnMuc3VwcG9ydHMoIkdM
X09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcyk7CiAgICAgYXV0byBkZXB0aEZvcm1hdCA9IHBs
YXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPyBHTDo6REVQVEgyNF9TVEVOQ0lMOCA6
IEdMOjpERVBUSF9DT01QT05FTlQxNjsKICAgICBhdXRvIHN0ZW5jaWxGb3JtYXQgPSBHTDo6U1RF
TkNJTF9JTkRFWDg7CiAjZWxzZQogICAgIGF1dG8mIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9j
YXN0PEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMJj4oZ2wpLmdldEV4dGVuc2lvbnMoKTsKLSAgICBi
b29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9yU3RlbmNp
bCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsK
KyAgICBib29sIHBsYXRmb3JtU3VwcG9ydHNQYWNrZWREZXB0aFN0ZW5jaWwgPSBoYXNEZXB0aE9y
U3RlbmNpbCAmJiBleHRlbnNpb25zLnN1cHBvcnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5j
aWwiX3MpOwogICAgIGF1dG8gZGVwdGhGb3JtYXQgPSBwbGF0Zm9ybVN1cHBvcnRzUGFja2VkRGVw
dGhTdGVuY2lsID8gR0w6OkRFUFRIMjRfU1RFTkNJTDggOiBHTDo6REVQVEhfQ09NUE9ORU5UOwog
ICAgIGF1dG8gc3RlbmNpbEZvcm1hdCA9IEdMOjpTVEVOQ0lMX0NPTVBPTkVOVDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9X
ZWJHUFVBZGFwdGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dl
YkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAppbmRleCAwMzk5MzRmMjk0ZWFiYTYzOThl
NmZkYzUyMDMyMjA5NzdlZGJkZWIwLi5iZTdmYzRiODZlZjlkMjk4ZmRiN2NkOTE4MGViM2E5ZWNi
OWVlOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBoaWNzL1dlYkdQ
VS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L2dyYXBoaWNzL1dlYkdQVS9JbXBsL1dlYkdQVUFkYXB0ZXJJbXBsLmNwcApAQCAtMzksNyArMzks
NyBAQCBzdGF0aWMgU3RyaW5nIGFkYXB0ZXJOYW1lKFdHUFVBZGFwdGVyIGFkYXB0ZXIpCiB7CiAg
ICAgV0dQVUFkYXB0ZXJQcm9wZXJ0aWVzIHByb3BlcnRpZXM7CiAgICAgd2dwdUFkYXB0ZXJHZXRQ
cm9wZXJ0aWVzKGFkYXB0ZXIsICZwcm9wZXJ0aWVzKTsKLSAgICByZXR1cm4gcHJvcGVydGllcy5u
YW1lOworICAgIHJldHVybiBTdHJpbmcgeyBwcm9wZXJ0aWVzLm5hbWUgfTsKIH0KIAogc3RhdGlj
IFJlZjxTdXBwb3J0ZWRGZWF0dXJlcz4gc3VwcG9ydGVkRmVhdHVyZXMoV0dQVUFkYXB0ZXIgYWRh
cHRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3MvV2ViR1BV
L0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2dyYXBo
aWNzL1dlYkdQVS9JbXBsL1dlYkdQVURldmljZUltcGwuY3BwCmluZGV4IDk2OWE3YTJjYTdiOWJh
NjJjYTI1Y2VhYzI4ZjNhMzlkYjM0YjA5OTMuLjhjOTQ3NWFmNTAxZTYzZDZmMmQ5YTYyNDA1Y2I3
NTEyODA1YTEwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvZ3JhcGhpY3Mv
V2ViR1BVL0ltcGwvV2ViR1BVRGV2aWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9ncmFwaGljcy9XZWJHUFUvSW1wbC9XZWJHUFVEZXZpY2VJbXBsLmNwcApAQCAtNTkyLDcg
KzU5Miw3IEBAIHZvaWQgRGV2aWNlSW1wbDo6cG9wRXJyb3JTY29wZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXJyb3I+JiYpPiYmCiAgICAgICAgIGNhc2UgV0dQVUVycm9y
VHlwZV9Gb3JjZTMyOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVUVycm9y
VHlwZV9WYWxpZGF0aW9uOgotICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlvbkVycm9y
OjpjcmVhdGUobWVzc2FnZSkgfSB9OworICAgICAgICAgICAgZXJyb3IgPSB7IHsgVmFsaWRhdGlv
bkVycm9yOjpjcmVhdGUoU3RyaW5nIHsgbWVzc2FnZSB9KSB9IH07CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBXR1BVRXJyb3JUeXBlX091dE9mTWVtb3J5OgogICAgICAgICAgICAg
ZXJyb3IgPSB7IHsgT3V0T2ZNZW1vcnlFcnJvcjo6Y3JlYXRlKCkgfSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA4ZWI0ZTkyNmI5ZGFmMzU0
MjViODdiMDBkNjViYzQ0NjczMDFhZGQ2Li4wZDRkNDZhMGVkOGM4ZTExMDNiNjk3NjFlNWQ1ZTNj
N2M5ZjAwYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtMzY4LDcgKzM2OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHJhbmdlTWF0Y2hlc1RleHROZWFyUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBj
b25zdCBTdHJpbmcmKTsKIAotICAgIHN0YXRpYyBTdHJpbmcgbm90aWZpY2F0aW9uUGxhdGZvcm1O
YW1lKEFYTm90aWZpY2F0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG5vdGlmaWNhdGlv
blBsYXRmb3JtTmFtZShBWE5vdGlmaWNhdGlvbik7CiAKICAgICBBWFRyZWVEYXRhIHRyZWVEYXRh
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpLmNwcAppbmRleCBhNmI1MTE5YmU4MmFjYjA4
MWU5NjNmYWZiYjM2NWIwZjExZWMwZjlmLi5kYTkyZmQ0MTNmMTA3N2M3MTI5MGUxM2EzZTU0ODYy
MGJlN2M4OTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkuY3BwCkBAIC04NjksNzIgKzg2
OSw3MiBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OmF0dHJpYnV0ZXMoKSBjb25zdAogewogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG1hcDsK
ICNpZiBQTEFURk9STShHVEspCi0gICAgbWFwLmFkZCgidG9vbGtpdCIsICJXZWJLaXRHVEsiKTsK
KyAgICBtYXAuYWRkKCJ0b29sa2l0Il9zLCAiV2ViS2l0R1RLIl9zKTsKICNlbGlmIFBMQVRGT1JN
KFdQRSkKLSAgICBtYXAuYWRkKCJ0b29sa2l0IiwgIldQRVdlYktpdCIpOworICAgIG1hcC5hZGQo
InRvb2xraXQiX3MsICJXUEVXZWJLaXQiX3MpOwogI2VuZGlmCiAgICAgaWYgKCFtX2NvcmVPYmpl
Y3QpCiAgICAgICAgIHJldHVybiBtYXA7CiAKICAgICBTdHJpbmcgdGFnTmFtZSA9IG1fY29yZU9i
amVjdC0+dGFnTmFtZSgpOwogICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG1h
cC5hZGQoInRhZyIsIHRhZ05hbWUpOworICAgICAgICBtYXAuYWRkKCJ0YWciX3MsIHRhZ05hbWUp
OwogCiAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBtX2NvcmVPYmplY3QtPmVsZW1lbnQoKSkgewog
ICAgICAgICBTdHJpbmcgaWQgPSBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpLnN0cmluZygpOwog
ICAgICAgICBpZiAoIWlkLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1hcC5hZGQoImlkIiwgaWQp
OworICAgICAgICAgICAgbWFwLmFkZCgiaWQiX3MsIGlkKTsKICAgICB9CiAKICAgICBpbnQgbGV2
ZWwgPSBtX2NvcmVPYmplY3QtPmlzSGVhZGluZygpID8gbV9jb3JlT2JqZWN0LT5oZWFkaW5nTGV2
ZWwoKSA6IG1fY29yZU9iamVjdC0+aGllcmFyY2hpY2FsTGV2ZWwoKTsKICAgICBpZiAobGV2ZWwp
Ci0gICAgICAgIG1hcC5hZGQoImxldmVsIiwgU3RyaW5nOjpudW1iZXIobGV2ZWwpKTsKKyAgICAg
ICAgbWFwLmFkZCgibGV2ZWwiX3MsIFN0cmluZzo6bnVtYmVyKGxldmVsKSk7CiAKICAgICBpbnQg
cm93Q291bnQgPSBtX2NvcmVPYmplY3QtPmF4Um93Q291bnQoKTsKICAgICBpZiAocm93Q291bnQp
Ci0gICAgICAgIG1hcC5hZGQoInJvd2NvdW50IiwgU3RyaW5nOjpudW1iZXIocm93Q291bnQpKTsK
KyAgICAgICAgbWFwLmFkZCgicm93Y291bnQiX3MsIFN0cmluZzo6bnVtYmVyKHJvd0NvdW50KSk7
CiAKICAgICBpbnQgY29sdW1uQ291bnQgPSBtX2NvcmVPYmplY3QtPmF4Q29sdW1uQ291bnQoKTsK
ICAgICBpZiAoY29sdW1uQ291bnQpCi0gICAgICAgIG1hcC5hZGQoImNvbGNvdW50IiwgU3RyaW5n
OjpudW1iZXIoY29sdW1uQ291bnQpKTsKKyAgICAgICAgbWFwLmFkZCgiY29sY291bnQiX3MsIFN0
cmluZzo6bnVtYmVyKGNvbHVtbkNvdW50KSk7CiAKICAgICBpbnQgcm93SW5kZXggPSBtX2NvcmVP
YmplY3QtPmF4Um93SW5kZXgoKTsKICAgICBpZiAocm93SW5kZXggIT0gLTEpCi0gICAgICAgIG1h
cC5hZGQoInJvd2luZGV4IiwgU3RyaW5nOjpudW1iZXIocm93SW5kZXgpKTsKKyAgICAgICAgbWFw
LmFkZCgicm93aW5kZXgiX3MsIFN0cmluZzo6bnVtYmVyKHJvd0luZGV4KSk7CiAKICAgICBpbnQg
Y29sdW1uSW5kZXggPSBtX2NvcmVPYmplY3QtPmF4Q29sdW1uSW5kZXgoKTsKICAgICBpZiAoY29s
dW1uSW5kZXggIT0gLTEpCi0gICAgICAgIG1hcC5hZGQoImNvbGluZGV4IiwgU3RyaW5nOjpudW1i
ZXIoY29sdW1uSW5kZXgpKTsKKyAgICAgICAgbWFwLmFkZCgiY29saW5kZXgiX3MsIFN0cmluZzo6
bnVtYmVyKGNvbHVtbkluZGV4KSk7CiAKICAgICBpZiAoaXM8QWNjZXNzaWJpbGl0eVRhYmxlQ2Vs
bD4obV9jb3JlT2JqZWN0KSkgewogICAgICAgICBhdXRvJiBjZWxsID0gZG93bmNhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlQ2VsbD4oKm1fY29yZU9iamVjdCk7CiAgICAgICAgIGludCByb3dTcGFuID0g
Y2VsbC5heFJvd1NwYW4oKTsKICAgICAgICAgaWYgKHJvd1NwYW4gIT0gLTEpCi0gICAgICAgICAg
ICBtYXAuYWRkKCJyb3dzcGFuIiwgU3RyaW5nOjpudW1iZXIocm93U3BhbikpOworICAgICAgICAg
ICAgbWFwLmFkZCgicm93c3BhbiJfcywgU3RyaW5nOjpudW1iZXIocm93U3BhbikpOwogCiAgICAg
ICAgIGludCBjb2x1bW5TcGFuID0gY2VsbC5heENvbHVtblNwYW4oKTsKICAgICAgICAgaWYgKGNv
bHVtblNwYW4gIT0gLTEpCi0gICAgICAgICAgICBtYXAuYWRkKCJjb2xzcGFuIiwgU3RyaW5nOjpu
dW1iZXIoY29sdW1uU3BhbikpOworICAgICAgICAgICAgbWFwLmFkZCgiY29sc3BhbiJfcywgU3Ry
aW5nOjpudW1iZXIoY29sdW1uU3BhbikpOwogICAgIH0KIAogICAgIFN0cmluZyBwbGFjZWhvbGRl
ciA9IG1fY29yZU9iamVjdC0+cGxhY2Vob2xkZXJWYWx1ZSgpOwogICAgIGlmICghcGxhY2Vob2xk
ZXIuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJwbGFjZWhvbGRlci10ZXh0IiwgcGxhY2Vo
b2xkZXIpOworICAgICAgICBtYXAuYWRkKCJwbGFjZWhvbGRlci10ZXh0Il9zLCBwbGFjZWhvbGRl
cik7CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0F1dG9Db21wbGV0ZSgpKQotICAg
ICAgICBtYXAuYWRkKCJhdXRvY29tcGxldGUiLCBtX2NvcmVPYmplY3QtPmF1dG9Db21wbGV0ZVZh
bHVlKCkpOworICAgICAgICBtYXAuYWRkKCJhdXRvY29tcGxldGUiX3MsIG1fY29yZU9iamVjdC0+
YXV0b0NvbXBsZXRlVmFsdWUoKSk7CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c0hh
c1BvcHVwKCkpCi0gICAgICAgIG1hcC5hZGQoImhhc3BvcHVwIiwgbV9jb3JlT2JqZWN0LT5wb3B1
cFZhbHVlKCkpOworICAgICAgICBtYXAuYWRkKCJoYXNwb3B1cCJfcywgbV9jb3JlT2JqZWN0LT5w
b3B1cFZhbHVlKCkpOwogCiAgICAgaWYgKG1fY29yZU9iamVjdC0+c3VwcG9ydHNDdXJyZW50KCkp
Ci0gICAgICAgIG1hcC5hZGQoImN1cnJlbnQiLCBtX2NvcmVPYmplY3QtPmN1cnJlbnRWYWx1ZSgp
KTsKKyAgICAgICAgbWFwLmFkZCgiY3VycmVudCJfcywgbV9jb3JlT2JqZWN0LT5jdXJyZW50VmFs
dWUoKSk7CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5zdXBwb3J0c1Bvc0luU2V0KCkpCi0gICAg
ICAgIG1hcC5hZGQoInBvc2luc2V0IiwgU3RyaW5nOjpudW1iZXIobV9jb3JlT2JqZWN0LT5wb3NJ
blNldCgpKSk7CisgICAgICAgIG1hcC5hZGQoInBvc2luc2V0Il9zLCBTdHJpbmc6Om51bWJlciht
X2NvcmVPYmplY3QtPnBvc0luU2V0KCkpKTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBv
cnRzU2V0U2l6ZSgpKQotICAgICAgICBtYXAuYWRkKCJzZXRzaXplIiwgU3RyaW5nOjpudW1iZXIo
bV9jb3JlT2JqZWN0LT5zZXRTaXplKCkpKTsKKyAgICAgICAgbWFwLmFkZCgic2V0c2l6ZSJfcywg
U3RyaW5nOjpudW1iZXIobV9jb3JlT2JqZWN0LT5zZXRTaXplKCkpKTsKIAogICAgIC8vIFRoZSBD
b3JlIEFBTSBzdGF0ZXMgdGhhdCBhbiBleHBsaWNpdGx5LXNldCB2YWx1ZSBzaG91bGQgYmUgZXhw
b3NlZCwgaW5jbHVkaW5nICJub25lIi4KICAgICBpZiAoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0
eU9iamVjdCo+KG1fY29yZU9iamVjdCktPmhhc0F0dHJpYnV0ZShIVE1MTmFtZXM6OmFyaWFfc29y
dEF0dHIpKSB7CkBAIC05NDIsMjcgKzk0MiwyNyBAQCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBB
Y2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6OmF0dHJpYnV0ZXMoKSBjb25zdAogICAgICAgICBjYXNl
IEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpJbnZhbGlkOgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb246OkFzY2VuZGluZzoKLSAg
ICAgICAgICAgIG1hcC5hZGQoInNvcnQiLCAiYXNjZW5kaW5nIik7CisgICAgICAgICAgICBtYXAu
YWRkKCJzb3J0Il9zLCAiYXNjZW5kaW5nIl9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uOjpEZXNjZW5kaW5nOgotICAgICAgICAg
ICAgbWFwLmFkZCgic29ydCIsICJkZXNjZW5kaW5nIik7CisgICAgICAgICAgICBtYXAuYWRkKCJz
b3J0Il9zLCAiZGVzY2VuZGluZyJfcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbjo6T3RoZXI6Ci0gICAgICAgICAgICBtYXAuYWRk
KCJzb3J0IiwgIm90aGVyIik7CisgICAgICAgICAgICBtYXAuYWRkKCJzb3J0Il9zLCAib3RoZXIi
X3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNvcnRE
aXJlY3Rpb246Ok5vbmU6Ci0gICAgICAgICAgICBtYXAuYWRkKCJzb3J0IiwgIm5vbmUiKTsKKyAg
ICAgICAgICAgIG1hcC5hZGQoInNvcnQiX3MsICJub25lIl9zKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgU3RyaW5nIGlzUmVhZE9ubHkgPSBtX2NvcmVPYmpl
Y3QtPnJlYWRPbmx5VmFsdWUoKTsKICAgICBpZiAoIWlzUmVhZE9ubHkuaXNFbXB0eSgpKQotICAg
ICAgICBtYXAuYWRkKCJyZWFkb25seSIsIGlzUmVhZE9ubHkpOworICAgICAgICBtYXAuYWRkKCJy
ZWFkb25seSJfcywgaXNSZWFkT25seSk7CiAKICAgICBTdHJpbmcgdmFsdWVEZXNjcmlwdGlvbiA9
IG1fY29yZU9iamVjdC0+dmFsdWVEZXNjcmlwdGlvbigpOwogICAgIGlmICghdmFsdWVEZXNjcmlw
dGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIG1hcC5hZGQoInZhbHVldGV4dCIsIHZhbHVlRGVzY3Jp
cHRpb24pOworICAgICAgICBtYXAuYWRkKCJ2YWx1ZXRleHQiX3MsIHZhbHVlRGVzY3JpcHRpb24p
OwogCiAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBXM0MgQ29yZSBBY2Nlc3NpYmlsaXR5IEFQSSBN
YXBwaW5ncyAxLjEsIHNlY3Rpb24gNS40LjEgR2VuZXJhbCBSdWxlczoKICAgICAvLyAiVXNlciBh
Z2VudHMgbXVzdCBleHBvc2UgdGhlIFdBSS1BUklBIHJvbGUgc3RyaW5nIGlmIHRoZSBBUEkgc3Vw
cG9ydHMgYSBtZWNoYW5pc20gdG8gZG8gc28uIgpAQCAtOTcxLDU5ICs5NzEsNTkgQEAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjphdHRyaWJ1dGVzKCkg
Y29uc3QKICAgICAvLyB3aXRoIEFSSUEgcm9sZXMsIGFuZCBpdCBtaWdodCBub3QgY29udGFpbiB0
aGUgYWN0dWFsIEFSSUEgcm9sZSB2YWx1ZSAoZS5nLiBEUHViIEFSSUEpLgogICAgIFN0cmluZyBy
b2xlU3RyaW5nID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eU9iamVjdCo+KG1fY29yZU9iamVj
dCktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnJvbGVBdHRyKTsKICAgICBpZiAoIXJvbGVTdHJp
bmcuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJ4bWwtcm9sZXMiLCByb2xlU3RyaW5nKTsK
KyAgICAgICAgbWFwLmFkZCgieG1sLXJvbGVzIl9zLCByb2xlU3RyaW5nKTsKIAogICAgIFN0cmlu
ZyBjb21wdXRlZFJvbGVTdHJpbmcgPSBtX2NvcmVPYmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygp
OwogICAgIGlmICghY29tcHV0ZWRSb2xlU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBtYXAu
YWRkKCJjb21wdXRlZC1yb2xlIiwgY29tcHV0ZWRSb2xlU3RyaW5nKTsKKyAgICAgICAgbWFwLmFk
ZCgiY29tcHV0ZWQtcm9sZSJfcywgY29tcHV0ZWRSb2xlU3RyaW5nKTsKIAogICAgICAgICAvLyBU
aGUgSFRNTCBBQU0gbWFwcyBzZXZlcmFsIGVsZW1lbnRzIHRvIEFSSUEgbGFuZG1hcmsgcm9sZXMu
IEluIG9yZGVyIGZvciB0aGUgdHlwZSBvZiBsYW5kbWFyawogICAgICAgICAvLyB0byBiZSBvYnRh
aW5hYmxlIGluIHRoZSBzYW1lIGZhc2hpb24gYXMgYW4gQVJJQSBsYW5kbWFyaywgZmFsbCBiYWNr
IG9uIHRoZSBjb21wdXRlZFJvbGVTdHJpbmcuCiAgICAgICAgIC8vIFdlIGFsc28gd2FudCB0byBk
byB0aGlzIGZvciB0aGUgc3R5bGUtZm9ybWF0LWdyb3VwIGVsZW1lbnQgdHlwZXMgc28gdGhhdCB0
aGUgdHlwZSBvZiBmb3JtYXQKICAgICAgICAgLy8gZ3JvdXAgaXQgaXMgZG9lc24ndCBnZXQgbG9z
dCB0byBhIGdlbmVyaWMgcGxhdGZvcm0gcm9sZS4KICAgICAgICAgaWYgKG1fY29yZU9iamVjdC0+
YXJpYVJvbGVBdHRyaWJ1dGUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6VW5rbm93biAmJiAobV9j
b3JlT2JqZWN0LT5pc0xhbmRtYXJrKCkgfHwgbV9jb3JlT2JqZWN0LT5pc1N0eWxlRm9ybWF0R3Jv
dXAoKSkpCi0gICAgICAgICAgICBtYXAuc2V0KCJ4bWwtcm9sZXMiLCBjb21wdXRlZFJvbGVTdHJp
bmcpOworICAgICAgICAgICAgbWFwLnNldCgieG1sLXJvbGVzIl9zLCBjb21wdXRlZFJvbGVTdHJp
bmcpOwogICAgIH0KIAogICAgIFN0cmluZyByb2xlRGVzY3JpcHRpb24gPSBtX2NvcmVPYmplY3Qt
PnJvbGVEZXNjcmlwdGlvbigpOwogICAgIGlmICghcm9sZURlc2NyaXB0aW9uLmlzRW1wdHkoKSkK
LSAgICAgICAgbWFwLmFkZCgicm9sZWRlc2NyaXB0aW9uIiwgcm9sZURlc2NyaXB0aW9uKTsKKyAg
ICAgICAgbWFwLmFkZCgicm9sZWRlc2NyaXB0aW9uIl9zLCByb2xlRGVzY3JpcHRpb24pOwogCiAg
ICAgU3RyaW5nIGRyb3BFZmZlY3QgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4o
bV9jb3JlT2JqZWN0KS0+Z2V0QXR0cmlidXRlKEhUTUxOYW1lczo6YXJpYV9kcm9wZWZmZWN0QXR0
cik7CiAgICAgaWYgKCFkcm9wRWZmZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgbWFwLmFkZCgiZHJv
cGVmZmVjdCIsIGRyb3BFZmZlY3QpOworICAgICAgICBtYXAuYWRkKCJkcm9wZWZmZWN0Il9zLCBk
cm9wRWZmZWN0KTsKIAogICAgIGlmIChtX2NvcmVPYmplY3QtPnN1cHBvcnRzRHJhZ2dpbmcoKSkK
LSAgICAgICAgbWFwLmFkZCgiZ3JhYmJlZCIsIG1fY29yZU9iamVjdC0+aXNHcmFiYmVkKCkgPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgbWFwLmFkZCgiZ3JhYmJlZCJfcywgbV9jb3JlT2Jq
ZWN0LT5pc0dyYWJiZWQoKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIFN0cmluZyBr
ZXlTaG9ydGN1dHMgPSBtX2NvcmVPYmplY3QtPmtleVNob3J0Y3V0c1ZhbHVlKCk7CiAgICAgaWYg
KCFrZXlTaG9ydGN1dHMuaXNFbXB0eSgpKQotICAgICAgICBtYXAuYWRkKCJrZXlzaG9ydGN1dHMi
LCBrZXlTaG9ydGN1dHMpOworICAgICAgICBtYXAuYWRkKCJrZXlzaG9ydGN1dHMiX3MsIGtleVNo
b3J0Y3V0cyk7CiAKICAgICBpZiAobV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVj
dChBY2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UHJlU3VwZXJzY3JpcHQp
IHx8IG1fY29yZU9iamVjdC0+aXNNYXRoTXVsdGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1h
dGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlByZVN1YnNjcmlwdCkpCi0gICAgICAgIG1hcC5hZGQo
Im11bHRpc2NyaXB0LXR5cGUiLCAicHJlIik7CisgICAgICAgIG1hcC5hZGQoIm11bHRpc2NyaXB0
LXR5cGUiX3MsICJwcmUiX3MpOwogICAgIGVsc2UgaWYgKG1fY29yZU9iamVjdC0+aXNNYXRoTXVs
dGlzY3JpcHRPYmplY3QoQWNjZXNzaWJpbGl0eU1hdGhNdWx0aXNjcmlwdE9iamVjdFR5cGU6OlBv
c3RTdXBlcnNjcmlwdCkgfHwgbV9jb3JlT2JqZWN0LT5pc01hdGhNdWx0aXNjcmlwdE9iamVjdChB
Y2Nlc3NpYmlsaXR5TWF0aE11bHRpc2NyaXB0T2JqZWN0VHlwZTo6UG9zdFN1YnNjcmlwdCkpCi0g
ICAgICAgIG1hcC5hZGQoIm11bHRpc2NyaXB0LXR5cGUiLCAicG9zdCIpOworICAgICAgICBtYXAu
YWRkKCJtdWx0aXNjcmlwdC10eXBlIl9zLCAicG9zdCJfcyk7CiAKICAgICBpZiAoYXV0byogbGl2
ZUNvbnRhaW5lciA9IG1fY29yZU9iamVjdC0+bGl2ZVJlZ2lvbkFuY2VzdG9yKGZhbHNlKSkgewog
ICAgICAgICBhdXRvIGxpdmVTdGF0dXMgPSBsaXZlQ29udGFpbmVyLT5saXZlUmVnaW9uU3RhdHVz
KCk7Ci0gICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlIiwgbGl2ZVN0YXR1cyk7CisgICAg
ICAgIG1hcC5hZGQoImNvbnRhaW5lci1saXZlIl9zLCBsaXZlU3RhdHVzKTsKICAgICAgICAgYXV0
byByZWxldmFudCA9IGxpdmVDb250YWluZXItPmxpdmVSZWdpb25SZWxldmFudCgpOwotICAgICAg
ICBtYXAuYWRkKCJjb250YWluZXItcmVsZXZhbnQiLCByZWxldmFudCk7CisgICAgICAgIG1hcC5h
ZGQoImNvbnRhaW5lci1yZWxldmFudCJfcywgcmVsZXZhbnQpOwogICAgICAgICBib29sIGlzQXRv
bWljID0gbGl2ZUNvbnRhaW5lci0+bGl2ZVJlZ2lvbkF0b21pYygpOwogICAgICAgICBpZiAoaXNB
dG9taWMpCi0gICAgICAgICAgICBtYXAuYWRkKCJjb250YWluZXItYXRvbWljIiwgInRydWUiKTsK
KyAgICAgICAgICAgIG1hcC5hZGQoImNvbnRhaW5lci1hdG9taWMiX3MsICJ0cnVlIl9zKTsKICAg
ICAgICAgY29uc3QgU3RyaW5nJiBsaXZlUm9sZSA9IHJvbGVTdHJpbmcuaXNFbXB0eSgpID8gY29t
cHV0ZWRSb2xlU3RyaW5nIDogcm9sZVN0cmluZzsKICAgICAgICAgaWYgKCFsaXZlUm9sZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBtYXAuYWRkKCJjb250YWluZXItbGl2ZS1yb2xlIiwgbGl2ZVJv
bGUpOworICAgICAgICAgICAgbWFwLmFkZCgiY29udGFpbmVyLWxpdmUtcm9sZSJfcywgbGl2ZVJv
bGUpOwogCiAgICAgICAgIGlmIChsaXZlQ29udGFpbmVyID09IG1fY29yZU9iamVjdCkgewotICAg
ICAgICAgICAgbWFwLmFkZCgibGl2ZSIsIGxpdmVTdGF0dXMpOwotICAgICAgICAgICAgbWFwLmFk
ZCgicmVsZXZhbnQiLCByZWxldmFudCk7CisgICAgICAgICAgICBtYXAuYWRkKCJsaXZlIl9zLCBs
aXZlU3RhdHVzKTsKKyAgICAgICAgICAgIG1hcC5hZGQoInJlbGV2YW50Il9zLCByZWxldmFudCk7
CiAgICAgICAgICAgICBpZiAoaXNBdG9taWMpCi0gICAgICAgICAgICAgICAgbWFwLmFkZCgiYXRv
bWljIiwgInRydWUiKTsKKyAgICAgICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiX3MsICJ0cnVl
Il9zKTsKICAgICAgICAgfSBlbHNlIGlmICghaXNBdG9taWMgJiYgbV9jb3JlT2JqZWN0LT5saXZl
UmVnaW9uQXRvbWljKCkpCi0gICAgICAgICAgICBtYXAuYWRkKCJhdG9taWMiLCAidHJ1ZSIpOwor
ICAgICAgICAgICAgbWFwLmFkZCgiYXRvbWljIl9zLCAidHJ1ZSJfcyk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG1hcDsKQEAgLTEyOTEsMzQgKzEyOTEsMzQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlP
YmplY3RBdHNwaTo6ZWZmZWN0aXZlUm9sZU5hbWUoKSBjb25zdAogCiAgICAgc3dpdGNoICgqZWZm
ZWN0aXZlKSB7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6SW1hZ2U6Ci0gICAgICAgIHJldHVybiAi
aW1hZ2UiOworICAgICAgICByZXR1cm4gImltYWdlIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6
OlRleHQ6CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6U3RhdGljOgotICAgICAgICByZXR1cm4gInRl
eHQiOworICAgICAgICByZXR1cm4gInRleHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6SW52
YWxpZFJvbGU6Ci0gICAgICAgIHJldHVybiAiaW52YWxpZCI7CisgICAgICAgIHJldHVybiAiaW52
YWxpZCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpQYW5lbDoKLSAgICAgICAgcmV0dXJuICJw
YW5lbCI7CisgICAgICAgIHJldHVybiAicGFuZWwiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6
UGFzc3dvcmRUZXh0OgotICAgICAgICByZXR1cm4gInBhc3N3b3JkIHRleHQiOworICAgICAgICBy
ZXR1cm4gInBhc3N3b3JkIHRleHQiX3M7CiAgICAgY2FzZSBBdHNwaTo6Um9sZTo6VGFibGU6Ci0g
ICAgICAgIHJldHVybiAidGFibGUiOworICAgICAgICByZXR1cm4gInRhYmxlIl9zOwogICAgIGNh
c2UgQXRzcGk6OlJvbGU6OlRhYmxlUm93OgotICAgICAgICByZXR1cm4gInRhYmxlIHJvdyI7Cisg
ICAgICAgIHJldHVybiAidGFibGUgcm93Il9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlRhYmxl
Q2VsbDoKLSAgICAgICAgcmV0dXJuICJ0YWJsZSBjZWxsIjsKKyAgICAgICAgcmV0dXJuICJ0YWJs
ZSBjZWxsIl9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6OlNlY3Rpb246Ci0gICAgICAgIHJldHVy
biAic2VjdGlvbiI7CisgICAgICAgIHJldHVybiAic2VjdGlvbiJfczsKICAgICBjYXNlIEF0c3Bp
OjpSb2xlOjpNYXRoRnJhY3Rpb246Ci0gICAgICAgIHJldHVybiAibWF0aCBmcmFjdGlvbiI7Cisg
ICAgICAgIHJldHVybiAibWF0aCBmcmFjdGlvbiJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpN
YXRoUm9vdDoKLSAgICAgICAgcmV0dXJuICJtYXRoIHJvb3QiOworICAgICAgICByZXR1cm4gIm1h
dGggcm9vdCJfczsKICAgICBjYXNlIEF0c3BpOjpSb2xlOjpTdWJzY3JpcHQ6Ci0gICAgICAgIHJl
dHVybiAic3Vic2NyaXB0IjsKKyAgICAgICAgcmV0dXJuICJzdWJzY3JpcHQiX3M7CiAgICAgY2Fz
ZSBBdHNwaTo6Um9sZTo6U3VwZXJzY3JpcHQ6Ci0gICAgICAgIHJldHVybiAic3VwZXJzY3JpcHQi
OworICAgICAgICByZXR1cm4gInN1cGVyc2NyaXB0Il9zOwogICAgIGNhc2UgQXRzcGk6OlJvbGU6
OkxhbmRtYXJrOgotICAgICAgICByZXR1cm4gImxhbmRtYXJrIjsKKyAgICAgICAgcmV0dXJuICJs
YW5kbWFyayJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMzI5
LDcgKzEzMjksNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjplZmZlY3RpdmVS
b2xlTmFtZSgpIGNvbnN0CiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpyb2xlTmFt
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvcmVPYmplY3QpCi0gICAgICAgIHJldHVybiAiaW52
YWxpZCI7CisgICAgICAgIHJldHVybiAiaW52YWxpZCJfczsKIAogICAgIGF1dG8gZWZmZWN0aXZl
ID0gZWZmZWN0aXZlUm9sZU5hbWUoKTsKICAgICBpZiAoIWVmZmVjdGl2ZS5pc0VtcHR5KCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxp
dHlPYmplY3RUZXh0QXRzcGkuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAppbmRleCBlNGNmNmMwZGEwZTVkN2Qz
MGNkN2UyNzljYTdlMDI2ZGQzZGE5Nzc0Li4xOGI5ZDZkYzk0NWJmMDJmZjg4ZjUwNDZhYjY2NDRk
MmY0N2U2ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3Bp
L0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKQEAgLTc4
MywxMiArNzgzLDEyIEBAIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6VGV4dEF0dHJpYnV0ZXMg
QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjp0ZXh0QXR0cmlidXRlCiAgICAgICAgIGFkZEF0dHJp
YnV0ZUlmTmVlZGVkKCJmYW1pbHktbmFtZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5maXJzdEZh
bWlseSgpKTsKICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInNpemUiX3MsIG1ha2VTdHJp
bmcoc3RkOjpyb3VuZChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAqIDcyIC8gV2ViQ29y
ZTo6c2NyZWVuRFBJKCkpLCAicHQiKSk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ3
ZWlnaHQiX3MsIG1ha2VTdHJpbmcoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHN0eWxlLmZvbnRDYXNjYWRl
KCkud2VpZ2h0KCkpKSk7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywg
c3R5bGUuZm9udENhc2NhZGUoKS5pdGFsaWMoKSA/ICJpdGFsaWMiIDogIm5vcm1hbCIpOwotICAg
ICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgic3RyaWtldGhyb3VnaCJfcywgc3R5bGUudGV4dERl
Y29yYXRpb25MaW5lKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoID8gInRydWUi
IDogImZhbHNlIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJ1bmRlcmxpbmUiX3Ms
IHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUgPyAic2luZ2xlIiA6ICJub25lIik7Ci0gICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJp
bnZpc2libGUiX3MsIHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAi
dHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImVkaXRhYmxl
Il9zLCBtX2NvcmVPYmplY3QtPmNhblNldFZhbHVlQXR0cmlidXRlKCkgPyAidHJ1ZSIgOiAiZmFs
c2UiKTsKLSAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImRpcmVjdGlvbiJfcywgc3R5bGUu
ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciIgOiAicnRsIik7CisgICAg
ICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJzdHlsZSJfcywgc3R5bGUuZm9udENhc2NhZGUoKS5p
dGFsaWMoKSA/ICJpdGFsaWMiX3MgOiAibm9ybWFsIl9zKTsKKyAgICAgICAgYWRkQXR0cmlidXRl
SWZOZWVkZWQoInN0cmlrZXRocm91Z2giX3MsIHN0eWxlLnRleHREZWNvcmF0aW9uTGluZSgpICYg
VGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsK
KyAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoInVuZGVybGluZSJfcywgc3R5bGUudGV4dERl
Y29yYXRpb25MaW5lKCkgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSA/ICJzaW5nbGUi
X3MgOiAibm9uZSJfcyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbnZpc2libGUi
X3MsIHN0eWxlLnZpc2liaWxpdHkoKSA9PSBWaXNpYmlsaXR5OjpIaWRkZW4gPyAidHJ1ZSJfcyA6
ICJmYWxzZSJfcyk7CisgICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJlZGl0YWJsZSJfcywg
bV9jb3JlT2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpID8gInRydWUiX3MgOiAiZmFsc2Ui
X3MpOworICAgICAgICBhZGRBdHRyaWJ1dGVJZk5lZWRlZCgiZGlyZWN0aW9uIl9zLCBzdHlsZS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfcyk7CiAK
ICAgICAgICAgaWYgKCFzdHlsZS50ZXh0SW5kZW50KCkuaXNVbmRlZmluZWQoKSkKICAgICAgICAg
ICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJpbmRlbnQiX3MsIG1ha2VTdHJpbmcodmFsdWVGb3JM
ZW5ndGgoc3R5bGUudGV4dEluZGVudCgpLCBtX2NvcmVPYmplY3QtPnNpemUoKS53aWR0aCgpKS50
b0ludCgpKSk7CkBAIC03OTksMTggKzc5OSwxOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OlRleHRBdHRyaWJ1dGVzIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6dGV4dEF0dHJpYnV0ZQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6TGVmdDoKICAg
ICAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICAgICAgYWRkQXR0
cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJsZWZ0Iik7CisgICAgICAgICAgICBh
ZGRBdHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImxlZnQiX3MpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CiAgICAgICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0UmlnaHQ6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1
dGVJZk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Iik7CisgICAgICAgICAgICBhZGRB
dHRyaWJ1dGVJZk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgInJpZ2h0Il9zKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoKICAgICAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRDZW50ZXI6Ci0gICAgICAgICAgICBhZGRBdHRyaWJ1
dGVJZk5lZWRlZCgianVzdGlmaWNhdGlvbiJfcywgImNlbnRlciIpOworICAgICAgICAgICAgYWRk
QXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJjZW50ZXIiX3MpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6SnVzdGlmeToKLSAgICAg
ICAgICAgIGFkZEF0dHJpYnV0ZUlmTmVlZGVkKCJqdXN0aWZpY2F0aW9uIl9zLCAiZmlsbCIpOwor
ICAgICAgICAgICAgYWRkQXR0cmlidXRlSWZOZWVkZWQoImp1c3RpZmljYXRpb24iX3MsICJmaWxs
Il9zKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlSb290QXRz
cGkuY3BwCmluZGV4IGVlNmZhZDAyMGJjM2Y4OGEwODRiNmRmYWYxNmFmYzVkNDIxYzc2ODUuLmQy
MDNmNTc0MmE5MTVhOTVmNDEwYTNlOWNkNDdjNzhmNTdmNjU1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eVJvb3RBdHNwaS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5Um9v
dEF0c3BpLmNwcApAQCAtMTc1LDggKzE3NSw4IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJvb3RBdHNw
aTo6c2V0UGF0aChTdHJpbmcmJiBwYXRoKQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSb290QXRzcGk6
OmVtYmVkZGVkKGNvbnN0IGNoYXIqIHBhcmVudFVuaXF1ZU5hbWUsIGNvbnN0IGNoYXIqIHBhcmVu
dFBhdGgpCiB7Ci0gICAgbV9wYXJlbnRVbmlxdWVOYW1lID0gcGFyZW50VW5pcXVlTmFtZTsKLSAg
ICBtX3BhcmVudFBhdGggPSBwYXJlbnRQYXRoOworICAgIG1fcGFyZW50VW5pcXVlTmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgocGFyZW50VW5pcXVlTmFtZSk7CisgICAgbV9wYXJlbnRQYXRoID0gU3Ry
aW5nOjpmcm9tVVRGOChwYXJlbnRQYXRoKTsKICAgICBBY2Nlc3NpYmlsaXR5QXRzcGk6OnNpbmds
ZXRvbigpLnBhcmVudENoYW5nZWQoKnRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQppbmRleCBhNDU2NjUxOTZj
NWE5OWExZjI4YTBmZjNkYTY3NzU1ZDFiODJhNTNmLi43OWI5MTVmYmFjMTFhZDNmMTc0OGY5MzJh
NjVjOWNlZDA0YjcwNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KQEAgLTQyLDQ2ICs0Miw0NiBAQCB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQVhDb3JlT2JqZWN0KiBvYmopCiAgICAgb2JqLT5zZXRX
cmFwcGVyKHdyYXBwZXIuZ2V0KCkpOwogfQogCi1TdHJpbmcgQVhPYmplY3RDYWNoZTo6bm90aWZp
Y2F0aW9uUGxhdGZvcm1OYW1lKEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKK0FTQ0lJTGl0
ZXJhbCBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhOb3RpZmljYXRp
b24gbm90aWZpY2F0aW9uKQogewotICAgIFN0cmluZyBuYW1lOworICAgIEFTQ0lJTGl0ZXJhbCBu
YW1lOwogCiAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKICAgICBjYXNlIEFYQWN0aXZlRGVz
Y2VuZGFudENoYW5nZWQ6CiAgICAgY2FzZSBBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkOgotICAg
ICAgICBuYW1lID0gIkFYRm9jdXNDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEZvY3VzQ2hh
bmdlZCJfczsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEltYWdlT3ZlcmxheUNoYW5nZWQ6
Ci0gICAgICAgIG5hbWUgPSAiQVhJbWFnZU92ZXJsYXlDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9
ICJBWEltYWdlT3ZlcmxheUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhQ
YWdlU2Nyb2xsZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhQYWdlU2Nyb2xsZWQiOworICAgICAgICBu
YW1lID0gIkFYUGFnZVNjcm9sbGVkIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFYU2Vs
ZWN0ZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdl
ZCI7CisgICAgICAgIG5hbWUgPSAiQVhTZWxlY3RlZENlbGxzQ2hhbmdlZCJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBWFNlbGVjdGVkVGV4dENoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAi
QVhTZWxlY3RlZFRleHRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWFNlbGVjdGVkVGV4dENo
YW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhMaXZlUmVnaW9uQ2hhbmdlZDoK
ICAgICBjYXNlIEFYTGl2ZVJlZ2lvbkNyZWF0ZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhMaXZlUmVn
aW9uQ2hhbmdlZCI7CisgICAgICAgIG5hbWUgPSAiQVhMaXZlUmVnaW9uQ2hhbmdlZCJfczsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEludmFsaWRTdGF0dXNDaGFuZ2VkOgotICAgICAgICBu
YW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYSW52YWxp
ZFN0YXR1c0NoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhDaGVja2VkU3Rh
dGVDaGFuZ2VkOgogICAgIGNhc2UgQVhWYWx1ZUNoYW5nZWQ6Ci0gICAgICAgIG5hbWUgPSAiQVhW
YWx1ZUNoYW5nZWQiOworICAgICAgICBuYW1lID0gIkFYVmFsdWVDaGFuZ2VkIl9zOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEFYRXhwYW5kZWRDaGFuZ2VkOgotICAgICAgICBuYW1lID0gIkFY
RXhwYW5kZWRDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEV4cGFuZGVkQ2hhbmdlZCJfczsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBWEN1cnJlbnRTdGF0ZUNoYW5nZWQ6Ci0gICAgICAg
IG5hbWUgPSAiQVhDdXJyZW50U3RhdGVDaGFuZ2VkIjsKKyAgICAgICAgbmFtZSA9ICJBWEN1cnJl
bnRTdGF0ZUNoYW5nZWQiX3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQVhTb3J0RGlyZWN0
aW9uQ2hhbmdlZDoKLSAgICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIjsKKyAg
ICAgICAgbmFtZSA9ICJBWFNvcnREaXJlY3Rpb25DaGFuZ2VkIl9zOwogICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTk4LDE1ICs5OCwxNiBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVj
dCwgQVhOb3RpZmljYXRpbwogICAgIC8vIGlPUyBub3RpZmljYXRpb25zIG11c3QgdWx0aW1hdGVs
eSBjYWxsIFVJS2l0IFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24uCiAgICAgLy8gQnV0
IFdlYkNvcmUgaXMgbm90IGxpbmtlZCB3aXRoIFVJS2l0LiBTbyBhIHdvcmthcm91bmQgaXMgdG8g
b3ZlcnJpZGUgdGhlIHdyYXBwZXIncwogICAgIC8vIHBvc3ROb3RpZmljYXRpb24gbWV0aG9kIGlu
IHRoZSBzeXN0ZW0gV2ViS2l0QWNjZXNzaWJpbGl0eSBidW5kbGUgdGhhdCBkb2VzIGxpbmsgVUlL
aXQuCi0gICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5hbWUgPSBub3RpZmljYXRpb25QbGF0Zm9ybU5h
bWUobm90aWZpY2F0aW9uKTsKLSAgICBpZiAobm90aWZpY2F0aW9uTmFtZS5pc0VtcHR5KCkpCisg
ICAgYXV0byBub3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKG5vdGlm
aWNhdGlvbik7CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0aW9uOm5vdGlmaWNh
dGlvbk5hbWVdOworICAgIGF1dG8gbnNOb3RpZmljYXRpb25OYW1lID0gbm90aWZpY2F0aW9uTmFt
ZS5jcmVhdGVOU1N0cmluZygpOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBwb3N0Tm90aWZpY2F0
aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiAKICAgICAvLyBUbyBzaW11bGF0ZSBBWCBu
b3RpZmljYXRpb25zIGZvciBMYXlvdXRUZXN0cyBvbiB0aGUgc2ltdWxhdG9yLCBjYWxsCiAgICAg
Ly8gdGhlIHdyYXBwZXIncyBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uLgotICAgIFtv
YmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm5vdGlmaWNh
dGlvbk5hbWVdOworICAgIFtvYmplY3QtPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90
aWZpY2F0aW9uOm5zTm90aWZpY2F0aW9uTmFtZS5nZXQoKV07CiB9CiAKIHZvaWQgQVhPYmplY3RD
YWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFYQ29yZU9iamVj
dCogb2JqZWN0LCBjb25zdCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCYsIGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCA3
OTE5MGMxOTViNzdlMTY2NGVlMDdmMzI3MzZiM2RhZDE2MTA1MTNhLi41MzhiNzg1ZDY5ZDkwZmY2
MWVlNzc2YWFiMzJmOTU0Y2U1ZTU4Njc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpAQCAtMTY3MSwxMiArMTY3MSwxMiBAQCAtIChCT09MKWFjY2Vzc2liaWxpdHlT
Y3JvbGw6KFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbilkaXJlY3Rpb24KICAgICBCT09M
IHJlc3VsdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zY3JvbGxCeVBhZ2Uoc2Nyb2xsRGlyZWN0
aW9uKTsKIAogICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5h
bWUgPSBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25QbGF0Zm9ybU5hbWUoQVhPYmplY3RDYWNo
ZTo6QVhOb3RpZmljYXRpb246OkFYUGFnZVNjcm9sbGVkKTsKLSAgICAgICAgW3NlbGYgcG9zdE5v
dGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lXTsKKyAgICAgICAgYXV0byBub3RpZmljYXRpb25O
YW1lID0gQVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUGxhdGZvcm1OYW1lKEFYT2JqZWN0Q2Fj
aGU6OkFYTm90aWZpY2F0aW9uOjpBWFBhZ2VTY3JvbGxlZCkuY3JlYXRlTlNTdHJpbmcoKTsKKyAg
ICAgICAgW3NlbGYgcG9zdE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25OYW1lLmdldCgpXTsKIAog
ICAgICAgICBDR1BvaW50IHNjcm9sbFBvcyA9IFtzZWxmIF9hY2Nlc3NpYmlsaXR5U2Nyb2xsUG9z
aXRpb25dOwogICAgICAgICBOU1N0cmluZyAqdGVzdFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiQVhTY3JvbGwgW3Bvc2l0aW9uOiAlLjJmICUuMmZdIiwgc2Nyb2xsUG9zLngs
IHNjcm9sbFBvcy55XTsKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25OYW1lIHVzZXJJbmZvOkB7IEAic3RhdHVzIiA6IHRlc3RTdHJpbmcg
fV07CisgICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246bm90aWZp
Y2F0aW9uTmFtZS5nZXQoKSB1c2VySW5mbzpAeyBAInN0YXR1cyIgOiB0ZXN0U3RyaW5nIH1dOwog
ICAgIH0KIAogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0aGlzIG9iamVjdCBoYW5kbGVkIHRoZSBz
Y3JvbGwgYW5kIG5vIG90aGVyIGFuY2VzdG9yIHNob3VsZCBhdHRlbXB0IHNjcm9sbGluZy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXgg
NjM2OTY3MDFmNDQyOTcxZDFjMDI1Zjg3ODNmZGY4MjNmM2I5OGQxMC4uNjRiOGNhZTc2NDNkMTIz
MDY1NDlmOGI3OGY2NGJiZWY1NDk0ZDI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCBWYWx1ZU9yRXhj
ZXB0aW9uIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJbldvcmxkKERPTVdyYXBwZXJX
b3JsZCYgd29ybGQsCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIGlmIChtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90
ZWN0aW9ucygpKSB7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3Jp
cHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAgICAgIGRv
Y3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24t
YXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBTQ1JJUFRDT05UUk9MTEVSX1JFTEVBU0Vf
TE9HX0VSUk9SKExvYWRpbmcsICJleGVjdXRlU2NyaXB0SW5Xb3JsZDogSWdub3JpbmcgdXNlciBz
Y3JpcHQgaW5qZWN0aW9uIGZvciBub24gYXBwLWJvdW5kIGRvbWFpbiIpOwogICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoRXhjZXB0aW9uRGV0YWlscyB7ICJJZ25vcmluZyB1c2VyIHNjcmlw
dCBpbmplY3Rpb24gZm9yIG5vbi1hcHAgYm91bmQgZG9tYWluIl9zIH0pOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5k
ZXggZDNlOTgxOWJkNTMxZjg0ODZhMzE3YWI5ZjllZDgzYTk4ODViZTJiYS4uODJmYTc1Zjk2NzMx
ZmI0MTVkYTM1Yzk0ZGM1ZmNjM2Q5N2EwNDc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9v
bCBXZWJDb250ZW50UmVhZGVyOjpyZWFkRmlsZVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoLCBQcmVz
ZW50YXRpb25TaXplLCBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvIG1h
cmt1cCA9IHVybFRvTWFya3VwKFVSTCh7IH0sIHBhdGgpLCBwYXRoKTsKLSAgICBhZGRGcmFnbWVu
dChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cCwgImZp
bGU6Ly8iLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICBhZGRGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIG1hcmt1cCwg
ImZpbGU6Ly8iX3MsIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9F
ZGl0b3JJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KaW5k
ZXggOTAwZWQ1ZmY4NGI5MzFhNjlmZmNhYjgwYWU1ZTNkYTIxYzVmNjRkYi4uNjM2MjkzNjU3M2Jh
ZWM2OGEyNTZlNWNhNmNlYjgxNzZmNDMzODMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9z
L0VkaXRvcklPUy5tbQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdu
bWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgog
ICAgIGlmICghdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgY29uc3QgY2hh
ciAqbmV3VmFsdWUgPSBudWxscHRyOworICAgIEFTQ0lJTGl0ZXJhbCBuZXdWYWx1ZTsKICAgICBU
ZXh0QWxpZ25Nb2RlIHRleHRBbGlnbiA9ICp2YWx1ZTsKICAgICBzd2l0Y2ggKHRleHRBbGlnbikg
ewogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6CkBAIC0xMDAsMjEgKzEwMCwyMSBAQCB2
b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlv
bihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICAgICAgLy8gbm8tb3AKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFdyaXRpbmdEaXJlY3Rpb246OkxlZnRUb1JpZ2h0OgotICAg
ICAgICAgICAgbmV3VmFsdWUgPSAibGVmdCI7CisgICAgICAgICAgICBuZXdWYWx1ZSA9ICJsZWZ0
Il9zOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV3JpdGluZ0RpcmVjdGlvbjo6
UmlnaHRUb0xlZnQ6Ci0gICAgICAgICAgICBuZXdWYWx1ZSA9ICJyaWdodCI7CisgICAgICAgICAg
ICBuZXdWYWx1ZSA9ICJyaWdodCJfczsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkxlZnQ6CiAgICAg
Y2FzZSBUZXh0QWxpZ25Nb2RlOjpXZWJLaXRMZWZ0OgotICAgICAgICBuZXdWYWx1ZSA9ICJyaWdo
dCI7CisgICAgICAgIG5ld1ZhbHVlID0gInJpZ2h0Il9zOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6V2ViS2l0
UmlnaHQ6Ci0gICAgICAgIG5ld1ZhbHVlID0gImxlZnQiOworICAgICAgICBuZXdWYWx1ZSA9ICJs
ZWZ0Il9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OkNlbnRlcjoK
ICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OldlYktpdENlbnRlcjoKQEAgLTEyMyw3ICsxMjMsNyBA
QCB2b2lkIEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVj
dGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcgogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBp
ZiAoIW5ld1ZhbHVlKQorICAgIGlmIChuZXdWYWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBtX2RvY3VtZW50LmZvY3VzZWRFbGVt
ZW50KCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJs
ZVN0eWxlcygpCiAgICAgYXV0byBkZWZhdWx0U3R5bGUgPSBlZGl0aW5nU3R5bGUtPnN0eWxlKCkt
Pm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3aWRnZXRzIGltcGxlbWVudCBiYWNr
Z3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5LiBUaGVpciBib2R5IGVsZW1lbnQg
d2lsbCBub3QgaGF2ZSBvbmUuCi0gICAgZGVmYXVsdFN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvciwgInJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wKSIpOworICAgIGRl
ZmF1bHRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsICJyZ2Jh
KDI1NSwgMjU1LCAyNTUsIDAuMCkiX3MpOwogICAgIAogICAgIC8vIFJlbW92ZSBwcm9wZXJ0aWVz
IHRoYXQgdGhlIHVzZXIgY2FuIG1vZGlmeSwgbGlrZSBmb250LXdlaWdodC4gCiAgICAgLy8gQWxz
byByZW1vdmUgZm9udC1mYW1pbHksIHBlciBISSBzcGVjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbGlid3BlL0VkaXRvckxpYldQRS5jcHAKaW5kZXggYjk3OGUyZThmOGU4ODJiYmM3ZDBm
OTFjYWQ3NmMzODI1MDhlOWEzZi4uNDkxNDkwNTc5ZTZiOTExNDk4NDQ5Y2E4MjlmYzkxNTg4NTFh
YjhkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9saWJ3cGUvRWRpdG9yTGli
V1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2xpYndwZS9FZGl0b3JMaWJXUEUu
Y3BwCkBAIC00Niw3ICs0Niw3IEBAIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoUGFzdGVib2FyZCYgcGFzCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKCJ0ZXh0L2h0bWw7Y2hhcnNl
dD11dGYtOCIpICYmIGZyYW1lLmRvY3VtZW50KCkpIHsKLSAgICAgICAgU3RyaW5nIG1hcmt1cCA9
IHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiKTsKKyAgICAg
ICAgU3RyaW5nIG1hcmt1cCA9IHBhc3RlYm9hcmQucmVhZFN0cmluZygidGV4dC9odG1sO2NoYXJz
ZXQ9dXRmLTgiX3MpOwogICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpm
cmFtZS5kb2N1bWVudCgpLCBtYXJrdXAsIGVtcHR5U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5n
QW5kUGx1Z2luQ29udGVudCk7CiAgICAgfQogCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tUGFzdGVib2FyZERhdGEoUGFz
dGVib2FyZCYgcGFzCiAKICAgICBpZiAodHlwZXMuY29udGFpbnMoInRleHQvcGxhaW47Y2hhcnNl
dD11dGYtOCIpKSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQocmFuZ2UsIHBhc3RlYm9hcmQucmVhZFN0cmluZygi
dGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IikpOworICAgICAgICByZXR1cm4gY3JlYXRlRnJhZ21l
bnRGcm9tVGV4dChyYW5nZSwgcGFzdGVib2FyZC5yZWFkU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJz
ZXQ9dXRmLTgiX3MpKTsKICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDM4NGE2MDhiYTMzZDRkMzFiYTE5ZjU3
MzAxZmY4ZWM5Y2YyMTZhZTIuLmI3YjkwM2ViZjcwZGZhYjYzNzQwNThmNjFkNTUwZDg5YzU4YmM0
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTk3LDcg
KzE5Nyw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+IHsKICAgICAgICAgcmV0dXJuIHVybC5z
dHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpICsgIi4uLiI7
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICAgICAgcmV0dXJuICJbdXJs
XSI7CisgICAgICAgIHJldHVybiAiW3VybF0iX3M7CiAjZW5kaWYKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKaW5kZXggNDU3YjVhMTFhZDhjMGMwMTI1OWE4OGMy
ODQ0OWEyMTA1Zjg2MjZhMy4uM2QyN2U4NjY0OTg5Y2Y0NzVkZGFjMzI0YzA4ODI3NjgzZDViZjY2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC0xMDMsNyArMTAzLDcg
QEAgY2xhc3MgT2Zmc2NyZWVuQ2FudmFzIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8T2Zmc2Ny
ZWVuQ2FudmFzPiwgcHVibGljIENhbnZhc0IKIHB1YmxpYzoKIAogICAgIHN0cnVjdCBJbWFnZUVu
Y29kZU9wdGlvbnMgewotICAgICAgICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciOworICAgICAg
ICBTdHJpbmcgdHlwZSA9ICJpbWFnZS9wbmciX3M7CiAgICAgICAgIGRvdWJsZSBxdWFsaXR5ID0g
MS4wOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHAKaW5kZXggNGRmZGU2NjNlOGJiODMzMjlmNTYyMDUxMzM0OTVhN2FiYjMyYmNkMC4uNTBh
ZDVjYmM5NjVkZTAwMGI4ODE2ODk3YmFlOTgxN2EzZWRjOWZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTExNzIsNyArMTE3Miw3IEBAIGlu
dCBJbnNwZWN0b3JDYW52YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRh
KQogCiAgICAgICAgICAgICBpZiAob2Zmc2NyZWVuQ2FudmFzLT5vcmlnaW5DbGVhbigpICYmIG9m
ZnNjcmVlbkNhbnZhcy0+aGFzQ3JlYXRlZEltYWdlQnVmZmVyKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoYXV0byAqYnVmZmVyID0gb2Zmc2NyZWVuQ2FudmFzLT5idWZmZXIoKSkKLSAgICAgICAg
ICAgICAgICAgICAgZGF0YVVSTCA9IGJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmciKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGF0YVVSTCA9IGJ1ZmZlci0+dG9EYXRhVVJMKCJpbWFnZS9wbmci
X3MpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpbmRleCA9IGluZGV4Rm9yRGF0YShk
YXRhVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNl
TG9hZGVyU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvc291cC9SZXNvdXJjZUxvYWRl
clNvdXAuY3BwCmluZGV4IDEyNjMyZDZlNjdkMzgzN2ExZWQ2ODQxNWQwNDI5MTA4MWQ2NTI2ZDgu
LmFhMjRmNTMzNTgzODM2Mzg2ZDdkNTY1MzRjYjg5OTQ4NTM1NTRlMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9zb3VwL1Jlc291cmNlTG9hZGVyU291cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL3NvdXAvUmVzb3VyY2VMb2FkZXJTb3VwLmNwcApAQCAtNTMsNyAr
NTMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkR1Jlc291cmNlKCkKICAgICAgICAgR1Vu
aXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwogICAgICAgICBHUmVmUHRyPEdCeXRlcz4gYnl0ZXMg
PSBhZG9wdEdSZWYoc3RhdGljX2Nhc3Q8R0J5dGVzKj4oZ190YXNrX3Byb3BhZ2F0ZV9wb2ludGVy
KHRhc2ssICZlcnJvci5vdXRQdHIoKSkpKTsKICAgICAgICAgaWYgKCFieXRlcykgewotICAgICAg
ICAgICAgbG9hZGVyLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoZXJy
b3ItPmRvbWFpbiksIGVycm9yLT5jb2RlLCB1cmwsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1l
c3NhZ2UpKSk7CisgICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJp
bmcgeyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdXJs
LCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTY0LDEwICs2NCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjps
b2FkR1Jlc291cmNlKCkKICAgICAgICAgY29uc3QgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PGNv
bnN0IGd1Y2hhcio+KGdfYnl0ZXNfZ2V0X2RhdGEoYnl0ZXMuZ2V0KCksICZkYXRhU2l6ZSkpOwog
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZpbGVOYW1lKGdfcGF0aF9nZXRfYmFzZW5hbWUodXJs
LnBhdGgoKS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gY29udGVu
dFR5cGUoZ19jb250ZW50X3R5cGVfZ3Vlc3MoZmlsZU5hbWUuZ2V0KCksIGRhdGEsIGRhdGFTaXpl
LCBudWxscHRyKSk7Ci0gICAgICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UgeyB1cmwsIGV4
dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUuZ2V0KCkpLCBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KGRhdGFTaXplKSwgZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRl
bnRUeXBlLmdldCgpKSB9OworICAgICAgICBTdHJpbmcgY29udGVudFR5cGVTdHJpbmcgeyBjb250
ZW50VHlwZS5nZXQoKSB9OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlIHsgdXJs
LCBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlU3RyaW5nKSwgc3RhdGlj
X2Nhc3Q8bG9uZyBsb25nPihkYXRhU2l6ZSksIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShj
b250ZW50VHlwZVN0cmluZykgfTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUo
MjAwKTsKICAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIl9zKTsKLSAgICAg
ICAgcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlw
ZSwgY29udGVudFR5cGUuZ2V0KCkpOworICAgICAgICByZXNwb25zZS5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZVN0cmluZyk7CiAgICAg
ICAgIHJlc3BvbnNlLnNldFNvdXJjZShSZXNvdXJjZVJlc3BvbnNlOjpTb3VyY2U6Ok5ldHdvcmsp
OwogICAgICAgICBsb2FkZXItPmRlbGl2ZXJSZXNwb25zZUFuZERhdGEocmVzcG9uc2UsIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmdldCgpKSk7CiAgICAgfSwgcHJvdGVjdGVkVGhpcy5sZWFr
UmVmKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cAppbmRleCBlOTI4Y2U5YTE0ZmFiZmVlZWZkNDkwOWVkZDFjMGRiOWE0Y2ZmMmM2Li5kNzFjM2Y3
ODRiMmVmY2IzYTFlMjc2NDZhNGVkYWQyOTA3ZTQ3NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBD
b250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51
QWN0aW9uIGFjdGlvbiwgY28KICAgICAgICAgYnJlYWs7CiAjaWYgUExBVEZPUk0oR1RLKQogICAg
IGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnUGFzdGVBc1BsYWluVGV4dDoKLSAgICAgICAgZnJhbWUt
PmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlQXNQbGFpblRleHQiKS5leGVjdXRlKCk7CisgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZUFzUGxhaW5UZXh0Il9zKS5leGVjdXRlKCk7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnRGVsZXRlOgogICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCkucGVyZm9ybURlbGV0ZSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBA
IHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250
ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgICAgIGluc2VydFVuaWNvZGVDaGFyYWN0ZXIo
emVyb1dpZHRoTm9uSm9pbmVyLCAqZnJhbWUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1NlbGVjdEFsbDoKLSAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1h
bmQoIlNlbGVjdEFsbCJfcykuZXhlY3V0ZSgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ0luc2VydEVtb2ppOgogICAgICAgICBtX2NsaWVudC5pbnNlcnRFbW9q
aSgqZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVy
bGF5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAppbmRl
eCA1MTIzYmIyZDBjMDQxZGM0NzY5NzNjZjAwMjhlYjkzMjM5ZmE0N2M4Li4yNTljNzIyNTM2NzFi
NWEwYWUwODViYzA3MTJhNGIxNWViMjc5NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlYnVn
UGFnZU92ZXJsYXlzLmNwcApAQCAtMjUyLDE0ICsyNTIsMTQgQEAgcHJpdmF0ZToKICAgICBib29s
IG1vdXNlRXZlbnQoUGFnZU92ZXJsYXkmLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSBmaW5h
bDsKIAogICAgIEZsb2F0UmVjdCByZWN0Rm9yU2V0dGluZ0F0SW5kZXgodW5zaWduZWQpOwotICAg
IGJvb2wgdmFsdWVGb3JTZXR0aW5nKGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wgdmFsdWVGb3JT
ZXR0aW5nKEFTQ0lJTGl0ZXJhbCk7CiAgICAgICAgIAogICAgIHN0ZDo6b3B0aW9uYWw8SW50ZXJh
Y3Rpb25SZWdpb24+IGFjdGl2ZVJlZ2lvbigpOwogCiAgICAgc3RydWN0IFNldHRpbmcgewotICAg
ICAgICBTdHJpbmcga2V5OwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgYm9vbCB2YWx1
ZTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIGtleTsKKyAgICAgICAgQVNDSUlMaXRlcmFsIG5hbWU7
CisgICAgICAgIGJvb2wgdmFsdWUgeyBmYWxzZSB9OwogICAgIH07ICAgIAogCiAgICAgRml4ZWRW
ZWN0b3I8U2V0dGluZz4gbV9zZXR0aW5ncyB7CkBAIC0zNzksNyArMzc5LDcgQEAgRmxvYXRSZWN0
IEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6cmVjdEZvclNldHRpbmdBdEluZGV4KHVuc2lnbmVk
IGluZGV4KQogICAgIH07CiB9CiAKLWJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5Ojp2YWx1
ZUZvclNldHRpbmcoY29uc3QgU3RyaW5nJiBuYW1lKQorYm9vbCBJbnRlcmFjdGlvblJlZ2lvbk92
ZXJsYXk6OnZhbHVlRm9yU2V0dGluZyhBU0NJSUxpdGVyYWwgbmFtZSkKIHsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIHNldHRpbmcgOiBtX3NldHRpbmdzKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNl
dHRpbmcua2V5KQpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVy
bGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKICAg
ICAKICAgICBjb250ZXh0LmNsZWFyUmVjdChkaXJ0eVJlY3QpOwogCi0gICAgaWYgKHZhbHVlRm9y
U2V0dGluZygicmVnaW9ucyIpKSB7CisgICAgaWYgKHZhbHVlRm9yU2V0dGluZygicmVnaW9ucyJf
cykpIHsKICAgICAgICAgY29udGV4dC5zZXRTdHJva2VUaGlja25lc3MoMik7CiAgICAgICAgIGNv
bnRleHQuc2V0U3Ryb2tlQ29sb3IoQ29sb3I6OmdyZWVuKTsKIApAQCAtNDM4LDcgKzQzOCw3IEBA
IHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYsIEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgIGF1dG8gcmVnaW9uID0gYWN0aXZlUmVnaW9u
KCk7CiAKLSAgICBpZiAocmVnaW9uIHx8ICF2YWx1ZUZvclNldHRpbmcoImNvbnN0cmFpbiIpKSB7
CisgICAgaWYgKHJlZ2lvbiB8fCAhdmFsdWVGb3JTZXR0aW5nKCJjb25zdHJhaW4iX3MpKSB7CiAg
ICAgICAgIGF1dG8gZ3JhZGllbnREYXRhID0gWyZdIChmbG9hdCByYWRpdXMpIHsKICAgICAgICAg
ICAgIEdyYWRpZW50OjpSYWRpYWxEYXRhIGdyYWRpZW50RGF0YTsKICAgICAgICAgICAgIGdyYWRp
ZW50RGF0YS5wb2ludDAgPSBtX21vdXNlTG9jYXRpb25JbkNvbnRlbnRDb29yZGluYXRlczsKQEAg
LTQ1MSwxMCArNDUxLDEwIEBAIHZvaWQgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5OjpkcmF3UmVj
dChQYWdlT3ZlcmxheSYsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwKIAogICAgICAgICBhdXRv
IG1ha2VHcmFkaWVudCA9IFsmXSAoYm9vbCBoYXNMaWdodEJhY2tncm91bmQsIEdyYWRpZW50OjpS
YWRpYWxEYXRhIGdyYWRpZW50RGF0YSkgewogICAgICAgICAgICAgYXV0byBncmFkaWVudCA9IEdy
YWRpZW50OjpjcmVhdGUoV1RGTW92ZShncmFkaWVudERhdGEpLCB7IENvbG9ySW50ZXJwb2xhdGlv
bk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGll
ZCB9KTsKLSAgICAgICAgICAgIGlmIChyZWdpb24gJiYgdmFsdWVGb3JTZXR0aW5nKCJ3YXNoIikg
JiYgdmFsdWVGb3JTZXR0aW5nKCJjbGlwIikpIHsKKyAgICAgICAgICAgIGlmIChyZWdpb24gJiYg
dmFsdWVGb3JTZXR0aW5nKCJ3YXNoIl9zKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiX3MpKSB7
CiAgICAgICAgICAgICAgICAgZ3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDAuMSwgQ29sb3IoQ29s
b3I6OndoaXRlKS5jb2xvcldpdGhBbHBoYSgwLjUpIH0pOwogICAgICAgICAgICAgICAgIGdyYWRp
ZW50LT5hZGRDb2xvclN0b3AoeyAxLCBoYXNMaWdodEJhY2tncm91bmQgPyBDb2xvcihDb2xvcjo6
YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMDUpIDogQ29sb3IoQ29sb3I6OndoaXRlKS5jb2xvcldp
dGhBbHBoYSgwLjEpIH0pOwotICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsdWVGb3JTZXR0aW5n
KCJjbGlwIikgfHwgIXZhbHVlRm9yU2V0dGluZygiY29uc3RyYWluIikpIHsKKyAgICAgICAgICAg
IH0gZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykgfHwgIXZhbHVlRm9yU2V0dGlu
ZygiY29uc3RyYWluIl9zKSkgewogICAgICAgICAgICAgICAgIGdyYWRpZW50LT5hZGRDb2xvclN0
b3AoeyAwLjEsIENvbG9yKENvbG9yOjp3aGl0ZSkuY29sb3JXaXRoQWxwaGEoMC4yKSB9KTsKICAg
ICAgICAgICAgICAgICBncmFkaWVudC0+YWRkQ29sb3JTdG9wKHsgMSwgQ29sb3IoQ29sb3I6Ondo
aXRlKS5jb2xvcldpdGhBbHBoYSgwKSB9KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NjYs
MTggKzQ2NiwxOCBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFn
ZU92ZXJsYXkmLCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgICAgIH07CiAgICAgICAg
IAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgZGVmYXVsdFJhZGl1cyA9IDUwOwotICAgICAgICBi
b29sIHNob3VsZENsaXAgPSB2YWx1ZUZvclNldHRpbmcoImNsaXAiKTsKKyAgICAgICAgYm9vbCBz
aG91bGRDbGlwID0gdmFsdWVGb3JTZXR0aW5nKCJjbGlwIl9zKTsKICAgICAgICAgVmVjdG9yPFBh
dGg+IGNsaXBQYXRoczsKIAogICAgICAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAgICAgIGNs
aXBQYXRocyA9IHBhdGhzRm9yUmVnaW9uKCpyZWdpb24pOwogCi0gICAgICAgIGJvb2wgc2hvdWxk
VXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwgKCF2YWx1ZUZv
clNldHRpbmcoIndhc2giKSAmJiB2YWx1ZUZvclNldHRpbmcoImNsaXAiKSk7CisgICAgICAgIGJv
b2wgc2hvdWxkVXNlQmFja2Ryb3BHcmFkaWVudCA9ICFzaG91bGRDbGlwIHx8ICFyZWdpb24gfHwg
KCF2YWx1ZUZvclNldHRpbmcoIndhc2giX3MpICYmIHZhbHVlRm9yU2V0dGluZygiY2xpcCJfcykp
OwogCiAgICAgICAgIGlmIChzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50KSB7CiAgICAgICAgICAg
ICBpZiAoc2hvdWxkQ2xpcCkgewogICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0
aCA6IGNsaXBQYXRocykgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCByYWRpdXMgPSB2YWx1
ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgp
LnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CisgICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHJhZGl1cyA9IHZhbHVlRm9yU2V0dGluZygiY29udGV4dHVhbFNpemUiX3MpID8g
MS41ICogcGF0aC5ib3VuZGluZ1JlY3QoKS5zaXplKCkubWluRGltZW5zaW9uKCkgOiBkZWZhdWx0
UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGJhY2tkcm9wR3JhZGllbnQgPSBHcmFk
aWVudDo6Y3JlYXRlKGdyYWRpZW50RGF0YShyYWRpdXMgKiAxLjUpLCB7IENvbG9ySW50ZXJwb2xh
dGlvbk1ldGhvZDo6U1JHQiB7IH0sIEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlw
bGllZCB9KTsKICAgICAgICAgICAgICAgICAgICAgYmFja2Ryb3BHcmFkaWVudC0+YWRkQ29sb3JT
dG9wKHsgMC4xLCBDb2xvcihDb2xvcjo6YmxhY2spLmNvbG9yV2l0aEFscGhhKDAuMikgfSk7CiAg
ICAgICAgICAgICAgICAgICAgIGJhY2tkcm9wR3JhZGllbnQtPmFkZENvbG9yU3RvcCh7IDEsIENv
bG9yKENvbG9yOjpibGFjaykuY29sb3JXaXRoQWxwaGEoMCkgfSk7CkBAIC00OTYsMTIgKzQ5Niwx
MiBAQCB2b2lkIEludGVyYWN0aW9uUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJsYXkm
LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsCiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhh
c0xpZ2h0QmFja2dyb3VuZCA9IGZhbHNlOwotICAgICAgICBpZiAoIXNob3VsZFVzZUJhY2tkcm9w
R3JhZGllbnQgJiYgdmFsdWVGb3JTZXR0aW5nKCJjb250ZXh0dWFsQ29sb3IiKSkKKyAgICAgICAg
aWYgKCFzaG91bGRVc2VCYWNrZHJvcEdyYWRpZW50ICYmIHZhbHVlRm9yU2V0dGluZygiY29udGV4
dHVhbENvbG9yIl9zKSkKICAgICAgICAgICAgIGhhc0xpZ2h0QmFja2dyb3VuZCA9IHJlZ2lvbi0+
aGFzTGlnaHRCYWNrZ3JvdW5kOwogCiAgICAgICAgIGlmIChzaG91bGRDbGlwKSB7CiAgICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBjbGlwUGF0aHMpIHsKLSAgICAgICAgICAgICAg
ICBmbG9hdCByYWRpdXMgPSB2YWx1ZUZvclNldHRpbmcoImNvbnRleHR1YWxTaXplIikgPyAxLjUg
KiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1lbnNpb24oKSA6IGRlZmF1bHRSYWRp
dXM7CisgICAgICAgICAgICAgICAgZmxvYXQgcmFkaXVzID0gdmFsdWVGb3JTZXR0aW5nKCJjb250
ZXh0dWFsU2l6ZSJfcykgPyAxLjUgKiBwYXRoLmJvdW5kaW5nUmVjdCgpLnNpemUoKS5taW5EaW1l
bnNpb24oKSA6IGRlZmF1bHRSYWRpdXM7CiAgICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxs
R3JhZGllbnQobWFrZUdyYWRpZW50KGhhc0xpZ2h0QmFja2dyb3VuZCwgZ3JhZGllbnREYXRhKHJh
ZGl1cykpKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbGxQYXRoKHBhdGgpOwogICAgICAg
ICAgICAgfQpAQCAtNTIyLDkgKzUyMiw5IEBAIGJvb2wgSW50ZXJhY3Rpb25SZWdpb25PdmVybGF5
Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25zdCBQbGF0Zm9ybU1vCiAKICAg
ICBzdGQ6Om9wdGlvbmFsPEN1cnNvcj4gY3Vyc29yVG9TZXQ7CiAKLSAgICBpZiAoIXZhbHVlRm9y
U2V0dGluZygiY3Vyc29yIikpCisgICAgaWYgKCF2YWx1ZUZvclNldHRpbmcoImN1cnNvciJfcykp
CiAgICAgICAgIGN1cnNvclRvU2V0ID0gbm9uZUN1cnNvcigpOwotICAgIGVsc2UgaWYgKCF2YWx1
ZUZvclNldHRpbmcoImhvdmVyIikpCisgICAgZWxzZSBpZiAoIXZhbHVlRm9yU2V0dGluZygiaG92
ZXIiX3MpKQogICAgICAgICBjdXJzb3JUb1NldCA9IHBvaW50ZXJDdXJzb3IoKTsKIAogICAgIGF1
dG8gZXZlbnRJbkNvbnRlbnRzQ29vcmRpbmF0ZXMgPSBtYWluRnJhbWVWaWV3LT53aW5kb3dUb0Nv
bnRlbnRzKGV2ZW50LnBvc2l0aW9uKCkpOwpAQCAtNTQ0LDcgKzU0NCw3IEBAIGJvb2wgSW50ZXJh
Y3Rpb25SZWdpb25PdmVybGF5Ojptb3VzZUV2ZW50KFBhZ2VPdmVybGF5JiBvdmVybGF5LCBjb25z
dCBQbGF0Zm9ybU1vCiAgICAgbV9tb3VzZUxvY2F0aW9uSW5Db250ZW50Q29vcmRpbmF0ZXMgPSBl
dmVudEluQ29udGVudHNDb29yZGluYXRlczsKICAgICBvdmVybGF5LnNldE5lZWRzRGlzcGxheSgp
OwogCi0gICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkICYm
ICFldmVudC5idXR0b25zKCkgJiYgIXZhbHVlRm9yU2V0dGluZygiaG92ZXIiKSkKKyAgICBpZiAo
ZXZlbnQudHlwZSgpID09IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQgJiYgIWV2ZW50LmJ1dHRv
bnMoKSAmJiAhdmFsdWVGb3JTZXR0aW5nKCJob3ZlciJfcykpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9j
b2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvU2V0
dGluZ3NCYXNlQ29jb2EubW0KaW5kZXggNDc3NGNlMDhhNWI4YjUwZjY0YTE2MjAyZjUzOGI0ZjRm
N2VmMmU0OC4uZTAxNmY5MjFkNWViNWFjMTBmMThkNmZjYTc3NjE3MTY1NjdkZmZlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9TZXR0aW5nc0Jhc2VDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1NldHRpbmdzQmFzZUNvY29hLm1tCkBAIC02Mywx
NSArNjMsMTUgQEAgYm9vbCBTZXR0aW5nc0Jhc2U6OnBsYXRmb3JtRGVmYXVsdE1lZGlhU291cmNl
RW5hYmxlZCgpCiAKIHZvaWQgU2V0dGluZ3NCYXNlOjppbml0aWFsaXplRGVmYXVsdEZvbnRGYW1p
bGllcygpCiB7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5KCJQaW5nRmFuZyBUQyIsIFVTQ1JJ
UFRfVFJBRElUSU9OQUxfSEFOKTsKLSAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5n
IFNDIiwgVVNDUklQVF9TSU1QTElGSUVEX0hBTik7Ci0gICAgc2V0U3RhbmRhcmRGb250RmFtaWx5
KCJIaXJhZ2lubyBNaW5jaG8gUHJvTiIsIFVTQ1JJUFRfS0FUQUtBTkFfT1JfSElSQUdBTkEpOwot
ICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiQXBwbGUgU0QgR290aGljIE5lbyIsIFVTQ1JJUFRf
SEFOR1VMKTsKLQotICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NP
TU1PTik7Ci0gICAgc2V0Rml4ZWRGb250RmFtaWx5KCJDb3VyaWVyIiwgVVNDUklQVF9DT01NT04p
OwotICAgIHNldFNlcmlmRm9udEZhbWlseSgiVGltZXMiLCBVU0NSSVBUX0NPTU1PTik7Ci0gICAg
c2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIiwgVVNDUklQVF9DT01NT04pOworICAg
IHNldFN0YW5kYXJkRm9udEZhbWlseSgiUGluZ0ZhbmcgVEMiX3MsIFVTQ1JJUFRfVFJBRElUSU9O
QUxfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIlBpbmdGYW5nIFNDIl9zLCBVU0NS
SVBUX1NJTVBMSUZJRURfSEFOKTsKKyAgICBzZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkhpcmFnaW5v
IE1pbmNobyBQcm9OIl9zLCBVU0NSSVBUX0tBVEFLQU5BX09SX0hJUkFHQU5BKTsKKyAgICBzZXRT
dGFuZGFyZEZvbnRGYW1pbHkoIkFwcGxlIFNEIEdvdGhpYyBOZW8iX3MsIFVTQ1JJUFRfSEFOR1VM
KTsKKworICAgIHNldFN0YW5kYXJkRm9udEZhbWlseSgiVGltZXMiX3MsIFVTQ1JJUFRfQ09NTU9O
KTsKKyAgICBzZXRGaXhlZEZvbnRGYW1pbHkoIkNvdXJpZXIiX3MsIFVTQ1JJUFRfQ09NTU9OKTsK
KyAgICBzZXRTZXJpZkZvbnRGYW1pbHkoIlRpbWVzIl9zLCBVU0NSSVBUX0NPTU1PTik7CisgICAg
c2V0U2Fuc1NlcmlmRm9udEZhbWlseSgiSGVsdmV0aWNhIl9zLCBVU0NSSVBUX0NPTU1PTik7CiB9
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Bhc3RlYm9hcmRDdXN0b21EYXRhLmgKaW5kZXggMjU2ZjQ0NTQyOTAzMmJiNDJmMzEzZDkyMGFm
YmZmZDFiMDIzYTc3YS4uZDIzN2UxODhjOTMxMzIzMTcwMjg1M2VkZjkzMGU5ZGEyYjViMmQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZEN1c3RvbURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkQ3VzdG9tRGF0YS5oCkBA
IC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvY29hVHlwZSgpOwogI2VsaWYgUExBVEZPUk0o
R1RLKQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJr
aXRndGsuV2ViS2l0LmN1c3RvbS1wYXN0ZWJvYXJkLWRhdGEiOyB9CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCBndGtUeXBlKCkgeyByZXR1cm4gIm9yZy53ZWJraXRndGsuV2ViS2l0LmN1c3RvbS1w
YXN0ZWJvYXJkLWRhdGEiX3M7IH0KICNlbmRpZgogCiAgICAgdm9pZCBmb3JFYWNoVHlwZShGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNl
ckFnZW50LmgKaW5kZXggZWJjZGIxZGQwODEyNGZiZWJmNTM2ODdjMjk4YTg3ZjFlYTY1MWE0NS4u
NWE5NDg5MDA5NDlkMTk3N2NlNzIzYTg3NjExOGE5ZGUwNDQ3NTRlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vVXNlckFnZW50LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ZW51bSBjbGFzcyBVc2VyQWdlbnRUeXBlIHsgRGVmYXVsdCwgRGVza3RvcCB9OwogV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNpb24g
PSBlbXB0eVN0cmluZygpLCBVc2VyQWdlbnRUeXBlID0gVXNlckFnZW50VHlwZTo6RGVmYXVsdCk7
CiAKLVdFQkNPUkVfRVhQT1JUIFN0cmluZyBvc05hbWVGb3JVc2VyQWdlbnQoKTsKK1dFQkNPUkVf
RVhQT1JUIEFTQ0lJTGl0ZXJhbCBvc05hbWVGb3JVc2VyQWdlbnQoKTsKIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCk7CiAjZWxz
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvQXVkaW9EZXN0aW5hdGlvbkdTdHJlYW1lci5jcHAKaW5kZXggZTQ1ZmMw
NjQzMzk0ZjBmMmYwNDU2NGZmYzVhZjAxMjAwOWE3MjQ3OS4uOGI3ZTc0MWI3YzhjOTcyNWVhZDIz
MmMxY2MxOGIwYTUwZTcxNDRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vZ3N0cmVhbWVyL0F1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb0Rlc3RpbmF0aW9uR1N0cmVh
bWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIEF1ZGlvRGVzdGluYXRpb25HU3RyZWFtZXI6OkF1
ZGlvRGVzdGluYXRpb25HU3RyZWFtZXIoQXVkaW9JT0NhbGxiYWNrJiBjYWxsYmFjaywKICAgICBt
X3NyYyA9IEdTVF9FTEVNRU5UX0NBU1QoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9BVURJ
T19TUkMsICJyYXRlIiwgc2FtcGxlUmF0ZSwKICAgICAgICAgImJ1cyIsIG1fcmVuZGVyQnVzLmdl
dCgpLCAiZGVzdGluYXRpb24iLCB0aGlzLCAiZnJhbWVzIiwgQXVkaW9VdGlsaXRpZXM6OnJlbmRl
clF1YW50dW1TaXplLCBudWxscHRyKSk7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IGF1ZGlv
U2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5rKCJtdXNpYyIpOworICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gYXVkaW9TaW5rID0gY3JlYXRlUGxhdGZvcm1BdWRpb1NpbmsoIm11c2ljIl9zKTsK
ICAgICBtX2F1ZGlvU2lua0F2YWlsYWJsZSA9IGF1ZGlvU2luazsKICAgICBpZiAoIWF1ZGlvU2lu
aykgewogICAgICAgICBHU1RfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgR1N0cmVhbWVyIGF1ZGlv
IHNpbmsgZWxlbWVudCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xp
Yi9Vc2VyQWdlbnRHTGliLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dsaWIvVXNlckFn
ZW50R0xpYi5jcHAKaW5kZXggZjYwMDAxMGFhYzg4M2YyNDBhZWE1ZThmOGVhNWQ1MzIwMDRhYzBj
Ni4uMGQyOWQ1ZjNkNTdiZmUzOTRmNWUyMTE1YmU4YmUyYjYxMjBmNDU2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2xpYi9Vc2VyQWdlbnRHTGliLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9nbGliL1VzZXJBZ2VudEdMaWIuY3BwCkBAIC02MSw3ICs2MSw3
IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgcGxhdGZvcm1WZXJzaW9uRm9yVUFTdHJpbmcoKQogewog
I2lmIE9TKFVOSVgpCiAgICAgaWYgKGNoYXNzaXNUeXBlKCkgPT0gV1RGOjpDaGFzc2lzVHlwZTo6
TW9iaWxlKQotICAgICAgICByZXR1cm4gImxpa2UgQW5kcm9pZCA0LjQiOworICAgICAgICByZXR1
cm4gImxpa2UgQW5kcm9pZCA0LjQiX3M7CiAKICAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwogICAg
IHVuYW1lKCZuYW1lKTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRp
bwogICAgIH0gZWxzZSB7CiAgICAgICAgIFN0cmluZyBmaW5hbEFwcGxpY2F0aW9uVmVyc2lvbiA9
IGFwcGxpY2F0aW9uVmVyc2lvbjsKICAgICAgICAgaWYgKGZpbmFsQXBwbGljYXRpb25WZXJzaW9u
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4x
LjE1IjsKKyAgICAgICAgICAgIGZpbmFsQXBwbGljYXRpb25WZXJzaW9uID0gIjYwNS4xLjE1Il9z
OwogICAgICAgICB1c2VyQWdlbnQgPSBzdGFuZGFyZFVzZXJBZ2VudFN0YXRpYygpICsgJyAnICsg
YXBwbGljYXRpb25OYW1lICsgJy8nICsgZmluYWxBcHBsaWNhdGlvblZlcnNpb247CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktp
dEJyaWRnZS5jcHAKaW5kZXggYjdkNThmNDZiOWVhNDIwNzc2ZmM1MGQwNjA1MzZiMGM1OTExMTI0
ZS4uYzVkZTFiNjhiNWNjY2E0YjhjOTg1M2IzMzhiNDk4MjE4ZTE0Mzg5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNw
cApAQCAtMTg2LDEzICsxODYsMTMgQEAgYm9vbCBBTkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNo
YWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hhZGUKICAgICBpZiAo
IXZhbGlkYXRlU3VjY2VzcykgewogICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbG9nID0gc2g6
OkdldEluZm9Mb2coY29tcGlsZXIpOwogICAgICAgICBpZiAobG9nLmxlbmd0aCgpKQotICAgICAg
ICAgICAgc2hhZGVyVmFsaWRhdGlvbkxvZyA9IGxvZy5jX3N0cigpOworICAgICAgICAgICAgc2hh
ZGVyVmFsaWRhdGlvbkxvZyA9IFN0cmluZyB7IGxvZy5jX3N0cigpIH07CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb2JqZWN0Q29kZSA9IHNo
OjpHZXRPYmplY3RDb2RlKGNvbXBpbGVyKTsKICAgICBpZiAob2JqZWN0Q29kZS5sZW5ndGgoKSkK
LSAgICAgICAgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSA9IG9iamVjdENvZGUuY19zdHIoKTsKKyAg
ICAgICAgdHJhbnNsYXRlZFNoYWRlclNvdXJjZSA9IFN0cmluZyB7IG9iamVjdENvZGUuY19zdHIo
KSB9OwogICAgIAogICAgIGlmICghZ2V0U3ltYm9sSW5mbyhjb21waWxlciwgU0hBREVSX1NZTUJP
TF9UWVBFX0FUVFJJQlVURSwgc3ltYm9scykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUv
R3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKaW5kZXggMWE1YmU2ZTFiNDgwNTAwYTM2M2Y2MzBj
MzJlZjY3MjIyNTg3MDQzYi4uZTYyY2ZkNzVkZjU5MmM3MWFlYjkzNzYxZDM3NDkyYjg0OGYzMzM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3Jh
cGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29uc3QgY2hhciogcGFja2VkRGVwdGhT
dGVuY2lsRXh0ZW5zaW9uTmFtZSA9ICJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiOworc3Rh
dGljIGNvbnN0ZXhwciBhdXRvIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbk5hbWUgPSAiR0xf
T0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zOwogCiBzdGF0aWMgU2Vjb25kcyBtYXhGcmFtZUR1
cmF0aW9uID0gNV9zOwogCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHRH
TEFOR0xFOjpyZWFkblBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3
aWQKIAogLy8gVGhlIGNvbnRlbnRzIG9mIEdyYXBoaWNzQ29udGV4dEdMQU5HTEVDb21tb24gZm9s
bG93LCBwb3J0ZWQgdG8gdXNlIEFOR0xFLgogCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMQU5HTEU6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xBTkdMRTo6dmFsaWRhdGVEZXB0aFN0ZW5jaWwo
QVNDSUlMaXRlcmFsIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbikKIHsKICAgICAvLyBGSVhN
RTogU2luY2UgdGhlIGNvbnN0cnVjdG9ycyBvZiB2YXJpb3VzIHBsYXRmb3JtcyBhcmUgbm90IHNo
YXJlZCwgd2UgaW5pdGlhbGl6ZSB0aGlzIGhlcmUuCiAgICAgLy8gVXBvbiBjb25zdHJ1Y3Rpbmcg
dGhlIGNvbnRleHQsIGFsd2F5cyBpbml0aWFsaXplIHRoZSBleHRlbnNpb25zIHRoYXQgdGhlIFdl
YkdMUmVuZGVyaW5nQ29udGV4dCogd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5oCmlu
ZGV4IGQ5ZDM2NzQxODNhOTk1MmZhNDQzYTc3NDZmMjRjM2RiYTJhM2UwNzkuLmZjZDU2M2E2NzMw
ODc2MTZmNjI0MzNlM2Q2NjhkNzgyZGI2NGY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFO
R0xFLmgKQEAgLTM1Myw3ICszNTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gaW4gcGFydGljdWxh
ciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAg
ICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRo
ZSBPcGVuR0wKICAgICAvLyBpbXBsZW1lbnRhdGlvbi4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhT
dGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lvbik7CisgICAgdm9p
ZCB2YWxpZGF0ZURlcHRoU3RlbmNpbChBU0NJSUxpdGVyYWwgcGFja2VkRGVwdGhTdGVuY2lsRXh0
ZW5zaW9uKTsKICAgICB2b2lkIHZhbGlkYXRlQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCByZWFk
blBpeGVsc0ltcGwoR0NHTGludCB4LCBHQ0dMaW50IHksIEdDR0xzaXplaSB3aWR0aCwgR0NHTHNp
emVpIGhlaWdodCwgR0NHTGVudW0gZm9ybWF0LCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgYnVm
U2l6ZSwgR0NHTHNpemVpKiBsZW5ndGgsIEdDR0xzaXplaSogY29sdW1ucywgR0NHTHNpemVpKiBy
b3dzLCBHQ0dMdm9pZCogZGF0YSwgYm9vbCByZWFkaW5nVG9QaXhlbEJ1ZmZlck9iamVjdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDdlNjM0NmZmYTE4MTdiYTE0MTc1ODdhODg4
YWRlYjllNDRkZWJmMzMuLjNmMzU0OGRhMGZmZjRmZmRmODU0M2NiMWVhN2FmZTljNzhjN2IxMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC03MDEsNyArNzAxLDcgQEAgc3RhdGlj
IHZvaWQgcHJpbnRUcmFuc2Zvcm0oU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgQ0FUcmFu
c2Zvcm0zRCYgdHJhbnNmb3IKICAgICBidWlsZGVyLmFwcGVuZCgnWycsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0xMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTEyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVk
UHJlY2lzaW9uKHRyYW5zZm9ybS5tMTMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24odHJhbnNmb3JtLm0xNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNp
b24odHJhbnNmb3JtLm0yMSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0
cmFuc2Zvcm0ubTIyKSwgJyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5z
Zm9ybS5tMjMpLCAnICcsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3Jt
Lm0yNCksICI7ICIsIEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0z
MSksICcgJywgRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTMyKSwg
JyAnLCBGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tMzMpLCAnICcs
IEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm0zNCksICI7ICIsIEZv
cm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00MSksICcgJywgRm9ybWF0
dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbih0cmFuc2Zvcm0ubTQyKSwgJyAnLCBGb3JtYXR0ZWRO
dW1iZXI6OmZpeGVkUHJlY2lzaW9uKHRyYW5zZm9ybS5tNDMpLCAnICcsIEZvcm1hdHRlZE51bWJl
cjo6Zml4ZWRQcmVjaXNpb24odHJhbnNmb3JtLm00NCksICddJyk7CiB9CiAKLXN0YXRpYyB2b2lk
IHByaW50Q29sb3IoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgQ0dDb2xvclJlZiBjb2xvcikKK3N0YXRpYyB2b2lkIHByaW50Q29sb3IoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCwgQVNDSUlMaXRlcmFsIGxhYmVsLCBDR0Nv
bG9yUmVmIGNvbG9yKQogewogICAgIENvbG9yIGxheWVyQ29sb3Iocm91bmRBbmRDbGFtcFRvU1JH
QkFMb3NzeShjb2xvcikpOwogICAgIGlmICghbGF5ZXJDb2xvci5pc1ZhbGlkKCkpCkBAIC03NjIs
MTAgKzc2MiwxMCBAQCBzdGF0aWMgdm9pZCBwcmludExheWVyKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIGNvbnN0IFBsYXRmb3JtQ0FMYXllciogbGF5ZXIsIGludAogICAgIH0KIAogICAgIC8vIFBy
aW50IGJhY2tncm91bmRDb2xvciBpZiBuZWVkZWQKLSAgICBwcmludENvbG9yKGJ1aWxkZXIsIGlu
ZGVudCArIDEsICJiYWNrZ3JvdW5kQ29sb3IiLCBDQUNGTGF5ZXJHZXRCYWNrZ3JvdW5kQ29sb3Io
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50
ICsgMSwgImJhY2tncm91bmRDb2xvciJfcywgQ0FDRkxheWVyR2V0QmFja2dyb3VuZENvbG9yKGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpKTsKIAogICAgIC8vIFByaW50IGJvcmRlckNvbG9yIGlmIG5l
ZWRlZAotICAgIHByaW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIiwg
Q0FDRkxheWVyR2V0Qm9yZGVyQ29sb3IobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkpOworICAgIHBy
aW50Q29sb3IoYnVpbGRlciwgaW5kZW50ICsgMSwgImJvcmRlckNvbG9yIl9zLCBDQUNGTGF5ZXJH
ZXRCb3JkZXJDb2xvcihsYXllci0+cGxhdGZvcm1MYXllcigpKSk7CiAKICAgICAvLyBQcmludCBt
YXNrc1RvQm91bmRzIGlmIG5lZWRlZAogICAgIGlmIChib29sIGxheWVyTWFza3NUb0JvdW5kcyA9
IGxheWVyLT5tYXNrc1RvQm91bmRzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5kLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm9CYWNrZW5k
LmNwcAppbmRleCBjOGU1Njc4MjQyMzE1YWMzOTM1MWUwMjA4ZmY4YTBlZGVlMTNkOWI1Li4zYjdh
NzVkYzc4YWY3OTJhMDA1OWZmYzcyNjMwNzE4NjI1YjliMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvQmFja2VuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyb0JhY2tlbmQuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVy
Q2Fpcm9CYWNrZW5kOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgc3RkOjpvcHRp
b25hbDwKIHsKICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZEltYWdlID0gdG9EYXRhKG1pbWVU
eXBlLCBxdWFsaXR5KTsKICAgICBpZiAoZW5jb2RlZEltYWdlLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuICJkYXRhOiwiOworICAgICAgICByZXR1cm4gImRhdGE6LCJfczsKIAogICAgIHJldHVy
biBtYWtlU3RyaW5nKCJkYXRhOiIsIG1pbWVUeXBlLCAiO2Jhc2U2NCwiLCBiYXNlNjRFbmNvZGVk
KGVuY29kZWRJbWFnZS5kYXRhKCksIGVuY29kZWRJbWFnZS5zaXplKCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0ZvbnRDYWNoZUZy
ZWVUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL0Zv
bnRDYWNoZUZyZWVUeXBlLmNwcAppbmRleCBiOTNiYzM0Y2M0ZDRhMzQ0Y2I0MTJlYzcxZWYzYzgx
ZGRlNzUwOWQyLi4xZjUxNjkxZWY5ZjkwOGZiZmNkZTU5NDMzZWFlZDRhOGY4NmI2MmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2Fj
aGVGcmVlVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJl
ZXR5cGUvRm9udENhY2hlRnJlZVR5cGUuY3BwCkBAIC0zNDIsMjIgKzM0MiwyMiBAQCBzdGF0aWMg
U3RyaW5nIGdldEZhbWlseU5hbWVTdHJpbmdGcm9tRmFtaWx5KGNvbnN0IFN0cmluZyYgZmFtaWx5
KQogICAgICAgICByZXR1cm4gZmFtaWx5OwogCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1l
c0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN0YW5kYXJkRmFtaWx5KSB8fCBmYW1pbHkgPT0g
ZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTZXJpZkZhbWlseSkpCi0gICAg
ICAgIHJldHVybiAic2VyaWYiOworICAgICAgICByZXR1cm4gInNlcmlmIl9zOwogICAgIGlmIChm
YW1pbHkgPT0gZmFtaWx5TmFtZXNEYXRhLT5hdChGYW1pbHlOYW1lc0luZGV4OjpTYW5zU2VyaWZG
YW1pbHkpKQotICAgICAgICByZXR1cm4gInNhbnMtc2VyaWYiOworICAgICAgICByZXR1cm4gInNh
bnMtc2VyaWYiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWls
eU5hbWVzSW5kZXg6Ok1vbm9zcGFjZUZhbWlseSkpCi0gICAgICAgIHJldHVybiAibW9ub3NwYWNl
IjsKKyAgICAgICAgcmV0dXJuICJtb25vc3BhY2UiX3M7CiAgICAgaWYgKGZhbWlseSA9PSBmYW1p
bHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkN1cnNpdmVGYW1pbHkpKQotICAgICAg
ICByZXR1cm4gImN1cnNpdmUiOworICAgICAgICByZXR1cm4gImN1cnNpdmUiX3M7CiAgICAgaWYg
KGZhbWlseSA9PSBmYW1pbHlOYW1lc0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OkZhbnRhc3lG
YW1pbHkpKQotICAgICAgICByZXR1cm4gImZhbnRhc3kiOworICAgICAgICByZXR1cm4gImZhbnRh
c3kiX3M7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKGZhbWlseSA9PSBmYW1pbHlOYW1l
c0RhdGEtPmF0KEZhbWlseU5hbWVzSW5kZXg6OlN5c3RlbVVpRmFtaWx5KSB8fCBmYW1pbHkgPT0g
Ii13ZWJraXQtc3lzdGVtLWZvbnQiKQogICAgICAgICByZXR1cm4gZGVmYXVsdEd0a1N5c3RlbUZv
bnQoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuICIiOworICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogfQogCiAjaWYgRkNfVkVSU0lPTiA8IDIxMzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVkaW9UcmFja1ByaXZhdGVHU3RyZWFtZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0F1ZGlvVHJh
Y2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCAxZDZhZTJlMTJlN2RkNGZkNmMwMDc1MTg5MGIy
NWQ5NWNiYzkwN2RkLi5mZDlmNzhlN2QyMTRlODk5MDhhMDY1OGFiZGY2ZTk1NzA2OTdmYmI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvQXVk
aW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTky
LDcgKzkyLDcgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQ29uZmln
dXJhdGlvbkZyb21DYXBzKCkKIAogI2lmIEdTVF9DSEVDS19WRVJTSU9OKDEsIDIwLCAwKQogICAg
IEdVbmlxdWVQdHI8Y2hhcj4gY29kZWMoZ3N0X2NvZGVjX3V0aWxzX2NhcHNfZ2V0X21pbWVfY29k
ZWMoY2Fwcy5nZXQoKSkpOwotICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBjb2RlYy5nZXQoKTsK
KyAgICBjb25maWd1cmF0aW9uLmNvZGVjID0gU3RyaW5nIHsgY29kZWMuZ2V0KCkgfTsKICNlbmRp
ZgogCiAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNv
bW1vbi5jcHAKaW5kZXggNTQwMmJkMjBhZjExMmQzZjFhMTU4M2M3MTQ4ZTUwZmVlZDcwOTM1Ni4u
N2EzNjI2M2ZlMDExMzQ0MGU1NDU2YzE5MmQ5YTE4NDUyOWM5NWI5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lckNvbW1vbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJl
YW1lckNvbW1vbi5jcHAKQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcGFyc2VH
c3RTdHJ1Y3R1cmVWYWx1ZShHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3Bv
aQogewogICAgIGlmIChhdXRvIGpzb25WYWx1ZSA9IGdzdFN0cnVjdHVyZVZhbHVlVG9KU09OKHZh
bHVlKSkgewogICAgICAgICBhdXRvKiBvYmplY3QgPSByZWludGVycHJldF9jYXN0PEpTT046Ok9i
amVjdCo+KHVzZXJEYXRhKTsKLSAgICAgICAgb2JqZWN0LT5zZXRWYWx1ZShnX3F1YXJrX3RvX3N0
cmluZyhmaWVsZElkKSwganNvblZhbHVlLT5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICAgICAgb2Jq
ZWN0LT5zZXRWYWx1ZShTdHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhmaWVsZElkKSB9LCBqc29u
VmFsdWUtPnJlbGVhc2VOb25OdWxsKCkpOwogICAgIH0KICAgICByZXR1cm4gVFJVRTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKaW5kZXggMmQ5YzBlOWU0
NTM4NDA2ZTZlMGZkYTU5N2NlMzVmOTNmZTNjODAyZi4uYmQ2YmU2ZjdhNjMwZTM2Y2M3YmYxNTg1
MmI2MGUyMjFiMTY3MjQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nh
bm5lci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OlJl
Z2lzdHJ5TG9va3VwUmVzdWx0IEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6RWxlbWVudAogICAg
IGlmIChzaG91bGRDaGVja0hhcmR3YXJlQ2xhc3NpZmllciA9PSBDaGVja0hhcmR3YXJlQ2xhc3Np
Zmllcjo6WWVzKSB7CiAgICAgICAgIGZvciAoR0xpc3QqIGZhY3RvcmllcyA9IGNhbmRpZGF0ZXM7
IGZhY3RvcmllczsgZmFjdG9yaWVzID0gZ19saXN0X25leHQoZmFjdG9yaWVzKSkgewogICAgICAg
ICAgICAgYXV0byogZmFjdG9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0RWxlbWVudEZhY3Rvcnkq
PihmYWN0b3JpZXMtPmRhdGEpOwotICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhID0gZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFf
S0xBU1MpOworICAgICAgICAgICAgU3RyaW5nIG1ldGFkYXRhIHsgZ3N0X2VsZW1lbnRfZmFjdG9y
eV9nZXRfbWV0YWRhdGEoZmFjdG9yeSwgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpIH07CiAg
ICAgICAgICAgICBhdXRvIGNvbXBvbmVudHMgPSBtZXRhZGF0YS5zcGxpdCgnLycpOwogICAgICAg
ICAgICAgaWYgKGNvbXBvbmVudHMuY29udGFpbnMoIkhhcmR3YXJlIikpIHsKICAgICAgICAgICAg
ICAgICBpc1VzaW5nSGFyZHdhcmUgPSB0cnVlOwpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgR1N0
cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyCiAgICAgfQogCiAgICAgYXV0byBhdjFEZWNvZGVyQXZhaWxhYmxlID0g
ZmFjdG9yaWVzLmhhc0VsZW1lbnRGb3JNZWRpYVR5cGUoRWxlbWVudEZhY3Rvcmllczo6VHlwZTo6
VmlkZW9EZWNvZGVyLCAidmlkZW8veC1hdjEiLCBFbGVtZW50RmFjdG9yaWVzOjpDaGVja0hhcmR3
YXJlQ2xhc3NpZmllcjo6WWVzKTsKLSAgICBpZiAoKG1hdHJvc2thU3VwcG9ydGVkIHx8IGlzQ29u
dGFpbmVyVHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgInZpZGVvL21wNCIp
KSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CisgICAgaWYgKChtYXRyb3NrYVN1cHBvcnRlZCB8
fCBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJhdGlvbjo6RGVjb2RpbmcsICJ2aWRl
by9tcDQiX3MpKSAmJiBhdjFEZWNvZGVyQXZhaWxhYmxlKSB7CiAgICAgICAgIG1fZGVjb2RlckNv
ZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJhdjAxKiIpLCBhdjFEZWNvZGVyQXZhaWxhYmxlLmlzVXNp
bmdIYXJkd2FyZSk7CiAgICAgICAgIG1fZGVjb2RlckNvZGVjTWFwLmFkZChBdG9tU3RyaW5nKCJh
djEiKSwgYXYxRGVjb2RlckF2YWlsYWJsZS5pc1VzaW5nSGFyZHdhcmUpOwogICAgICAgICBtX2Rl
Y29kZXJDb2RlY01hcC5hZGQoQXRvbVN0cmluZygieC1hdjEiKSwgYXYxRGVjb2RlckF2YWlsYWJs
ZS5pc1VzaW5nSGFyZHdhcmUpOwpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgR1N0cmVhbWVyUmVn
aXN0cnlTY2FubmVyOjppbml0aWFsaXplRGVjb2RlcnMoY29uc3QgR1N0cmVhbWVyUmVnaXN0cnlT
Y2FubmVyCiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJhdWRp
by9tcDIiKSk7CiAgICAgfQogCi0gICAgYXVkaW9NcGVnU3VwcG9ydGVkIHw9IGlzQ29udGFpbmVy
VHlwZVN1cHBvcnRlZChDb25maWd1cmF0aW9uOjpEZWNvZGluZywgImF1ZGlvL21wNCIpOworICAg
IGF1ZGlvTXBlZ1N1cHBvcnRlZCB8PSBpc0NvbnRhaW5lclR5cGVTdXBwb3J0ZWQoQ29uZmlndXJh
dGlvbjo6RGVjb2RpbmcsICJhdWRpby9tcDQiX3MpOwogICAgIGlmIChhdWRpb01wZWdTdXBwb3J0
ZWQpIHsKICAgICAgICAgbV9kZWNvZGVyTWltZVR5cGVTZXQuYWRkKEF0b21TdHJpbmcoImF1ZGlv
L21wZWciKSk7CiAgICAgICAgIG1fZGVjb2Rlck1pbWVUeXBlU2V0LmFkZChBdG9tU3RyaW5nKCJh
dWRpby94LW1wZWciKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCmluZGV4IGZkOTdiODQ2NGI0OGZiZWI0MmIyZmY5YTg4MmY4ZmI3MWNmZjY0ZDgu
LmFiZDM2Mjk2MmE0MzU2MDgyMjMzY2IxNGE5OTA3ZDkwNjM0YTZkYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0xMjQ2LDcgKzEyNDYs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bG9hZGluZ0ZhaWxlZChNZWRp
YVBsYXllcjo6TmV0d29ya1N0YXRlIG5ldHdvcgogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZUF1ZGlvU2luaygpCiB7Ci0gICAgY29uc3QgY2hhciogcm9s
ZSA9IG1fcGxheWVyLT5pc1ZpZGVvUGxheWVyKCkgPyAidmlkZW8iIDogIm11c2ljIjsKKyAgICBh
dXRvIHJvbGUgPSBtX3BsYXllci0+aXNWaWRlb1BsYXllcigpID8gInZpZGVvIl9zIDogIm11c2lj
Il9zOwogICAgIEdzdEVsZW1lbnQqIGF1ZGlvU2luayA9IGNyZWF0ZVBsYXRmb3JtQXVkaW9TaW5r
KHJvbGUpOwogICAgIFJFTEVBU0VfQVNTRVJUKGF1ZGlvU2luayk7CiAgICAgaWYgKCFhdWRpb1Np
bmspCkBAIC0xNzM1LDcgKzE3MzUsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6aGFuZGxlTWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBnc3RfbWVzc2Fn
ZV9wYXJzZV9lcnJvcihtZXNzYWdlLCAmZXJyLm91dFB0cigpLCAmZGVidWcub3V0UHRyKCkpOwog
ICAgICAgICBHU1RfRVJST1IoIkVycm9yICVkOiAlcyAodXJsPSVzKSIsIGVyci0+Y29kZSwgZXJy
LT5tZXNzYWdlLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBtX2Vy
cm9yTWVzc2FnZSA9IGVyci0+bWVzc2FnZTsKKyAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBTdHJp
bmcgeyBlcnItPm1lc3NhZ2UgfTsKIAogICAgICAgICBlcnJvciA9IE1lZGlhUGxheWVyOjpOZXR3
b3JrU3RhdGU6OkVtcHR5OwogICAgICAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVyci5nZXQoKSwg
R1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9FUlJPUl9DT0RFQ19OT1RfRk9VTkQpCkBAIC0x
ODg5LDcgKzE4ODksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxl
TWVzc2FnZShHc3RNZXNzYWdlKiBtZXNzYWdlKQogICAgICAgICBlbHNlIGlmIChnc3Rfc3RydWN0
dXJlX2hhc19uYW1lKHN0cnVjdHVyZSwgImh0dHAtaGVhZGVycyIpKSB7CiAgICAgICAgICAgICBH
U1RfREVCVUdfT0JKRUNUKHBpcGVsaW5lKCksICJQcm9jZXNzaW5nIEhUVFAgaGVhZGVyczogJSIg
R1NUX1BUUl9GT1JNQVQsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBpZiAoY29uc3QgY2hhciog
dXJpID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nKHN0cnVjdHVyZSwgInVyaSIpKSB7Ci0gICAg
ICAgICAgICAgICAgVVJMIHVybCB7IHVyaSB9OworICAgICAgICAgICAgICAgIFVSTCB1cmwgeyBT
dHJpbmcgeyB1cmkgfSB9OwogICAgICAgICAgICAgICAgIG1fb3JpZ2lucy5hZGQoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwpKTsKIAogICAgICAgICAgICAgICAgIGlmICh1cmwgIT0gbV91cmwp
IHsKQEAgLTIxMjcsNyArMjEyNyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVudHJ5CiAgICAgICAg
IGdjaGFyKiB0aXRsZSA9IG51bGxwdHI7CiAgICAgICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5n
KHRhZ3MsIEdTVF9UQUdfVElUTEUsICZ0aXRsZSk7CiAgICAgICAgIGlmICh0aXRsZSkgewotICAg
ICAgICAgICAgY3VlLT5zZXRDb250ZW50KHRpdGxlKTsKKyAgICAgICAgICAgIGN1ZS0+c2V0Q29u
dGVudChTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7CiAgICAgICAgICAgICBnX2ZyZWUodGl0bGUp
OwogICAgICAgICB9CiAgICAgfQpAQCAtMjE2Niw3ICsyMTY2LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXI6OmNvbmZpZ3VyZURvd25sb2FkQnVmZmVyKEdzdEVsZW1lbnQqIGVs
ZW1lbnQpCiAgICAgZ19vYmplY3Rfc2V0KGVsZW1lbnQsICJ0ZW1wLXRlbXBsYXRlIiwgbmV3RG93
bmxvYWRUZW1wbGF0ZS5nZXQoKSwgbnVsbHB0cik7CiAgICAgR1NUX0RFQlVHX09CSkVDVChwaXBl
bGluZSgpLCAiUmVjb25maWd1cmVkIGZpbGUgZG93bmxvYWQgdGVtcGxhdGUgZnJvbSAnJXMnIHRv
ICclcyciLCBvbGREb3dubG9hZFRlbXBsYXRlLmdldCgpLCBuZXdEb3dubG9hZFRlbXBsYXRlLmdl
dCgpKTsKIAotICAgIFN0cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggPSBuZXdEb3dubG9hZFRl
bXBsYXRlLmdldCgpOworICAgIFN0cmluZyBuZXdEb3dubG9hZFByZWZpeFBhdGggeyBuZXdEb3du
bG9hZFRlbXBsYXRlLmdldCgpIH07CiAgICAgcHVyZ2VPbGREb3dubG9hZEZpbGVzKG5ld0Rvd25s
b2FkUHJlZml4UGF0aC5yZXBsYWNlKCJYWFhYWFgiLCAiIikpOwogfQogCkBAIC0yMTc5LDcgKzIx
NzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6ZG93bmxvYWRCdWZmZXJG
aWxlQ3JlYXRlZENhbGxiYWNrKE1lZGlhUGxheWVyUAogICAgIEdVbmlxdWVPdXRQdHI8Y2hhcj4g
ZG93bmxvYWRGaWxlOwogICAgIGdfb2JqZWN0X2dldChwbGF5ZXItPm1fZG93bmxvYWRCdWZmZXIu
Z2V0KCksICJ0ZW1wLWxvY2F0aW9uIiwgJmRvd25sb2FkRmlsZS5vdXRQdHIoKSwgbnVsbHB0cik7
CiAKLSAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZG93bmxvYWRGaWxl
LmdldCgpKSkpIHsKKyAgICBpZiAoVU5MSUtFTFkoIUZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoU3Ry
aW5nOjpmcm9tVVRGOChkb3dubG9hZEZpbGUuZ2V0KCkpKSkpIHsKICAgICAgICAgR1NUX1dBUk5J
TkcoIkNvdWxkbid0IHVubGluayBtZWRpYSB0ZW1wb3JhcnkgZmlsZSAlcyBhZnRlciBjcmVhdGlv
biIsIGRvd25sb2FkRmlsZS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDcw
LDExICsyNDcwLDExIEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpsb2FkTmV4
dExvY2F0aW9uKCkKICAgICAgICAgLy8gdGhvdWdoLiBXZSBuZWVkIHRvIHRha2UgdGhlIGJhc2Ug
b2YgdGhlIGN1cnJlbnQgdXJsIGFuZAogICAgICAgICAvLyBhcHBlbmQgdGhlIHZhbHVlIG9mIG5l
dy1sb2NhdGlvbiB0byBpdC4KICAgICAgICAgVVJMIGJhc2VVcmwgPSBnc3RfdXJpX2lzX3ZhbGlk
KG5ld0xvY2F0aW9uKSA/IFVSTCgpIDogbV91cmw7Ci0gICAgICAgIFVSTCBuZXdVcmwgPSBVUkwo
YmFzZVVybCwgbmV3TG9jYXRpb24pOworICAgICAgICBVUkwgbmV3VXJsID0gVVJMKGJhc2VVcmws
IFN0cmluZyB7IG5ld0xvY2F0aW9uIH0pOwogCiAgICAgICAgIEdVbmlxdWVPdXRQdHI8Z2NoYXI+
IHBsYXliaW5VcmxTdHI7CiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BpcGVsaW5lLmdldCgpLCAi
Y3VycmVudC11cmkiLCAmcGxheWJpblVybFN0ci5vdXRQdHIoKSwgbnVsbHB0cik7Ci0gICAgICAg
IFVSTCBwbGF5YmluVXJsIHsgcGxheWJpblVybFN0ci5nZXQoKSB9OworICAgICAgICBVUkwgcGxh
eWJpblVybCB7IFN0cmluZyB7IHBsYXliaW5VcmxTdHIuZ2V0KCkgfSB9OwogCiAgICAgICAgIGlm
IChwbGF5YmluVXJsID09IG5ld1VybCkgewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChw
aXBlbGluZSgpLCAiUGxheWJpbiBhbHJlYWR5IGhhbmRsZWQgcmVkaXJlY3Rpb24uIik7CkBAIC0y
NzAxLDcgKzI3MDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
R1NUUGxheUJpbihjb25zdCBVUkwmIHVybCkKIAogICAgIGF1dG8gZWxlbWVudElkID0gbV9wbGF5
ZXItPmVsZW1lbnRJZCgpOwogICAgIGlmIChlbGVtZW50SWQuaXNFbXB0eSgpKQotICAgICAgICBl
bGVtZW50SWQgPSAibWVkaWEtcGxheWVyIjsKKyAgICAgICAgZWxlbWVudElkID0gIm1lZGlhLXBs
YXllciJfczsKIAogICAgIGNvbnN0IGNoYXIqIHR5cGUgPSBpc01lZGlhU291cmNlKCkgPyAiTVNF
LSIgOiB1cmwucHJvdG9jb2xJcygibWVkaWFzdHJlYW0iKSA/ICJtZWRpYXN0cmVhbS0iIDogIiI7
CiAKQEAgLTM5MTgsNyArMzkxOCw3IEBAIEluaXREYXRhIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6cGFyc2VJbml0RGF0YUZyb21Qcm90ZWN0aW9uTWVzc2FnZShHc3RNZXNzCiAgICAgICAg
ICAgICBHc3RCdWZmZXIqIGRhdGEgPSBudWxscHRyOwogICAgICAgICAgICAgZ3N0X2V2ZW50X3Bh
cnNlX3Byb3RlY3Rpb24oZXZlbnQuZ2V0KCksICZldmVudEtleVN5c3RlbUlkLCAmZGF0YSwgbnVs
bHB0cik7CiAKLSAgICAgICAgICAgIGluaXREYXRhLmFwcGVuZCh7ZXZlbnRLZXlTeXN0ZW1JZCwg
ZGF0YX0pOworICAgICAgICAgICAgaW5pdERhdGEuYXBwZW5kKHsgU3RyaW5nIHsgZXZlbnRLZXlT
eXN0ZW1JZCB9LCBkYXRhIH0pOwogICAgICAgICAgICAgbV9oYW5kbGVkUHJvdGVjdGlvbkV2ZW50
cy5hZGQoR1NUX0VWRU5UX1NFUU5VTShldmVudC5nZXQoKSkpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNDAzOSw3ICs0MDM5LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhh
bmRsZVByb3RlY3Rpb25FdmVudChHc3RFdmVudCogZXZlbnQpCiAgICAgY29uc3QgY2hhciogZXZl
bnRLZXlTeXN0ZW1VVUlEID0gbnVsbHB0cjsKICAgICBHc3RCdWZmZXIqIGluaXREYXRhID0gbnVs
bHB0cjsKICAgICBnc3RfZXZlbnRfcGFyc2VfcHJvdGVjdGlvbihldmVudCwgJmV2ZW50S2V5U3lz
dGVtVVVJRCwgJmluaXREYXRhLCBudWxscHRyKTsKLSAgICBpbml0aWFsaXphdGlvbkRhdGFFbmNv
dW50ZXJlZCh7ZXZlbnRLZXlTeXN0ZW1VVUlELCBpbml0RGF0YX0pOworICAgIGluaXRpYWxpemF0
aW9uRGF0YUVuY291bnRlcmVkKHsgU3RyaW5nIHsgZXZlbnRLZXlTeXN0ZW1VVUlEIH0sIGluaXRE
YXRhIH0pOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdGluZ0Zv
cktleSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmgKaW5kZXggZjNjYThhMzAxYzY3M2JjMzRmNTQ0OTI1OTE1NDlmYjlhNTlkZTE0Mi4uMzJlZDNh
ZThiMjljMDBmZTg4MTRiZGQwNmU2NDk2ODU1YTdhZGVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtNDcxLDcgKzQ3MSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2UqKTsKICAgICB2b2lk
IHByb2Nlc3NUYWJsZU9mQ29udGVudHNFbnRyeShHc3RUb2NFbnRyeSopOwogCi0gICAgU3RyaW5n
IGVuZ2luZURlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIkdTdHJlYW1lciI7
IH0KKyAgICBTdHJpbmcgZW5naW5lRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAiR1N0cmVhbWVyIl9zOyB9CiAgICAgYm9vbCBkaWRQYXNzQ09SU0FjY2Vzc0NoZWNrKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5TYXZlTWVkaWFEYXRhKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9UcmFja1ByaXZhdGVCYXNlR1N0cmVhbWVyLmNwcAppbmRleCBk
Y2EyYzIxZmQ2MzBhNDI3NTIwNGI1NDU1ZTdjNGQyOTQ3MmM1YTZmLi4wM2VkYWM4YzhlOTdiYjFl
YWE0YjMzYjNmNDQ1OWFjZGFkZmI5NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVHJhY2tQcml2YXRlQmFzZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1RyYWNrUHJpdmF0
ZUJhc2VHU3RyZWFtZXIuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBUcmFja1ByaXZhdGVC
YXNlR1N0cmVhbWVyOjpnZXRMYW5ndWFnZUNvZGUoR3N0VGFnTGlzdCogdGFncywgQXRvbVN0cmlu
ZyYgdmEKIHsKICAgICBTdHJpbmcgbGFuZ3VhZ2U7CiAgICAgaWYgKGdldFRhZyh0YWdzLCBHU1Rf
VEFHX0xBTkdVQUdFX0NPREUsIGxhbmd1YWdlKSkgewotICAgICAgICBsYW5ndWFnZSA9IGdzdF90
YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNvXzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBsYW5ndWFnZSA9IFN0cmluZyB7IGdzdF90YWdfZ2V0X2xhbmd1YWdlX2NvZGVfaXNv
XzYzOV8xKGxhbmd1YWdlLnV0ZjgoKS5kYXRhKCkpIH07CiAgICAgICAgIEdTVF9ERUJVRygiQ29u
dmVydGVkIHRyYWNrICVkJ3MgbGFuZ3VhZ2UgY29kZSB0byAlcy4iLCBtX2luZGV4LCBsYW5ndWFn
ZS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGxhbmd1YWdlICE9IHZhbHVlKSB7CiAgICAg
ICAgICAgICB2YWx1ZSA9IGxhbmd1YWdlOwpAQCAtMjExLDcgKzIxMSw3IEBAIGJvb2wgVHJhY2tQ
cml2YXRlQmFzZUdTdHJlYW1lcjo6Z2V0VGFnKEdzdFRhZ0xpc3QqIHRhZ3MsIGNvbnN0IGdjaGFy
KiB0YWdOYW1lLCBTCiAgICAgR1VuaXF1ZU91dFB0cjxnY2hhcj4gdGFnVmFsdWU7CiAgICAgaWYg
KGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nKHRhZ3MsIHRhZ05hbWUsICZ0YWdWYWx1ZS5vdXRQdHIo
KSkpIHsKICAgICAgICAgR1NUX0RFQlVHKCJUcmFjayAlZCBnb3QgJXMgJXMuIiwgbV9pbmRleCwg
dGFnTmFtZSwgdGFnVmFsdWUuZ2V0KCkpOwotICAgICAgICB2YWx1ZSA9IHRhZ1ZhbHVlLmdldCgp
OworICAgICAgICB2YWx1ZSA9IFN0cmluZ1R5cGUgeyB0YWdWYWx1ZS5nZXQoKSB9OwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvRnJhbWVNZXRhZGF0
YUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAppbmRleCA4OTQ3NTQwNWM4MDlhMTg4
NDNjMTI3NTEyNThlNDY1MmRiNmE2NWUwLi5kN2JlODA1MThlZDY5ZWNlY2Q3MTZmYWIyMzIzMGY4
Yzc2MGI5NmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9GcmFtZU1ldGFkYXRhR1N0cmVh
bWVyLmNwcApAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5n
VGltZUZvckVsZW1lbnQoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICBnc3RfcGFkX2FkZF9wcm9i
ZShzaW5rUGFkLmdldCgpLCBwcm9iZVR5cGUsIFtdKEdzdFBhZCosIEdzdFBhZFByb2JlSW5mbyog
aW5mbywgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IEdzdFBhZFByb2JlUmV0dXJuIHsKICAgICAgICAg
YXV0byBbbW9kaWZpZWRCdWZmZXIsIG1ldGFdID0gZW5zdXJlVmlkZW9GcmFtZU1ldGFkYXRhKEdT
VF9QQURfUFJPQkVfSU5GT19CVUZGRVIoaW5mbykpOwogICAgICAgICBHU1RfUEFEX1BST0JFX0lO
Rk9fREFUQShpbmZvKSA9IG1vZGlmaWVkQnVmZmVyOwotICAgICAgICBtZXRhLT5wcml2LT5wcm9j
ZXNzaW5nVGltZXMuc2V0KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSwgc3RkOjpt
YWtlX3BhaXIoZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCgpLCBHU1RfQ0xPQ0tfVElNRV9OT05FKSk7
CisgICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoU3RyaW5nIHsgcmVpbnRl
cnByZXRfY2FzdDxjaGFyKj4odXNlckRhdGEpIH0sIHN0ZDo6bWFrZV9wYWlyKGdzdF91dGlsX2dl
dF90aW1lc3RhbXAoKSwgR1NUX0NMT0NLX1RJTUVfTk9ORSkpOwogICAgICAgICByZXR1cm4gR1NU
X1BBRF9QUk9CRV9PSzsKICAgICB9LCBnc3RfZWxlbWVudF9nZXRfbmFtZShlbGVtZW50KSwgZ19m
cmVlKTsKIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgd2Via2l0R3N0VHJhY2VQcm9jZXNzaW5n
VGltZUZvckVsZW1lbnQoR3N0RWxlbWVudCogZWxlbWVudCkKICAgICAgICAgaWYgKCFtZXRhKQog
ICAgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CiAKLSAgICAgICAgYXV0byogZWxl
bWVudE5hbWUgPSByZWludGVycHJldF9jYXN0PGNoYXIqPih1c2VyRGF0YSk7CisgICAgICAgIFN0
cmluZyBlbGVtZW50TmFtZSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHVzZXJEYXRhKSB9Owog
ICAgICAgICBhdXRvIHZhbHVlID0gbWV0YS0+cHJpdi0+cHJvY2Vzc2luZ1RpbWVzLmdldChlbGVt
ZW50TmFtZSk7CiAgICAgICAgIG1ldGEtPnByaXYtPnByb2Nlc3NpbmdUaW1lcy5zZXQoZWxlbWVu
dE5hbWUsIHN0ZDo6bWFrZV9wYWlyKHZhbHVlLmZpcnN0LCBnc3RfdXRpbF9nZXRfdGltZXN0YW1w
KCkpKTsKICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L1ZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0MzM2ODVlMjMzOTUzMGFjNjNm
MzdkYThjMTk0ZTk0MzM0ZTNmMWNhLi5kNjQwNGMxMjBjYThhZGUxMGY3NWViN2I5YjNhZGMyZDVj
M2QzOTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvVmlkZW9UcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9WaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlR1N0cmVhbWVyOjp1
cGRhdGVDb25maWd1cmF0aW9uRnJvbUNhcHMoKQogCiAjaWYgR1NUX0NIRUNLX1ZFUlNJT04oMSwg
MjAsIDApCiAgICAgR1VuaXF1ZVB0cjxjaGFyPiBjb2RlYyhnc3RfY29kZWNfdXRpbHNfY2Fwc19n
ZXRfbWltZV9jb2RlYyhjYXBzLmdldCgpKSk7Ci0gICAgY29uZmlndXJhdGlvbi5jb2RlYyA9IGNv
ZGVjLmdldCgpOworICAgIGNvbmZpZ3VyYXRpb24uY29kZWMgPSBTdHJpbmcgeyBjb2RlYy5nZXQo
KSB9OwogI2VuZGlmCiAKICAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0gewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdl
YlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA3NTRiM2ZmNDgzOTBk
NWZmMzM2ZDkwOWFjNTVjMDY1ODk3ZGQyZDgxLi5kMGFkNjcyZDcxMDk3Y2Y5MTJhMTczMjI3MDVk
ZjBlZWQzYzIwOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVy
LmNwcApAQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBib29sIHdlYktpdFdlYlNyY1NldEV4dHJh
SGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pCiAKICAgICBH
U1RfREVCVUcoIkFwcGVuZGluZyBleHRyYSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUs
IGZpZWxkQ29udGVudC5nZXQoKSk7CiAgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3Rh
dGljX2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Kj4odXNlckRhdGEpOwotICAgIHJlcXVlc3QtPnNldEhU
VFBIZWFkZXJGaWVsZChmaWVsZE5hbWUsIGZpZWxkQ29udGVudC5nZXQoKSk7CisgICAgcmVxdWVz
dC0+c2V0SFRUUEhlYWRlckZpZWxkKFN0cmluZyB7IGZpZWxkTmFtZSB9LCBTdHJpbmcgeyBmaWVs
ZENvbnRlbnQuZ2V0KCkgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY0NCw3ICs2NDQs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNy
YywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIEFTU0VSVChtZW1iZXJzLT5yZXF1ZXN0
ZWRQb3NpdGlvbiAhPSBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwogCiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJQb3N0aW5nIHRhc2sgdG8gcmVxdWVzdCBSJXUgJXMgcmVxdWVzdGVkUG9zaXRp
b249JSIgR19HVUlOVDY0X0ZPUk1BVCAiIHN0b3BQb3NpdGlvbj0lIiBHX0dVSU5UNjRfRk9STUFU
LCBtZW1iZXJzLT5yZXF1ZXN0TnVtYmVyLCBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCksIG1lbWJl
cnMtPnJlcXVlc3RlZFBvc2l0aW9uLCBtZW1iZXJzLT5zdG9wUG9zaXRpb24pOwotICAgIFVSTCB1
cmwgeyBwcml2LT5vcmlnaW5hbFVSSS5kYXRhKCkgfTsKKyAgICBVUkwgdXJsIHsgU3RyaW5nIHsg
cHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIH0gfTsKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1
ZXN0KHVybCk7CiAgICAgcmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CkBAIC02NTMsNyAr
NjUzLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QoV2ViS2l0V2ViU3Jj
KiBzcmMsIERhdGFNdXRleExvY2tlcjxXZWJLaXRXZWIKICAgICByZXF1ZXN0LnNldEhUVFBSZWZl
cnJlcihtZW1iZXJzLT5yZWZlcnJlcik7CiAKICAgICBpZiAocHJpdi0+aHR0cE1ldGhvZC5nZXQo
KSkKLSAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKHByaXYtPmh0dHBNZXRob2QuZ2V0KCkp
OworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoU3RyaW5nIHsgcHJpdi0+aHR0cE1ldGhv
ZC5nZXQoKSB9KTsKIAogI2lmIFVTRShTT1VQKQogICAgIC8vIEJ5IGRlZmF1bHQsIEhUVFAgQWNj
ZXB0LUVuY29kaW5nIGlzIGRpc2FibGVkIGhlcmUgYXMgd2UgZG9uJ3QKQEAgLTY3Miw3ICs2NzIs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNy
YywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgIC8vIExldCBBcHBsZSB3ZWIgc2VydmVy
cyBrbm93IHdlIHdhbnQgdG8gYWNjZXNzIHRoZWlyIG5pY2UgbW92aWUgdHJhaWxlcnMuCiAgICAg
aWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAoIm1vdmllcy5hcHBsZS5jb20iLCB1cmwuaG9zdCgpLnV0
ZjgoKS5kYXRhKCkpCiAgICAgICAgIHx8ICFnX2FzY2lpX3N0cmNhc2VjbXAoInRyYWlsZXJzLmFw
cGxlLmNvbSIsIHVybC5ob3N0KCkudXRmOCgpLmRhdGEoKSkpCi0gICAgICAgIHJlcXVlc3Quc2V0
SFRUUFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Iik7CisgICAgICAgIHJlcXVlc3Quc2V0SFRU
UFVzZXJBZ2VudCgiUXVpY2t0aW1lLzcuNi42Il9zKTsKIAogICAgIGlmIChtZW1iZXJzLT5yZXF1
ZXN0ZWRQb3NpdGlvbiB8fCBtZW1iZXJzLT5zdG9wUG9zaXRpb24gIT0gVUlOVDY0X01BWCkgewog
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGZvcm1hdGVkUmFuZ2U7CkBAIC02ODEsMTkgKzY4MSwx
OSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNy
YywgRGF0YU11dGV4TG9ja2VyPFdlYktpdFdlYgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBm
b3JtYXRlZFJhbmdlLnJlc2V0KGdfc3RyZHVwX3ByaW50ZigiYnl0ZXM9JSIgR19HVUlOVDY0X0ZP
Uk1BVCAiLSIsIG1lbWJlcnMtPnJlcXVlc3RlZFBvc2l0aW9uKSk7CiAgICAgICAgIEdTVF9ERUJV
R19PQkpFQ1Qoc3JjLCAiUmFuZ2UgcmVxdWVzdDogJXMiLCBmb3JtYXRlZFJhbmdlLmdldCgpKTsK
LSAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlJhbmdl
LCBmb3JtYXRlZFJhbmdlLmdldCgpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmll
bGQoSFRUUEhlYWRlck5hbWU6OlJhbmdlLCBTdHJpbmcgeyBmb3JtYXRlZFJhbmdlLmdldCgpIH0p
OwogICAgIH0KICAgICBBU1NFUlQobWVtYmVycy0+cmVhZFBvc2l0aW9uID09IG1lbWJlcnMtPnJl
cXVlc3RlZFBvc2l0aW9uKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVu
dCBjb25uZWN0aW9uIHN1cHBvcnQgJXMiLCBwcml2LT5rZWVwQWxpdmUgPyAiZW5hYmxlZCIgOiAi
ZGlzYWJsZWQiKTsKICAgICBpZiAoIXByaXYtPmtlZXBBbGl2ZSkKLSAgICAgICAgcmVxdWVzdC5z
ZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOwor
ICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29ubmVj
dGlvbiwgImNsb3NlIl9zKTsKIAogICAgIGlmIChwcml2LT5leHRyYUhlYWRlcnMpCiAgICAgICAg
IGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdl
YlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsKIAogICAgIC8vIFdlIGFsd2F5cyBy
ZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0IGluIGNhc2UgLi4uCi0gICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAi
MSIpOworICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpJY3lN
ZXRhZGF0YSwgIjEiX3MpOwogCiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0b3IgPSBXVEY6OmVuc3VyZUdSZWYoc3JjKSwg
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlcXVlc3ROdW1iZXIgPSBtZW1iZXJzLT5yZXF1
ZXN0TnVtYmVyXSB7CkBAIC04ODEsNyArODgxLDcgQEAgY29uc3QgZ2NoYXIqIGNvbnN0KiB3ZWJL
aXRXZWJTcmNHZXRQcm90b2NvbHMoR1R5cGUpCiAKIHN0YXRpYyBVUkwgY29udmVydFBsYXliaW5V
UkkoY29uc3QgY2hhciogdXJpU3RyaW5nKQogewotICAgIHJldHVybiBVUkwgeyB1cmlTdHJpbmcg
fTsKKyAgICByZXR1cm4gVVJMIHsgU3RyaW5nIHsgdXJpU3RyaW5nIH0gfTsKIH0KIAogc3RhdGlj
IGdjaGFyKiB3ZWJLaXRXZWJTcmNHZXRVcmkoR3N0VVJJSGFuZGxlciogaGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvQXBw
ZW5kUGlwZWxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKaW5kZXggZmU0NzlkNmJiNTI3NGYxZTY5NjNhMzUy
YmI2NmU5NWE2ZmQ5ZTg5Ny4uMWFmMGU1NTRkODJiYWU1ODE5M2NhYzY5NzVhYTVhNzMxZTBhMzg1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9BcHBlbmRQaXBlbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9BcHBlbmRQaXBlbGluZS5jcHAKQEAgLTMyMCw3ICszMjAsNyBA
QCBzdGQ6OnR1cGxlPEdSZWZQdHI8R3N0Q2Fwcz4sIEFwcGVuZFBpcGVsaW5lOjpTdHJlYW1UeXBl
LCBGbG9hdFNpemU+IEFwcGVuZFBpcGVsaQogCiAgICAgY29uc3QgY2hhciogb3JpZ2luYWxNZWRp
YVR5cGUgPSBjYXBzTWVkaWFUeXBlKGRlbXV4ZXJTcmNQYWRDYXBzKTsKICAgICBhdXRvJiBnc3RS
ZWdpc3RyeVNjYW5uZXIgPSBHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXJNU0U6OnNpbmdsZXRvbigp
OwotICAgIGlmICghZ3N0UmVnaXN0cnlTY2FubmVyLmlzQ29kZWNTdXBwb3J0ZWQoR1N0cmVhbWVy
UmVnaXN0cnlTY2FubmVyOjpDb25maWd1cmF0aW9uOjpEZWNvZGluZywgb3JpZ2luYWxNZWRpYVR5
cGUpKSB7CisgICAgaWYgKCFnc3RSZWdpc3RyeVNjYW5uZXIuaXNDb2RlY1N1cHBvcnRlZChHU3Ry
ZWFtZXJSZWdpc3RyeVNjYW5uZXI6OkNvbmZpZ3VyYXRpb246OkRlY29kaW5nLCBTdHJpbmcgeyBv
cmlnaW5hbE1lZGlhVHlwZSB9KSkgewogICAgICAgICBzdHJlYW1UeXBlID0gU3RyZWFtVHlwZTo6
SW52YWxpZDsKICAgICB9IGVsc2UgaWYgKGRvQ2Fwc0hhdmVUeXBlKGRlbXV4ZXJTcmNQYWRDYXBz
LCBHU1RfVklERU9fQ0FQU19UWVBFX1BSRUZJWCkpIHsKICAgICAgICAgcHJlc2VudGF0aW9uU2l6
ZSA9IGdldFZpZGVvUmVzb2x1dGlvbkZyb21DYXBzKGRlbXV4ZXJTcmNQYWRDYXBzKS52YWx1ZV9v
cihGbG9hdFNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lck1TRS5jcHAKaW5kZXggODMxYzJiMmM2ZWZiMjI0NzU5YjQzYmZlNjdm
YjczYjE0ZmUwYTYzNi4uMmNlYzY4NDY2ZmZjM2Q5MTk3NmMyOTA0YmQ3NTBiYmE2Yjg2OWU3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJNU0UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyTVNFLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFN0cmluZyYpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyTVNFOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYsIE1l
ZGlhU291cmNlUHJpdmF0ZUNsaWVudCogbWVkaWFTb3VyY2UpCiB7Ci0gICAgYXV0byBtc2VCbG9i
VVJJID0gbWFrZVN0cmluZygibWVkaWFzb3VyY2UiLCB1cmwuc3RyaW5nKCkuaXNFbXB0eSgpID8g
ImJsb2I6Ly8iIDogdXJsLnN0cmluZygpKTsKKyAgICBhdXRvIG1zZUJsb2JVUkkgPSBtYWtlU3Ry
aW5nKCJtZWRpYXNvdXJjZSIsIHVybC5zdHJpbmcoKS5pc0VtcHR5KCkgPyAiYmxvYjovLyJfcyA6
IHVybC5zdHJpbmcoKSk7CiAgICAgR1NUX0RFQlVHKCJMb2FkaW5nICVzIiwgbXNlQmxvYlVSSS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgbV9tZWRpYVNvdXJjZSA9IG1lZGlhU291cmNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9u
c0dMT3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0wuY3BwCmluZGV4IDczZTI0ODQ1Y2IzM2U1MGQ1NDU3YTYyMDYxODQ0
NDI2OTUxN2Q2OGUuLjkxOTYzZDMyOTA5M2UzNmUwNGEyZDlmYWIxYzNmZGFjMzQ2ZjBhZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNp
b25zR0xPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zR0xPcGVuR0wuY3BwCkBAIC0xMDYsMTkgKzEwNiwxOSBAQCBib29sIEV4
dGVuc2lvbnNHTE9wZW5HTDo6cGxhdGZvcm1TdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgLy8gR0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCBhbmQgR0xfQU5HTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUgYXJlICJmYWtlIi4gVGhleSBhcmUgaW1wbGVtZW50ZWQgdXNp
bmcgb3RoZXIKICAgICAvLyBleHRlbnNpb25zLiBJbiBwYXJ0aWN1bGFyIEdMX0VYVF9mcmFtZWJ1
ZmZlcl9ibGl0IGFuZCBHTF9FWFRfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUvR0xfQVBQTEVfZnJh
bWVidWZmZXJfbXVsdGlzYW1wbGUuCiAgICAgaWYgKG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVm
ZmVyX2JsaXQiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5z
KCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVidWZmZXJfYmxpdCJfcyk7CiAgICAgaWYg
KG5hbWUgPT0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikKLSAgICAgICAgcmV0
dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2ZyYW1lYnVmZmVyX211
bHRpc2FtcGxlIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFp
bnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSJfcyk7CiAgICAgaWYgKG5hbWUgPT0g
IkdMX0FOR0xFX2luc3RhbmNlZF9hcnJheXMiKSB7Ci0gICAgICAgIHJldHVybiAobV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfaW5zdGFuY2VkX2FycmF5cyIpIHx8IG1fYXZh
aWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiKSkKLSAg
ICAgICAgICAgICYmIChtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9kcmF3
X2luc3RhbmNlZCIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX2Ry
YXdfaW5zdGFuY2VkIikpOworICAgICAgICByZXR1cm4gKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5j
b250YWlucygiR0xfQVJCX2luc3RhbmNlZF9hcnJheXMiX3MpIHx8IG1fYXZhaWxhYmxlRXh0ZW5z
aW9ucy5jb250YWlucygiR0xfRVhUX2luc3RhbmNlZF9hcnJheXMiX3MpKQorICAgICAgICAgICAg
JiYgKG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2RyYXdfaW5zdGFuY2Vk
Il9zKSB8fCBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF9kcmF3X2luc3Rh
bmNlZCJfcykpOwogICAgIH0KIAogICAgIGlmIChuYW1lID09ICJHTF9FWFRfc1JHQiIpCi0gICAg
ICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0dXJl
X3NSR0IiKSAmJiAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhbWVi
dWZmZXJfc1JHQiIpIHx8IG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX2Zy
YW1lYnVmZmVyX3NSR0IiKSk7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0VYVF90ZXh0dXJlX3NSR0IiX3MpICYmIChtX2F2YWlsYWJsZUV4dGVuc2lv
bnMuY29udGFpbnMoIkdMX0VYVF9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSB8fCBtX2F2YWlsYWJsZUV4
dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIl9zKSk7CiAKICAgICBp
ZiAobmFtZSA9PSAiR0xfRVhUX2ZyYWdfZGVwdGgiKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFi
bGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCIpOworICAgICAgICByZXR1
cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfZnJhZ19kZXB0aCJfcyk7
CiAKICAgICAvLyBEZXNrdG9wIEdMIGFsd2F5cyBzdXBwb3J0cyBHTF9PRVNfcmdiOF9yZ2JhOC4K
ICAgICBpZiAobmFtZSA9PSAiR0xfT0VTX3JnYjhfcmdiYTgiKQpAQCAtMTI3LDE0ICsxMjcsMTQg
QEAgYm9vbCBFeHRlbnNpb25zR0xPcGVuR0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBuYW1lKQogICAgIC8vIElmIEdMX0FSQl90ZXh0dXJlX2Zsb2F0IG9yIEdMX09F
U190ZXh0dXJlX2Zsb2F0IGlzIGF2YWlsYWJsZSB0aGVuIHdlIHJlcG9ydAogICAgIC8vIEdMX09F
U190ZXh0dXJlX2hhbGZfZmxvYXQsIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciBhbmQgR0xf
T0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgYXMgYXZhaWxhYmxlLgogICAgIGlmIChuYW1l
ID09ICJHTF9PRVNfdGV4dHVyZV9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfaGFs
Zl9mbG9hdCIgfHwgbmFtZSA9PSAiR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyIiB8fCBuYW1l
ID09ICJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0X2xpbmVhciIpCi0gICAgICAgIHJldHVybiBt
X2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FSQl90ZXh0dXJlX2Zsb2F0IikgfHwg
bV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpOwor
ICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUkJfdGV4
dHVyZV9mbG9hdCJfcykgfHwgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9PRVNf
dGV4dHVyZV9mbG9hdCJfcyk7CiAKICAgICAvLyBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAog
ICAgIGlmIChuYW1lID09ICJHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCIpIHsKICNpZiAoUExB
VEZPUk0oR1RLKSkKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlu
cygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxh
YmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiX3MpOwog
I2Vsc2UKLSAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
QVBQTEVfdmVydGV4X2FycmF5X29iamVjdCIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVF
eHRlbnNpb25zLmNvbnRhaW5zKCJHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0Il9zKTsKICNl
bmRpZgogICAgIH0KIApAQCAtMTQ3LDE0ICsxNDcsMTQgQEAgYm9vbCBFeHRlbnNpb25zR0xPcGVu
R0w6OnBsYXRmb3JtU3VwcG9ydHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAobmFtZSA9PSAiR0xfRVhUX3NoYWRlcl90ZXh0
dXJlX2xvZCIpCi0gICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMo
IkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiKTsKKyAgICAgICAgcmV0dXJuIG1fYXZhaWxhYmxl
RXh0ZW5zaW9ucy5jb250YWlucygiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCJfcyk7CiAgICAg
CiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpCi0g
ICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0VYVF90ZXh0
dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOworICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRl
bnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiX3MpOwog
CiAgICAgaWYgKG5hbWUgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7CiAjaWYgUExBVEZPUk0o
R1RLKQotICAgICAgICByZXR1cm4gbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9B
UkJfZHJhd19idWZmZXJzIik7CisgICAgICAgIHJldHVybiBtX2F2YWlsYWJsZUV4dGVuc2lvbnMu
Y29udGFpbnMoIkdMX0FSQl9kcmF3X2J1ZmZlcnMiX3MpOwogI2Vsc2UKICAgICAgICAgLy8gRklY
TUU6IGltcGxlbWVudCBzdXBwb3J0IGZvciBvdGhlciBwbGF0Zm9ybXMuCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTIzMSw3ICsyMzEsNyBAQCBTdHJpbmcgRXh0ZW5zaW9uc0dMT3BlbkdMOjpn
ZXRFeHRlbnNpb25zKCkKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFdJTikKIGJvb2wg
RXh0ZW5zaW9uc0dMT3BlbkdMOjppc1ZlcnRleEFycmF5T2JqZWN0U3VwcG9ydGVkKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c1ZlcnRleEFycmF5T2JqZWN0ID0gc3VwcG9ydHMo
IkdMX09FU192ZXJ0ZXhfYXJyYXlfb2JqZWN0Iik7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3Vw
cG9ydHNWZXJ0ZXhBcnJheU9iamVjdCA9IHN1cHBvcnRzKCJHTF9PRVNfdmVydGV4X2FycmF5X29i
amVjdCJfcyk7CiAgICAgcmV0dXJuIHN1cHBvcnRzVmVydGV4QXJyYXlPYmplY3Q7CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zR0xPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKaW5kZXggY2QxYWViMDU2
NjYzM2EzMDQwZDY5ZTVmMGU3YWFlMDZmZWQ3YWZiYy4uZTkyMzI0YWNiZjdlNGZlMGFhYmUyOTIz
NzM0NTIxNDY4NGNhZTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTENvbW1vbi5j
cHAKQEAgLTE3NCwxMiArMTc0LDEyIEBAIFN0cmluZyBFeHRlbnNpb25zR0xPcGVuR0xDb21tb246
OmdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybUdMT2JqZWN0CiAgICAgZWxz
ZSBpZiAoR0xzaGFkZXJUeXBlID09IEdyYXBoaWNzQ29udGV4dEdMOjpGUkFHTUVOVF9TSEFERVIp
CiAgICAgICAgIHNoYWRlclR5cGUgPSBTSEFERVJfVFlQRV9GUkFHTUVOVDsKICAgICBlbHNlCi0g
ICAgICAgIHJldHVybiAiIjsgLy8gSW52YWxpZCBzaGFkZXIgdHlwZS4KKyAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7IC8vIEludmFsaWQgc2hhZGVyIHR5cGUuCiAKICAgICBIYXNoTWFwPFBs
YXRmb3JtR0xPYmplY3QsIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpTaGFkZXJTb3VyY2VFbnRy
eT46Oml0ZXJhdG9yIHJlc3VsdCA9IG1fY29udGV4dC0+bV9zaGFkZXJTb3VyY2VNYXAuZmluZChz
aGFkZXIpOwogCiAgICAgaWYgKHJlc3VsdCA9PSBtX2NvbnRleHQtPm1fc2hhZGVyU291cmNlTWFw
LmVuZCgpKQotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygp
OwogCiAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OlNoYWRlclNvdXJjZUVudHJ5JiBlbnRy
eSA9IHJlc3VsdC0+dmFsdWU7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCBTdHJpbmcgRXh0ZW5zaW9u
c0dMT3BlbkdMQ29tbW9uOjpnZXRUcmFuc2xhdGVkU2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm1H
TE9iamVjdAogICAgIH0KIAogICAgIGlmICghaXNWYWxpZCkKLSAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIHJldHVybiB0cmFuc2xhdGVkU2hh
ZGVyU291cmNlOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgRXh0ZW5zaW9uc0dMT3BlbkdM
Q29tbW9uOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgICAgIEdMaW50IG51
bUV4dGVuc2lvbnMgPSAwOwogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfTlVNX0VYVEVOU0lP
TlMsICZudW1FeHRlbnNpb25zKTsKICAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IG51bUV4
dGVuc2lvbnM7ICsraSkKLSAgICAgICAgICAgIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5hZGQocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZ2xHZXRTdHJpbmdpKEdMX0VYVEVOU0lPTlMsIGkp
KSk7CisgICAgICAgICAgICBtX2F2YWlsYWJsZUV4dGVuc2lvbnMuYWRkKFN0cmluZyB7IHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5naShHTF9FWFRFTlNJT05TLCBpKSkg
fSk7CiAKICAgICAgICAgaWYgKCFtX2F2YWlsYWJsZUV4dGVuc2lvbnMuY29udGFpbnMoIkdMX0FS
Ql90ZXh0dXJlX3N0b3JhZ2UiX3MpKSB7CiAgICAgICAgICAgICBHTGludCBtYWpvclZlcnNpb247
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uc0dMT3BlbkdMRVMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL0V4dGVuc2lvbnNHTE9wZW5HTEVTLmNwcAppbmRleCA1NGIxNzAwMTUwOTUwZTFkYjY0
NzJjY2NhYjFhYTljOTU2OGUyYTczLi5iOTExMTAyNTk4MzU4OTBkNjUxM2ZhMDMzYzMyZjk1MWU3
ZWZkYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uc0dMT3BlbkdMRVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zR0xPcGVuR0xFUy5jcHAKQEAgLTI2NCw3ICsyNjQs
NyBAQCBib29sIEV4dGVuc2lvbnNHTE9wZW5HTEVTOjpwbGF0Zm9ybVN1cHBvcnRzRXh0ZW5zaW9u
KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgICAgIG1fZ2xEcmF3QXJyYXlzSW5zdGFuY2Vk
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNFREFOR0xFUFJP
QyA+KGVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSIpKTsKICAg
ICAgICAgICAgIG1fZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MgPihlZ2xHZXRQcm9jQWRkcmVz
cygiZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSIpKTsKICAgICAgICAgICAgIG1fc3VwcG9y
dHNBTkdMRWluc3RhbmNlZEFycmF5cyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAobWFqb3JW
ZXJzaW9uKCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
aW5zdGFuY2VkX2FycmF5cyIpICYmIG1fYXZhaWxhYmxlRXh0ZW5zaW9ucy5jb250YWlucygiR0xf
RVhUX2RyYXdfaW5zdGFuY2VkIikpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9u
KCkgPj0gMyB8fCAobV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRfaW5zdGFu
Y2VkX2FycmF5cyJfcykgJiYgbV9hdmFpbGFibGVFeHRlbnNpb25zLmNvbnRhaW5zKCJHTF9FWFRf
ZHJhd19pbnN0YW5jZWQiX3MpKSkgewogICAgICAgICAgICAgbV9nbFZlcnRleEF0dHJpYkRpdmlz
b3JBTkdMRSA9IDo6Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yOwogICAgICAgICAgICAgbV9nbERyYXdB
cnJheXNJbnN0YW5jZWRBTkdMRSA9IDo6Z2xEcmF3QXJyYXlzSW5zdGFuY2VkOwogICAgICAgICAg
ICAgbV9nbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gOjpnbERyYXdFbGVtZW50c0luc3Rh
bmNlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuY3BwCmluZGV4IGNhYWFiNmZj
NTk4YjM5MGVhNTQ1MzRhYWUwOThjNDhjOWM5MjQ2OTQuLjBhNmE4OGNmMWFkNGM4NGQxMDAxNDRk
MzU5NzU5Yjk1YWU3YjIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmNw
cApAQCAtMzUyLDEzICszNTIsMTQgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlYWRDb21wb3NpdGVkUmVzdWx0cygpCiAgICAgcmV0dXJuIHJl
YWRSZW5kZXJpbmdSZXN1bHRzKCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6
OnZhbGlkYXRlRGVwdGhTdGVuY2lsKGNvbnN0IGNoYXIqIHBhY2tlZERlcHRoU3RlbmNpbEV4dGVu
c2lvbikKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnZhbGlkYXRlRGVwdGhTdGVuY2ls
KEFTQ0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pCiB7CiAgICAgYXV0byBh
dHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKICAgICBpZiAoYXR0cnMuc3RlbmNpbCkgewot
ICAgICAgICBpZiAoc3VwcG9ydHNFeHRlbnNpb24ocGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
KSkgewotICAgICAgICAgICAgZW5zdXJlRXh0ZW5zaW9uRW5hYmxlZChwYWNrZWREZXB0aFN0ZW5j
aWxFeHRlbnNpb24pOworICAgICAgICBTdHJpbmcgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9u
U3RyaW5nIHsgcGFja2VkRGVwdGhTdGVuY2lsRXh0ZW5zaW9uIH07CisgICAgICAgIGlmIChzdXBw
b3J0c0V4dGVuc2lvbihwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb25TdHJpbmcpKSB7CisgICAg
ICAgICAgICBlbnN1cmVFeHRlbnNpb25FbmFibGVkKHBhY2tlZERlcHRoU3RlbmNpbEV4dGVuc2lv
blN0cmluZyk7CiAgICAgICAgICAgICAvLyBGb3JjZSBkZXB0aCBpZiBzdGVuY2lsIGlzIHRydWUu
CiAgICAgICAgICAgICBhdHRycy5kZXB0aCA9IHRydWU7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaAppbmRleCA4NDlhN2Y1YTM5MTJkMmU1YTAyM2ZkNDg5
M2NjZjY2ZDc2ZWI1NjU5Li5hZjc1ZTBkMDk5OTYxNmJmNjMxYjU2ZjVlNTM3NzliZGFmMmQ3MTUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtNDMzLDcgKzQzMyw3IEBA
IHByb3RlY3RlZDoKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywg
YW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVk
IGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTAogICAgIC8vIGltcGxlbWVu
dGF0aW9uLgotICAgIHZvaWQgdmFsaWRhdGVEZXB0aFN0ZW5jaWwoY29uc3QgY2hhciogcGFja2Vk
RGVwdGhTdGVuY2lsRXh0ZW5zaW9uKTsKKyAgICB2b2lkIHZhbGlkYXRlRGVwdGhTdGVuY2lsKEFT
Q0lJTGl0ZXJhbCBwYWNrZWREZXB0aFN0ZW5jaWxFeHRlbnNpb24pOwogICAgIHZvaWQgdmFsaWRh
dGVBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIHJlYWRuUGl4ZWxzSW1wbChHQ0dMaW50IHgsIEdD
R0xpbnQgeSwgR0NHTHNpemVpIHdpZHRoLCBHQ0dMc2l6ZWkgaGVpZ2h0LCBHQ0dMZW51bSBmb3Jt
YXQsIEdDR0xlbnVtIHR5cGUsIEdDR0xzaXplaSBidWZTaXplLCBHQ0dMc2l6ZWkqIGxlbmd0aCwg
R0NHTHNpemVpKiBjb2x1bW5zLCBHQ0dMc2l6ZWkqIHJvd3MsIEdDR0x2b2lkKiBkYXRhLCBib29s
IHJlYWRpbmdUb1BpeGVsQnVmZmVyT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEJhc2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dEdMT3BlbkdMQmFzZS5jcHAKaW5kZXggYzM1YjJmMGYxNWQ5Y2QwOWI5YjI4YmUwYmY0NDc3ODg3
NDMwNTczOC4uN2I1NGEwMWYzZTk2M2MxODc5MTczNGVjNGEzYzRlYThjOGYzOGE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMQmFzZS5jcHAKQEAgLTg2LDcgKzg2LDcg
QEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJl
YWRQaXhlbHNGb3JQYWludFJlc3VsdHMoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
Ojp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQogewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9F
WFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xf
RVhUX3BhY2tlZF9kZXB0aF9zdGVuY2lsIl9zKTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHRH
TE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTEwOCw3ICsxMDgs
NyBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRT
aXplJiBzaXplKQogCiAgICAgICAgIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYgZXh0ZW5zaW9u
cyA9IGdldEV4dGVuc2lvbnMoKTsKICAgICAgICAgLy8gVXNlIGEgMjQgYml0IGRlcHRoIGJ1ZmZl
ciB3aGVyZSB3ZSBrbm93IHdlIGhhdmUgaXQuCi0gICAgICAgIGlmIChleHRlbnNpb25zLnN1cHBv
cnRzKCJHTF9FWFRfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKKyAgICAgICAgaWYgKGV4dGVuc2lv
bnMuc3VwcG9ydHMoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCJfcykpCiAgICAgICAgICAg
ICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdMX0RFUFRIMjRfU1RFTkNJTDhfRVhUOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCA9IEdM
X0RFUFRIX0NPTVBPTkVOVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTEVTLmNw
cAppbmRleCA4M2I5Yjg2YzUzMjcyZmM1NDE1N2M5MGY0NjY1YWY4MTE5OGRhNGY4Li4zYWU2MmJm
NmVlYjEzNzZmNzMxNGZhMzBjNmM0YWRlOTg4YTM4MGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0R0xPcGVuR0xFUy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dEdMT3BlbkdMRVMuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIC8v
IFdlIGRvbid0IGFsbG93IHRoZSBsb2dpYyB3aGVyZSBzdGVuY2lsIGlzIHJlcXVpcmVkIGFuZCBk
ZXB0aCBpcyBub3QuCiAgICAgLy8gU2VlIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0
ZUF0dHJpYnV0ZXMuCi0gICAgYm9vbCBzdXBwb3J0UGFja2VkRGVwdGhTdGVuY2lsQnVmZmVyID0g
KGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVzLmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVu
c2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIik7CisgICAgYm9vbCBzdXBwb3J0UGFj
a2VkRGVwdGhTdGVuY2lsQnVmZmVyID0gKGF0dHJpYnV0ZXMuc3RlbmNpbCB8fCBhdHRyaWJ1dGVz
LmRlcHRoKSAmJiBzdXBwb3J0c0V4dGVuc2lvbigiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIAogICAgIC8vIFJlc2l6ZSByZWd1bGFyIEZCTy4KICAgICBib29sIG11c3RSZXN0b3Jl
RkJPID0gZmFsc2U7CkBAIC0yNDAsMTEgKzI0MCwxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dEdM
T3BlbkdMOjp0ZXhJbWFnZTJEKEdDR0xlbnVtIHRhcmdldCwgR0NHTGludCBsZXZlbCwgR0NHTGVu
dQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQog
ewotICAgIHZhbGlkYXRlRGVwdGhTdGVuY2lsKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwi
KTsKKyAgICB2YWxpZGF0ZURlcHRoU3RlbmNpbCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Il9zKTsKIAogICAgIGF1dG8gYXR0cmlidXRlcyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CiAKLSAg
ICBpZiAoYXR0cmlidXRlcy5hbnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdf
bXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIikpIHsKKyAgICBpZiAoYXR0cmlidXRlcy5h
bnRpYWxpYXMgJiYgIXN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRl
cl90b190ZXh0dXJlIl9zKSkgewogICAgICAgICBhdHRyaWJ1dGVzLmFudGlhbGlhcyA9IGZhbHNl
OwogICAgICAgICBzZXRDb250ZXh0QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApp
bmRleCBlOTJlNzQ5YTFmMWU1NTY2MGYxNjYzYTg1NmFlZGY0YmVlMzkzNjUzLi5mY2M4YmNjMTkx
MDQ0NTY1ZjU0OTgwOGI1ZmRjNDhhMWMxYTg2YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVy
QU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTM1MCw3ICszNTAsNyBA
QCBib29sIEdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogICAgIEFTU0VSVF9VTlVTRUQoc3VjY2Vzcywgc3VjY2Vzcyk7CiAKICAgICAvLyBX
ZSByZXF1aXJlIHRoaXMgZXh0ZW5zaW9uIHRvIHJlbmRlciBpbnRvIHRoZSBkbWFidWYtYmFja2Vk
IEVHTEltYWdlLgotICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9PRVNf
RUdMX2ltYWdlIikpOworICAgIFJFTEVBU0VfQVNTRVJUKHN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9P
RVNfRUdMX2ltYWdlIl9zKSk7CiAgICAgR0xfUmVxdWVzdEV4dGVuc2lvbkFOR0xFKCJHTF9PRVNf
RUdMX2ltYWdlIik7CiAKICAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDllMGY5ZDBjZjYwZTczMTg2ZWVmZGU1
NDE5YjYyZmY2ZmZmZjdmZTYuLmJjYjY3NTFlZGIzZTZkMzVlMThlMTQ5ZmEwODJhOTk4MmVlNzVk
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9H
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTE4
LDcgKzUxOCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVy
Q2hhbmdlcygpCiAgICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9ucyhtX2FuaW1hdGlvbnMpOwog
CiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIEFuaW1hdGlvblN0YXJ0ZWQpCi0gICAgICAgIGNsaWVu
dCgpLm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgIiIsIG1fYW5pbWF0aW9uU3RhcnRUaW1l
KTsKKyAgICAgICAgY2xpZW50KCkubm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh0aGlzLCBlbXB0eVN0
cmluZygpLCBtX2FuaW1hdGlvblN0YXJ0VGltZSk7CiAKICAgICBtX2NoYW5nZU1hc2sgPSBOb0No
YW5nZXM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCBjOGNh
YzQ4YzZjMDVlY2I0NTIxNTdmYjIzMWViNjRiNjk4Y2E2ZjI3Li5jN2ExYzI3MjVkM2QyZTJlZjli
ZTk3M2Q5Y2ZjOGNmYWI5OGI4OGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRl
ci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1cmVN
YXBwZXJGUFNDb3VudGVyKCkKICAgICAsIG1fbGFzdEZQUygwKQogICAgICwgbV9mcmFtZUNvdW50
KDApCiB7Ci0gICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCA9IGdldGVudigiV0VCS0lUX1NI
T1dfRlBTIik7CisgICAgU3RyaW5nIHNob3dGUFNFbnZpcm9ubWVudCB7IGdldGVudigiV0VCS0lU
X1NIT1dfRlBTIikgfTsKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAgbV9mcHNJbnRlcnZhbCA9
IFNlY29uZHMoc2hvd0ZQU0Vudmlyb25tZW50LnRvRG91YmxlKCZvaykpOwogICAgIGlmIChvayAm
JiBtX2Zwc0ludGVydmFsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDBkYjk4MDIxODA1NWJmNWExNDVjMzE3ODcz
YmE4Yjk1NmI5M2E3YTkuLjc2NjlhMTFkYmEyN2E1N2FkZTg1MmRhMWY4YjhmMjc4YjIzODk5NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6cmVzdW1lQW5pbWF0aW9ucygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCgpCiB7Ci0gICAgY2xpZW50KCkubm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCh0aGlzLCAiIiwgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lKTsKKyAgICBj
bGllbnQoKS5ub3RpZnlBbmltYXRpb25TdGFydGVkKHRoaXMsIGVtcHR5U3RyaW5nKCksIG1fbGFz
dEFuaW1hdGlvblN0YXJ0VGltZSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpyZXF1ZXN0UGVuZGluZ1RpbGVDcmVhdGlvblRpbWVyRmlyZWQoKQpAQCAtMTQ5MCw3ICsxNDkw
LDcgQEAgc3RhdGljIHZvaWQgZHVtcElubmVyTGF5ZXIoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwg
Y29uc3QgU3RyaW5nJiBsYWJlbCwgQ29vcmRpbmEKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpkdW1wQWRkaXRpb25hbFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdGV4dFN0cmVhbSwgT3B0
aW9uU2V0PExheWVyVHJlZUFzVGV4dE9wdGlvbnM+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgaWYg
KG9wdGlvbnMgJiBMYXllclRyZWVBc1RleHRPcHRpb25zOjpJbmNsdWRlQ29udGVudExheWVycykK
LSAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIiwgbV9i
YWNrZHJvcExheWVyLmdldCgpLCBvcHRpb25zKTsKKyAgICAgICAgZHVtcElubmVyTGF5ZXIodGV4
dFN0cmVhbSwgImJhY2tkcm9wIGxheWVyIl9zLCBtX2JhY2tkcm9wTGF5ZXIuZ2V0KCksIG9wdGlv
bnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggMWY1Y2EzYjJhYzM5ZmUyNTI0ZGU1ZTA3
YTI1ZGE2YjUzYThjZjllZC4uYzhhYjI2NDdmN2Y5YTBiZTMyYzE4MmU0MmE2NTFhNzdhODkxNWJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApA
QCAtNDQsMTIgKzQ0LDEyIEBAIGVudW0gQ2xpcGJvYXJkRGF0YVR5cGUgewogCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFzdGVib2FyZD4gUGFzdGVib2FyZDo6Y3JlYXRlRm9yQ29weUFuZFBhc3RlKHN0ZDo6
dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQogewotICAgIHJldHVybiBt
YWtlVW5pcXVlPFBhc3RlYm9hcmQ+KFdURk1vdmUoY29udGV4dCksICJDTElQQk9BUkQiKTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3ZlKGNvbnRleHQpLCAiQ0xJUEJP
QVJEIl9zKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNy
ZWF0ZUZvckdsb2JhbFNlbGVjdGlvbihzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVib2FyZENvbnRleHQ+
JiYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gbWFrZVVuaXF1ZTxQYXN0ZWJvYXJkPihXVEZNb3Zl
KGNvbnRleHQpLCAiUFJJTUFSWSIpOworICAgIHJldHVybiBtYWtlVW5pcXVlPFBhc3RlYm9hcmQ+
KFdURk1vdmUoY29udGV4dCksICJQUklNQVJZIl9zKTsKIH0KIAogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRHdGsuY3BwCmluZGV4IDQ0ZGZkZWNiMzFiMDcxNTM2MjI1MTY3Njc1YTVk
ZWY1M2Y3MjFhZjguLmMwMTdmMjFmYmQ4NGYyYjg0MmUwMWYyNDhjYzQ0MDcyM2NiMWFhYjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZl
bnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJv
YXJkRXZlbnRHdGsuY3BwCkBAIC03NzksMTAxICs3NzksMTAxIEBAIFN0cmluZyBQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JHZGtLZXlDb2RlKHVuc2lnbmVkIGtleUNvZGUp
CiAgICAgY2FzZSBHREtfS0VZX01lbnU6CiAgICAgY2FzZSBHREtfS0VZX0FsdF9MOgogICAgIGNh
c2UgR0RLX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJBbHQiOworICAgICAgICByZXR1cm4g
IkFsdCJfczsKICAgICBjYXNlIEdES19LRVlfQ2xlYXI6Ci0gICAgICAgIHJldHVybiAiQ2xlYXIi
OworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNhc2UgR0RLX0tFWV9Eb3duOgotICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4gIkRvd24iX3M7CiAgICAgICAgIC8v
ICJFbmQiCiAgICAgY2FzZSBHREtfS0VZX0VuZDoKLSAgICAgICAgcmV0dXJuICJFbmQiOworICAg
ICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVudGVyIgogICAgIGNhc2UgR0RLX0tF
WV9JU09fRW50ZXI6CiAgICAgY2FzZSBHREtfS0VZX0tQX0VudGVyOgogICAgIGNhc2UgR0RLX0tF
WV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOworICAgICAgICByZXR1cm4gIkVudGVy
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9FeGVjdXRlOgotICAgICAgICByZXR1cm4gIkV4ZWN1dGUi
OworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxOgotICAg
ICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJGMSJfczsKICAgICBjYXNlIEdES19L
RVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAgICByZXR1cm4gIkYyIl9zOwogICAg
IGNhc2UgR0RLX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgIHJldHVybiAi
RjMiX3M7CiAgICAgY2FzZSBHREtfS0VZX0Y0OgotICAgICAgICByZXR1cm4gIkY0IjsKKyAgICAg
ICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIEdES19LRVlfRjU6Ci0gICAgICAgIHJldHVybiAi
RjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GNjoKLSAgICAg
ICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYiX3M7CiAgICAgY2FzZSBHREtfS0VZ
X0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAgcmV0dXJuICJGNyJfczsKICAgICBj
YXNlIEdES19LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgiOworICAgICAgICByZXR1cm4gIkY4
Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GOToKLSAgICAgICAgcmV0dXJuICJGOSI7CisgICAgICAg
IHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxMDoKLSAgICAgICAgcmV0dXJuICJG
MTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBjYXNlIEdES19LRVlfRjExOgotICAg
ICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAiRjExIl9zOwogICAgIGNhc2UgR0RL
X0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAgICAgICAgcmV0dXJuICJGMTIiX3M7
CiAgICAgY2FzZSBHREtfS0VZX0YxMzoKLSAgICAgICAgcmV0dXJuICJGMTMiOworICAgICAgICBy
ZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIEdES19LRVlfRjE0OgotICAgICAgICByZXR1cm4gIkYx
NCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTU6Ci0gICAg
ICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJGMTUiX3M7CiAgICAgY2FzZSBHREtf
S0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAgICAgICByZXR1cm4gIkYxNiJfczsK
ICAgICBjYXNlIEdES19LRVlfRjE3OgotICAgICAgICByZXR1cm4gIkYxNyI7CisgICAgICAgIHJl
dHVybiAiRjE3Il9zOwogICAgIGNhc2UgR0RLX0tFWV9GMTg6Ci0gICAgICAgIHJldHVybiAiRjE4
IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YxOToKLSAgICAg
ICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYxOSJfczsKICAgICBjYXNlIEdES19L
RVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAgICAgIHJldHVybiAiRjIwIl9zOwog
ICAgIGNhc2UgR0RLX0tFWV9GMjE6Ci0gICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgcmV0
dXJuICJGMjEiX3M7CiAgICAgY2FzZSBHREtfS0VZX0YyMjoKLSAgICAgICAgcmV0dXJuICJGMjIi
OworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNlIEdES19LRVlfRjIzOgotICAgICAg
ICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgIGNhc2UgR0RLX0tF
WV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgcmV0dXJuICJGMjQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVybiAiSGVscCI7CisgICAgICAgIHJl
dHVybiAiSGVscCJfczsKICAgICBjYXNlIEdES19LRVlfSG9tZToKLSAgICAgICAgcmV0dXJuICJI
b21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgIGNhc2UgR0RLX0tFWV9JbnNlcnQ6
Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgcmV0dXJuICJJbnNlcnQiX3M7CiAg
ICAgY2FzZSBHREtfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgICAgIHJl
dHVybiAiTGVmdCJfczsKICAgICBjYXNlIEdES19LRVlfUGFnZV9Eb3duOgotICAgICAgICByZXR1
cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biJfczsKICAgICBjYXNlIEdE
S19LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdlVXAiOworICAgICAgICByZXR1cm4g
IlBhZ2VVcCJfczsKICAgICBjYXNlIEdES19LRVlfUGF1c2U6Ci0gICAgICAgIHJldHVybiAiUGF1
c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAgIGNhc2UgR0RLX0tFWV8zMjcwX1By
aW50U2NyZWVuOgogICAgIGNhc2UgR0RLX0tFWV9QcmludDoKLSAgICAgICAgcmV0dXJuICJQcmlu
dFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iX3M7CiAgICAgY2FzZSBHREtf
S0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICAgICAgcmV0dXJuICJSaWdo
dCJfczsKICAgICBjYXNlIEdES19LRVlfU2VsZWN0OgotICAgICAgICByZXR1cm4gIlNlbGVjdCI7
CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNhc2UgR0RLX0tFWV9VcDoKLSAgICAg
ICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAiX3M7CiAgICAgICAgIC8vIFN0YW5k
YXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAgICAgY2FzZSBHREtfS0VZX0RlbGV0
ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAgICByZXR1cm4gIlUrMDA3RiJfczsK
ICAgICBjYXNlIEdES19LRVlfQmFja1NwYWNlOgotICAgICAgICByZXR1cm4gIlUrMDAwOCI7Cisg
ICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2UgR0RLX0tFWV9JU09fTGVmdF9UYWI6
CiAgICAgY2FzZSBHREtfS0VZXzMyNzBfQmFja1RhYjoKICAgICBjYXNlIEdES19LRVlfVGFiOgot
ICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJldHVybiAiVSswMDA5Il9zOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJVKyIsIGhleChnZGtfa2V5dmFs
X3RvX3VuaWNvZGUoZ2RrX2tleXZhbF90b191cHBlcihrZXlDb2RlKSksIDQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IDM2ODcy
MmEzNmY1OGNjMGU3MmFmODc2NTVlYmFlNmNhNWQ0Yjk3OGMuLmU5NTc4MjkyYjFlMDBlZjc2NjY3
MTZmOWNhYmYxNDI3MTg4Zjg4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
YXN0ZWJvYXJkSU9TLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6c2V0RHJh
Z0ltYWdlKERyYWdJbWFnZSwgY29uc3QgSW50UG9pbnQmKQogCiBTdHJpbmcgUGFzdGVib2FyZDo6
bmFtZU9mRHJhZ1Bhc3RlYm9hcmQoKQogewotICAgIHJldHVybiAiZHJhZyBhbmQgZHJvcCBwYXN0
ZWJvYXJkIjsKKyAgICByZXR1cm4gImRyYWcgYW5kIGRyb3AgcGFzdGVib2FyZCJfczsKIH0KIAog
c3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmRE
cm9wKHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkQ29udGV4dD4mJiBjb250ZXh0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggNjAxMWZhMmM5YWM3
NjczYWM5MTUxZDVmZjM1MmM3ZTVlNGFlZTIzMi4uOGQ1YzQzZGU4Mzk1NTk4YzIzOTlhMzhhODNk
ZWEzOGMxNGQyOTZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tCkBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ2xhc3NpY1Bo
b25lKCkKICAgICByZXR1cm4gaXNDbGFzc2ljKCkgJiYgW1BBTDo6Z2V0VUlBcHBsaWNhdGlvbkNs
YXNzKCkgX2NsYXNzaWNNb2RlXSAhPSBVSUFwcGxpY2F0aW9uU2NlbmVDbGFzc2ljTW9kZU9yaWdp
bmFsUGFkOwogfQogCi1TdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKK0FTQ0lJTGl0ZXJhbCBv
c05hbWVGb3JVc2VyQWdlbnQoKQogewogICAgIGlmIChkZXZpY2VIYXNJUGFkQ2FwYWJpbGl0eSgp
ICYmICFpc0NsYXNzaWNQaG9uZSgpKQotICAgICAgICByZXR1cm4gIk9TIjsKLSAgICByZXR1cm4g
ImlQaG9uZSBPUyI7CisgICAgICAgIHJldHVybiAiT1MiX3M7CisgICAgcmV0dXJuICJpUGhvbmUg
T1MiX3M7CiB9CiAKIHN0YXRpYyBTdHJpbmdWaWV3IGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IDQ3NTc0ZmM0NWM4MDdkM2ZmZDM1MDdiZTc2MjJi
MmM0ODE2Yzk4NmYuLmJlNDZlMWUwZWM3NGEyNjk1ZDExMWQwOWEyMDhhY2FhZTE1ZGViZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTgzOCw3ICs4MzgsNyBAQCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6flZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KCkKIHsKICAg
ICBXZWJBVlBsYXllckNvbnRyb2xsZXIqIHBsYXllckNvbnRyb2xsZXIgPSB0aGlzLT5wbGF5ZXJD
b250cm9sbGVyKCk7CiAgICAgaWYgKHBsYXllckNvbnRyb2xsZXIgJiYgcGxheWVyQ29udHJvbGxl
ci5leHRlcm5hbFBsYXliYWNrQWN0aXZlKQotICAgICAgICBleHRlcm5hbFBsYXliYWNrQ2hhbmdl
ZChmYWxzZSwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OlRhcmdldFR5cGVOb25lLCAiIik7CisgICAg
ICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6
VGFyZ2V0VHlwZU5vbmUsIGVtcHR5U3RyaW5nKCkpOwogICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsKQogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3Rl
Ym9hcmRMaWJXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGlid3BlL1Bhc3RlYm9h
cmRMaWJXUEUuY3BwCmluZGV4IDE4ODdkOGM2ZjI0NzE0NDRlZWQzY2YwNmYzNDVhMzg5M2M5ZTZl
NzMuLmFlNDM5ZTMwZjFmYjIzOWQxOGUxMTY0ZTg4OTZkZmIyNzJjNzU2NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QYXN0ZWJvYXJkTGliV1BFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGFzdGVib2FyZExpYldQRS5jcHAKQEAg
LTk3LDcgKzk3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpjbGVhcihjb25zdCBTdHJpbmcmKQogCiB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCwgUGxhaW5UZXh0
VVJMUmVhZGluZ1BvbGljeSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQogewotICAgIHRleHQudGV4
dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZFN0cmlu
Z0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCBuYW1lKCksIGNv
bnRleHQoKSk7CisgICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9h
cmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hh
cnNldD11dGYtOCJfcywgbmFtZSgpLCBjb250ZXh0KCkpOwogfQogCiB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eSwgc3RkOjpvcHRpb25hbDxzaXplX3Q+KQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUGFzdGVi
b2FyZDo6cmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRlciYsIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PikK
IAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiB1cmwpCiB7Ci0g
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFz
dGVib2FyZCgidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04IiwgdXJsLnVybC5zdHJpbmcoKSk7Cisg
ICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvUGFz
dGVib2FyZCgidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Il9zLCB1cmwudXJsLnN0cmluZygpKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVRydXN0d29ydGh5V2ViVVJMc1Bib2FyZFR5cGUo
Y29uc3QgUGFzdGVib2FyZFVSTCYpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZU1hcmt1cChjb25zdCBTdHJpbmcmKQogCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxh
aW5UZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgU21hcnRSZXBsYWNlT3B0aW9uKQogewotICAgIHdy
aXRlU3RyaW5nKCJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiLCB0ZXh0KTsKKyAgICB3cml0ZVN0
cmluZygidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Il9zLCB0ZXh0KTsKIH0KIAogdm9pZCBQYXN0
ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEoY29uc3QgVmVjdG9yPFBhc3RlYm9hcmRDdXN0b21EYXRh
PiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saWJ3cGUvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50TGliV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9Q
bGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCmluZGV4IGEzNGRjMjIwYmJiOWE5MmI0MGRm
YjQ2M2U4NzI0ZTgxYWM3NDViMmMuLjg0MzIzMWQzYjU4YTAyZmQ5ZDkzZDNhMzdiODY5OTdiZTU2
ZDBmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpYndwZS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
YndwZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRMaWJXUEUuY3BwCkBAIC03NzMsMTAxICs3NzMsMTAx
IEBAIFN0cmluZyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmtleUlkZW50aWZpZXJGb3JXUEVLZXlD
b2RlKHVuc2lnbmVkIGtleUNvZGUpCiAgICAgY2FzZSBXUEVfS0VZX01lbnU6CiAgICAgY2FzZSBX
UEVfS0VZX0FsdF9MOgogICAgIGNhc2UgV1BFX0tFWV9BbHRfUjoKLSAgICAgICAgcmV0dXJuICJB
bHQiOworICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICBjYXNlIFdQRV9LRVlfQ2xlYXI6Ci0g
ICAgICAgIHJldHVybiAiQ2xlYXIiOworICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgIGNh
c2UgV1BFX0tFWV9Eb3duOgotICAgICAgICByZXR1cm4gIkRvd24iOworICAgICAgICByZXR1cm4g
IkRvd24iX3M7CiAgICAgICAgIC8vICJFbmQiCiAgICAgY2FzZSBXUEVfS0VZX0VuZDoKLSAgICAg
ICAgcmV0dXJuICJFbmQiOworICAgICAgICByZXR1cm4gIkVuZCJfczsKICAgICAgICAgLy8gIkVu
dGVyIgogICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6CiAgICAgY2FzZSBXUEVfS0VZX0tQX0Vu
dGVyOgogICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIHJldHVybiAiRW50ZXIiOwor
ICAgICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9FeGVjdXRlOgotICAg
ICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICByZXR1cm4gIkV4ZWN1dGUiX3M7CiAgICAg
Y2FzZSBXUEVfS0VZX0YxOgotICAgICAgICByZXR1cm4gIkYxIjsKKyAgICAgICAgcmV0dXJuICJG
MSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjI6Ci0gICAgICAgIHJldHVybiAiRjIiOworICAgICAg
ICByZXR1cm4gIkYyIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMzoKLSAgICAgICAgcmV0dXJuICJG
MyI7CisgICAgICAgIHJldHVybiAiRjMiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y0OgotICAgICAg
ICByZXR1cm4gIkY0IjsKKyAgICAgICAgcmV0dXJuICJGNCJfczsKICAgICBjYXNlIFdQRV9LRVlf
RjU6Ci0gICAgICAgIHJldHVybiAiRjUiOworICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9GNjoKLSAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgIHJldHVybiAiRjYi
X3M7CiAgICAgY2FzZSBXUEVfS0VZX0Y3OgotICAgICAgICByZXR1cm4gIkY3IjsKKyAgICAgICAg
cmV0dXJuICJGNyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjg6Ci0gICAgICAgIHJldHVybiAiRjgi
OworICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GOToKLSAgICAgICAg
cmV0dXJuICJGOSI7CisgICAgICAgIHJldHVybiAiRjkiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0Yx
MDoKLSAgICAgICAgcmV0dXJuICJGMTAiOworICAgICAgICByZXR1cm4gIkYxMCJfczsKICAgICBj
YXNlIFdQRV9LRVlfRjExOgotICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgICAgIHJldHVybiAi
RjExIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTI6Ci0gICAgICAgIHJldHVybiAiRjEyIjsKKyAg
ICAgICAgcmV0dXJuICJGMTIiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxMzoKLSAgICAgICAgcmV0
dXJuICJGMTMiOworICAgICAgICByZXR1cm4gIkYxMyJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE0
OgotICAgICAgICByZXR1cm4gIkYxNCI7CisgICAgICAgIHJldHVybiAiRjE0Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9GMTU6Ci0gICAgICAgIHJldHVybiAiRjE1IjsKKyAgICAgICAgcmV0dXJuICJG
MTUiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YxNjoKLSAgICAgICAgcmV0dXJuICJGMTYiOworICAg
ICAgICByZXR1cm4gIkYxNiJfczsKICAgICBjYXNlIFdQRV9LRVlfRjE3OgotICAgICAgICByZXR1
cm4gIkYxNyI7CisgICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMTg6
Ci0gICAgICAgIHJldHVybiAiRjE4IjsKKyAgICAgICAgcmV0dXJuICJGMTgiX3M7CiAgICAgY2Fz
ZSBXUEVfS0VZX0YxOToKLSAgICAgICAgcmV0dXJuICJGMTkiOworICAgICAgICByZXR1cm4gIkYx
OSJfczsKICAgICBjYXNlIFdQRV9LRVlfRjIwOgotICAgICAgICByZXR1cm4gIkYyMCI7CisgICAg
ICAgIHJldHVybiAiRjIwIl9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjE6Ci0gICAgICAgIHJldHVy
biAiRjIxIjsKKyAgICAgICAgcmV0dXJuICJGMjEiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0YyMjoK
LSAgICAgICAgcmV0dXJuICJGMjIiOworICAgICAgICByZXR1cm4gIkYyMiJfczsKICAgICBjYXNl
IFdQRV9LRVlfRjIzOgotICAgICAgICByZXR1cm4gIkYyMyI7CisgICAgICAgIHJldHVybiAiRjIz
Il9zOwogICAgIGNhc2UgV1BFX0tFWV9GMjQ6Ci0gICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAg
ICAgcmV0dXJuICJGMjQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0hlbHA6Ci0gICAgICAgIHJldHVy
biAiSGVscCI7CisgICAgICAgIHJldHVybiAiSGVscCJfczsKICAgICBjYXNlIFdQRV9LRVlfSG9t
ZToKLSAgICAgICAgcmV0dXJuICJIb21lIjsKKyAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAg
IGNhc2UgV1BFX0tFWV9JbnNlcnQ6Ci0gICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAg
cmV0dXJuICJJbnNlcnQiX3M7CiAgICAgY2FzZSBXUEVfS0VZX0xlZnQ6Ci0gICAgICAgIHJldHVy
biAiTGVmdCI7CisgICAgICAgIHJldHVybiAiTGVmdCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFn
ZV9Eb3duOgotICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgcmV0dXJuICJQYWdl
RG93biJfczsKICAgICBjYXNlIFdQRV9LRVlfUGFnZV9VcDoKLSAgICAgICAgcmV0dXJuICJQYWdl
VXAiOworICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICBjYXNlIFdQRV9LRVlfUGF1c2U6
Ci0gICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICByZXR1cm4gIlBhdXNlIl9zOwogICAg
IGNhc2UgV1BFX0tFWV8zMjcwX1ByaW50U2NyZWVuOgogICAgIGNhc2UgV1BFX0tFWV9QcmludDoK
LSAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgICAgIHJldHVybiAiUHJpbnRTY3Jl
ZW4iX3M7CiAgICAgY2FzZSBXUEVfS0VZX1JpZ2h0OgotICAgICAgICByZXR1cm4gIlJpZ2h0IjsK
KyAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICBjYXNlIFdQRV9LRVlfU2VsZWN0OgotICAg
ICAgICByZXR1cm4gIlNlbGVjdCI7CisgICAgICAgIHJldHVybiAiU2VsZWN0Il9zOwogICAgIGNh
c2UgV1BFX0tFWV9VcDoKLSAgICAgICAgcmV0dXJuICJVcCI7CisgICAgICAgIHJldHVybiAiVXAi
X3M7CiAgICAgICAgIC8vIFN0YW5kYXJkIHNheXMgdGhhdCBERUwgYmVjb21lcyBVKzAwN0YuCiAg
ICAgY2FzZSBXUEVfS0VZX0RlbGV0ZToKLSAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgICAg
ICByZXR1cm4gIlUrMDA3RiJfczsKICAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAg
ICByZXR1cm4gIlUrMDAwOCI7CisgICAgICAgIHJldHVybiAiVSswMDA4Il9zOwogICAgIGNhc2Ug
V1BFX0tFWV9JU09fTGVmdF9UYWI6CiAgICAgY2FzZSBXUEVfS0VZXzMyNzBfQmFja1RhYjoKICAg
ICBjYXNlIFdQRV9LRVlfVGFiOgotICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgICAgIHJl
dHVybiAiVSswMDA5Il9zOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNv
cmRlclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNjA3ZjM2NmJm
NzJmYzhlYjVjY2MzZDgwNTNlNjAwY2U3MDI5N2JhYi4uNGZhODJiYmRlMTYyNGZmZmMyNzYzODFi
NTg3ZmQ2MjUwZmE0ODJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBHUmVmUHRyPEdzdEVuY29kaW5nQ29udGFpbmVy
UHJvZmlsZT4gTWVkaWFSZWNvcmRlclByaXZhdGVHU3RyZWFtZXI6OmNvbnRhaW5lclBybwogICAg
IGF1dG8gc2VsZWN0ZWRUcmFja3MgPSBNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c2VsZWN0VHJhY2tz
KG1fc3RyZWFtKTsKICAgICBhdXRvIG1pbWVUeXBlID0gdGhpcy0+bWltZVR5cGUoKTsKICAgICBp
ZiAoIW1pbWVUeXBlKQotICAgICAgICBtaW1lVHlwZSA9IHNlbGVjdGVkVHJhY2tzLnZpZGVvVHJh
Y2sgPyAidmlkZW8vbXA0IiA6ICJhdWRpby9tcDQiOworICAgICAgICBtaW1lVHlwZSA9IHNlbGVj
dGVkVHJhY2tzLnZpZGVvVHJhY2sgPyAidmlkZW8vbXA0Il9zIDogImF1ZGlvL21wNCJfczsKIAog
ICAgIEdTVF9ERUJVRygiQ3JlYXRpbmcgdmlkZW8gcHJvZmlsZSBmb3IgbWltZS10eXBlICVzIiwg
bWltZVR5cGUuYXNjaWkoKS5kYXRhKCkpOwogICAgIGF1dG8gY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShtaW1lVHlwZSk7CkBAIC0yMTcsNyArMjE3LDcgQEAgR1JlZlB0cjxHc3RFbmNvZGluZ0Nv
bnRhaW5lclByb2ZpbGU+IE1lZGlhUmVjb3JkZXJQcml2YXRlR1N0cmVhbWVyOjpjb250YWluZXJQ
cm8KICAgICAgICAgaWYgKGNvZGVjcy5jb250YWlucygidm9yYmlzIl9zKSkKICAgICAgICAgICAg
IGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8veC12b3JiaXMiX3M7CiAgICAgICAgIGVsc2UgaWYgKGNv
ZGVjcy5jb250YWlucygib3B1cyJfcykpCi0gICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1
ZGlvL3gtb3B1cyI7CisgICAgICAgICAgICBhdWRpb0NhcHNOYW1lID0gImF1ZGlvL3gtb3B1cyJf
czsKICAgICAgICAgZWxzZSBpZiAoY29kZWNzLmZpbmRJZihbXShhdXRvJiBjb2RlYykgeyByZXR1
cm4gY29kZWMuc3RhcnRzV2l0aCgibXA0YSIpOyB9KSAhPSBub3RGb3VuZCkKICAgICAgICAgICAg
IGF1ZGlvQ2Fwc05hbWUgPSAiYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249NCJfczsKICAgICAgICAg
ZWxzZSBpZiAoY29udGFpbmVyVHlwZS5lbmRzV2l0aCgid2VibSIpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggZTE0M2NkNGY0YTVlNDBm
NmQ1Yjk2NWRjM2NhNTQ0MzcwM2MwMTg1MS4uYjQyMzc5ZjMzYjM1YmYyZTVkNzJiMTI3YzJlMDNi
NjQwYWNmY2I2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9N
SU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCkBAIC04NSwxNCArODUsMTQgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFk
ZXI6OnBhcnNlSGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiB7CiAgICAg
YXV0byBtaW1lSGVhZGVyID0gYWRvcHRSZWYoKm5ldyBNSU1FSGVhZGVyKTsKICAgICBLZXlWYWx1
ZU1hcCBrZXlWYWx1ZVBhaXJzID0gcmV0cmlldmVLZXlWYWx1ZVBhaXJzKGJ1ZmZlcik7Ci0gICAg
S2V5VmFsdWVNYXA6Oml0ZXJhdG9yIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBh
aXJzLmZpbmQoImNvbnRlbnQtdHlwZSIpOworICAgIEtleVZhbHVlTWFwOjppdGVyYXRvciBtaW1l
UGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250ZW50LXR5cGUiX3Mp
OwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZhbHVlUGFpcnMuZW5kKCkp
IHsKICAgICAgICAgU3RyaW5nIGNvbnRlbnRUeXBlLCBjaGFyc2V0LCBtdWx0aXBhcnRUeXBlLCBl
bmRPZlBhcnRCb3VuZGFyeTsKICAgICAgICAgaWYgKGF1dG8gcGFyc2VkQ29udGVudFR5cGUgPSBQ
YXJzZWRDb250ZW50VHlwZTo6Y3JlYXRlKG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3ItPnZhbHVlKSkg
ewogICAgICAgICAgICAgY29udGVudFR5cGUgPSBwYXJzZWRDb250ZW50VHlwZS0+bWltZVR5cGUo
KTsKICAgICAgICAgICAgIGNoYXJzZXQgPSBwYXJzZWRDb250ZW50VHlwZS0+Y2hhcnNldCgpLnN0
cmlwV2hpdGVTcGFjZSgpOwotICAgICAgICAgICAgbXVsdGlwYXJ0VHlwZSA9IHBhcnNlZENvbnRl
bnRUeXBlLT5wYXJhbWV0ZXJWYWx1ZUZvck5hbWUoInR5cGUiKTsKLSAgICAgICAgICAgIGVuZE9m
UGFydEJvdW5kYXJ5ID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgi
Ym91bmRhcnkiKTsKKyAgICAgICAgICAgIG11bHRpcGFydFR5cGUgPSBwYXJzZWRDb250ZW50VHlw
ZS0+cGFyYW1ldGVyVmFsdWVGb3JOYW1lKCJ0eXBlIl9zKTsKKyAgICAgICAgICAgIGVuZE9mUGFy
dEJvdW5kYXJ5ID0gcGFyc2VkQ29udGVudFR5cGUtPnBhcmFtZXRlclZhbHVlRm9yTmFtZSgiYm91
bmRhcnkiX3MpOwogICAgICAgICB9CiAgICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudFR5cGUg
PSBjb250ZW50VHlwZTsKICAgICAgICAgaWYgKCFtaW1lSGVhZGVyLT5pc011bHRpcGFydCgpKQpA
QCAtMTA5LDExICsxMDksMTEgQEAgUmVmUHRyPE1JTUVIZWFkZXI+IE1JTUVIZWFkZXI6OnBhcnNl
SGVhZGVyKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyJiBidWZmZXIpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yID0ga2V5VmFsdWVQYWlycy5maW5kKCJjb250
ZW50LXRyYW5zZmVyLWVuY29kaW5nIik7CisgICAgbWltZVBhcmFtZXRlcnNJdGVyYXRvciA9IGtl
eVZhbHVlUGFpcnMuZmluZCgiY29udGVudC10cmFuc2Zlci1lbmNvZGluZyJfcyk7CiAgICAgaWYg
KG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgIT0ga2V5VmFsdWVQYWlycy5lbmQoKSkKICAgICAgICAg
bWltZUhlYWRlci0+bV9jb250ZW50VHJhbnNmZXJFbmNvZGluZyA9IHBhcnNlQ29udGVudFRyYW5z
ZmVyRW5jb2RpbmcobWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWUpOwogCi0gICAgbWltZVBh
cmFtZXRlcnNJdGVyYXRvciA9IGtleVZhbHVlUGFpcnMuZmluZCgiY29udGVudC1sb2NhdGlvbiIp
OworICAgIG1pbWVQYXJhbWV0ZXJzSXRlcmF0b3IgPSBrZXlWYWx1ZVBhaXJzLmZpbmQoImNvbnRl
bnQtbG9jYXRpb24iX3MpOwogICAgIGlmIChtaW1lUGFyYW1ldGVyc0l0ZXJhdG9yICE9IGtleVZh
bHVlUGFpcnMuZW5kKCkpCiAgICAgICAgIG1pbWVIZWFkZXItPm1fY29udGVudExvY2F0aW9uID0g
bWltZVBhcmFtZXRlcnNJdGVyYXRvci0+dmFsdWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCA1MTY5MDQ1
YzcwNWYwODk4ZTgzMTc0ZTMxNjZlM2E2MGVkYTk0YjgzLi4yZGMyNzE2NjNhMzExZmQ0YjFlNjgy
ZjkwOGNlNjM2NGQ2ZmVhNjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xMDIsMTUgKzEwMiwxNSBAQCB2
b2lkIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtTGF6eUluaXQoKQogCiAgICAgQ0ZTdHJpbmdSZWYg
ZG9tYWluID0gQ0ZFcnJvckdldERvbWFpbihtX3BsYXRmb3JtRXJyb3IuZ2V0KCkpOwogICAgIGlm
IChkb21haW4gPT0ga0NGRXJyb3JEb21haW5NYWNoIHx8IGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFp
bkNvY29hKQotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9tYWlu
ID09IGtDRkVycm9yRG9tYWluQ0ZOZXR3b3JrKQotICAgICAgICBtX2RvbWFpbiA9ICJDRlVSTEVy
cm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiQ0ZVUkxFcnJvckRvbWFpbiJfczsKICAg
ICBlbHNlIGlmIChkb21haW4gPT0ga0NGRXJyb3JEb21haW5QT1NJWCkKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgIGVsc2UgaWYgKGRvbWFpbiA9PSBrQ0ZFcnJvckRvbWFpbk9TU3Rh
dHVzKQotICAgICAgICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iOworICAgICAg
ICBtX2RvbWFpbiA9ICJOU09TU3RhdHVzRXJyb3JEb21haW4iX3M7CiAgICAgZWxzZSBpZiAoZG9t
YWluID09IGtDRkVycm9yRG9tYWluV2luU29jaykKLSAgICAgICAgbV9kb21haW4gPSAia0NGRXJy
b3JEb21haW5XaW5Tb2NrIjsKKyAgICAgICAgbV9kb21haW4gPSAia0NGRXJyb3JEb21haW5XaW5T
b2NrIl9zOwogICAgIGVsc2UKICAgICAgICAgbV9kb21haW4gPSBkb21haW47CiAKQEAgLTE5MCwx
MyArMTkwLDEzIEBAIFJlc291cmNlRXJyb3I6OlJlc291cmNlRXJyb3IoQ0ZTdHJlYW1FcnJvciBl
cnJvcikKIAogICAgIHN3aXRjaChlcnJvci5kb21haW4pIHsKICAgICBjYXNlIGtDRlN0cmVhbUVy
cm9yRG9tYWluQ3VzdG9tOgotICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4i
OworICAgICAgICBtX2RvbWFpbiA9Ik5TQ3VzdG9tRXJyb3JEb21haW4iX3M7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2Uga0NGU3RyZWFtRXJyb3JEb21haW5QT1NJWDoKLSAgICAgICAgbV9kb21h
aW4gPSAiTlNQT1NJWEVycm9yRG9tYWluIjsKKyAgICAgICAgbV9kb21haW4gPSAiTlNQT1NJWEVy
cm9yRG9tYWluIl9zOwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDRlN0cmVhbUVycm9yRG9t
YWluTWFjT1NTdGF0dXM6Ci0gICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFp
biI7CisgICAgICAgIG1fZG9tYWluID0gIk5TT1NTdGF0dXNFcnJvckRvbWFpbiJfczsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXF1ZXN0Q29jb2EubW0KaW5kZXggNDU5YmYy
YTQyZjllMjAwZTkzNWMyMTYzODk0MzY5ZTRmNDUxYmQwNS4uNmNmMDQ5MTgxNWVhZWU5MDBjM2Q0
Y2U5OGFiZDZjOTEwMmE4MTNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9SZXNvdXJjZVJlcXVlc3RDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVxdWVzdENvY29hLm1tCkBAIC0yMzUs
OSArMjM1LDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCkKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAobV91cmwuaXNMb2NhbEZpbGUoKSkgewot
ICAgICAgICBhdXRvIGZzUmVwRmlsZSA9IEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihtX3VybC5maWxlU3lzdGVtUGF0aCgpKTsKLSAgICAgICAgaWYgKCFmc1JlcEZpbGUuaXNO
dWxsKCkpIHsKLSAgICAgICAgICAgIGF1dG8gZmlsZURldmljZSA9IEZpbGVTeXN0ZW06OmdldEZp
bGVEZXZpY2VJZChmc1JlcEZpbGUpOworICAgICAgICBhdXRvIGZpbGVQYXRoID0gbV91cmwuZmls
ZVN5c3RlbVBhdGgoKTsKKyAgICAgICAgaWYgKCFmaWxlUGF0aC5pc051bGwoKSkgeworICAgICAg
ICAgICAgYXV0byBmaWxlRGV2aWNlID0gRmlsZVN5c3RlbTo6Z2V0RmlsZURldmljZUlkKGZpbGVQ
YXRoKTsKICAgICAgICAgICAgIGlmIChmaWxlRGV2aWNlICYmIGZpbGVEZXZpY2UudmFsdWUoKSkK
ICAgICAgICAgICAgICAgICBbbnNSZXF1ZXN0IF9zZXRQcm9wZXJ0eTpbTlNOdW1iZXIgbnVtYmVy
V2l0aEludGVnZXI6ZmlsZURldmljZS52YWx1ZSgpXSBmb3JLZXk6QCJOU1VSTFJlcXVlc3RGaWxl
UHJvdG9jb2xFeHBlY3RlZERldmljZSJdOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKaW5kZXggZTBlZWY2ODgwZjJiNjdlMDllMjMzZGVjNzQ1YmQwODM0ODc5YWFjZC4uMDcxYmIx
YTQ3YmUwNzgwNDYwNDIwNWZlMjIwZDhhNzNkM2RlNjljOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DZXJ0aWZpY2F0ZUluZm9DdXJs
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBDZXJ0aWZpY2F0ZUluZm8gQ2VydGlmaWNhdGVJbmZvOjpp
c29sYXRlZENvcHkoKSBjb25zdAogCiBTdHJpbmcgQ2VydGlmaWNhdGVJbmZvOjp2ZXJpZmljYXRp
b25FcnJvckRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gWDUwOV92ZXJpZnlfY2Vy
dF9lcnJvcl9zdHJpbmcobV92ZXJpZmljYXRpb25FcnJvcik7CisgICAgcmV0dXJuIFN0cmluZyB7
IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nKG1fdmVyaWZpY2F0aW9uRXJyb3IpIH07CiB9
CiAKIENlcnRpZmljYXRlSW5mbzo6Q2VydGlmaWNhdGUgQ2VydGlmaWNhdGVJbmZvOjptYWtlQ2Vy
dGlmaWNhdGUoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCmluZGV4
IDYxMzY1MzFiNWIxYzRjN2ZhYmI0NDkxMDMwMzU2ZTVmNDZmNzFjNWMuLjZiMTZmYzM0ZGU3YTE5
YTBkZGRlMGU0NTBkOTA4NTRlMzk4NDA4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckRCLmNwcApAQCAtMzgyLDcgKzM4Miw3IEBA
IHN0ZDo6b3B0aW9uYWw8VmVjdG9yPENvb2tpZT4+IENvb2tpZUphckRCOjpzZWFyY2hDb29raWVz
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwKIAogICAgIFN0cmluZyByZXF1ZXN0UGF0aCA9IHJlcXVl
c3RVcmwucGF0aCgpLnRvU3RyaW5nKCk7CiAgICAgaWYgKHJlcXVlc3RQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgcmVxdWVzdFBhdGggPSAiLyI7CisgICAgICAgIHJlcXVlc3RQYXRoID0gIi8iX3M7
CiAKICAgICBSZWdpc3RyYWJsZURvbWFpbiByZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3RVcmwg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tp
ZVV0aWwuY3BwCmluZGV4IDZkMzQ2OGU0MjIyNWYyZWZjNGQwMTlhMDlmNDQ4YzQwNDliYjZkMDMu
LjA0ZTY0Y2QyYzdhOTBkOWNlM2RjMjlmOGIyZDE2NzgyNDBmYTAzNGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKQEAgLTE4
NywxMSArMTg3LDExIEBAIFN0cmluZyBkZWZhdWx0UGF0aEZvclVSTChjb25zdCBVUkwmIHVybCkK
IAogICAgIFN0cmluZyBwYXRoID0gdXJsLnBhdGgoKS50b1N0cmluZygpOwogICAgIGlmIChwYXRo
LmlzRW1wdHkoKSB8fCAhcGF0aC5zdGFydHNXaXRoKCcvJykpCi0gICAgICAgIHJldHVybiAiLyI7
CisgICAgICAgIHJldHVybiAiLyJfczsKIAogICAgIGF1dG8gbGFzdFNsYXNoUG9zaXRpb24gPSBw
YXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKLSAgICAg
ICAgcmV0dXJuICIvIjsKKyAgICAgICAgcmV0dXJuICIvIl9zOwogCiAgICAgcmV0dXJuIHBhdGgu
c3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlRW50cnkuY3BwCmluZGV4IDdi
NDY4NTVhMDUxNTc0N2Y0ZGRmYmRlNWM5MDlhYWI5ODcwNjAzZjguLmE3YTE1MjdjODZhYTNjNWYw
ZDJlNWJhMGQxZGIwMzA0NTJhZjVmNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZUVudHJ5LmNwcApAQCAtNjEsMTAgKzYxLDEw
IEBAIEN1cmxDYWNoZUVudHJ5OjpDdXJsQ2FjaGVFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgUmVz
b3VyY2VIYW5kbGUqIGpvYiwgY29uc3QgU3RyCiAgICAgZ2VuZXJhdGVCYXNlRmlsZW5hbWUodXJs
LmxhdGluMSgpKTsKIAogICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKG1fYmFzZW5hbWUpOwot
ICAgIG1faGVhZGVyRmlsZW5hbWUuYXBwZW5kKCIuaGVhZGVyIik7CisgICAgbV9oZWFkZXJGaWxl
bmFtZS5hcHBlbmQoIi5oZWFkZXIiX3MpOwogCiAgICAgbV9jb250ZW50RmlsZW5hbWUuYXBwZW5k
KG1fYmFzZW5hbWUpOwotICAgIG1fY29udGVudEZpbGVuYW1lLmFwcGVuZCgiLmNvbnRlbnQiKTsK
KyAgICBtX2NvbnRlbnRGaWxlbmFtZS5hcHBlbmQoIi5jb250ZW50Il9zKTsKIH0KIAogQ3VybENh
Y2hlRW50cnk6On5DdXJsQ2FjaGVFbnRyeSgpCkBAIC0xMzksOSArMTM5LDkgQEAgYm9vbCBDdXJs
Q2FjaGVFbnRyeTo6c2F2ZVJlc3BvbnNlSGVhZGVycyhjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXNwb25z
ZS5odHRwSGVhZGVyRmllbGRzKCkuZW5kKCk7CiAgICAgd2hpbGUgKGl0ICE9IGVuZCkgewogICAg
ICAgICBTdHJpbmcgaGVhZGVyRmllbGQgPSBpdC0+a2V5OwotICAgICAgICBoZWFkZXJGaWVsZC5h
cHBlbmQoIjogIik7CisgICAgICAgIGhlYWRlckZpZWxkLmFwcGVuZCgiOiAiX3MpOwogICAgICAg
ICBoZWFkZXJGaWVsZC5hcHBlbmQoaXQtPnZhbHVlKTsKLSAgICAgICAgaGVhZGVyRmllbGQuYXBw
ZW5kKCJcbiIpOworICAgICAgICBoZWFkZXJGaWVsZC5hcHBlbmQoIlxuIl9zKTsKICAgICAgICAg
Q1N0cmluZyBoZWFkZXJGaWVsZExhdGluMSA9IGhlYWRlckZpZWxkLmxhdGluMSgpOwogICAgICAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShoZWFkZXJGaWxlLCBoZWFkZXJGaWVsZExhdGluMS5k
YXRhKCksIGhlYWRlckZpZWxkTGF0aW4xLmxlbmd0aCgpKTsKICAgICAgICAgbV9jYWNoZWRSZXNw
b25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgaXQtPnZhbHVlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ2FjaGVNYW5hZ2Vy
LmNwcAppbmRleCAzYmQyY2M3NDI4NmVjNDY3ODY0MDI0OGM1ZTFjZmVjYzVhMDI2N2JkLi43MDJj
NWIzMWEwMWVlMjQ2YzdjNzVkN2I1NTU4NGFlYWQ2ZmIwNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENhY2hlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDYWNoZU1hbmFnZXIuY3Bw
CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgQ3VybENhY2hlTWFuYWdlcjo6c2V0Q2FjaGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJiBkaXJlY3RvcnkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2Nh
Y2hlRGlyLmFwcGVuZCgiLyIpOworICAgIG1fY2FjaGVEaXIuYXBwZW5kKCIvIl9zKTsKIAogICAg
IG1fZGlzYWJsZWQgPSBmYWxzZTsKICAgICBsb2FkSW5kZXgoKTsKQEAgLTEzOCw4ICsxMzgsNyBA
QCB2b2lkIEN1cmxDYWNoZU1hbmFnZXI6OnNhdmVJbmRleCgpCiAgICAgaWYgKG1fZGlzYWJsZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBpbmRleEZpbGVQYXRoKG1fY2FjaGVEaXIp
OwotICAgIGluZGV4RmlsZVBhdGguYXBwZW5kKCJpbmRleC5kYXQiKTsKKyAgICBhdXRvIGluZGV4
RmlsZVBhdGggPSBtYWtlU3RyaW5nKG1fY2FjaGVEaXIsICJpbmRleC5kYXQiX3MpOwogCiAgICAg
RmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShpbmRleEZpbGVQYXRoKTsKICAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW5kZXhGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoaW5kZXhG
aWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3
MjhjYjg4YmZiMDU1MDI5YWFmNmY1OTM0NzE1MzljZTc0NzkyNGNkLi4zZTVkNmYxYzkwZjYxOGVm
ZDFlNWNhZDEwZDRhMDZhZWU1OTk2M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsQ29udGV4dC5jcHAKQEAgLTQyOSwyNiArNDI5LDIzIEBA
IHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKIAogdm9pZCBDdXJsSGFuZGxlOjphcHBlbmRSZXF1ZXN0SGVhZGVyKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTdHJpbmcgaGVhZGVy
KG5hbWUpOworICAgIFN0cmluZyBoZWFkZXI7CiAKICAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIEluc2VydCB0aGUgOyB0byB0ZWxsIGN1cmwgdGhhdCB0aGlzIGhlYWRlciBo
YXMgYW4gZW1wdHkgdmFsdWUuCi0gICAgICAgIGhlYWRlci5hcHBlbmQoIjsiKTsKKyAgICAgICAg
aGVhZGVyID0gbWFrZVN0cmluZyhuYW1lLCAnOycpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGhl
YWRlci5hcHBlbmQoIjogIik7Ci0gICAgICAgIGhlYWRlci5hcHBlbmQodmFsdWUpOworICAgICAg
ICBoZWFkZXIgPSBtYWtlU3RyaW5nKG5hbWUsICI6ICIsIHZhbHVlKTsKICAgICB9CiAKLSAgICBh
cHBlbmRSZXF1ZXN0SGVhZGVyKGhlYWRlcik7CisgICAgYXBwZW5kUmVxdWVzdEhlYWRlcihXVEZN
b3ZlKGhlYWRlcikpOwogfQogCiB2b2lkIEN1cmxIYW5kbGU6OnJlbW92ZVJlcXVlc3RIZWFkZXIo
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIC8vIEFkZCBhIGhlYWRlciB3aXRoIG5vIGNvbnRl
bnQsIHRoZSBpbnRlcm5hbGx5IHVzZWQgaGVhZGVyIHdpbGwgZ2V0IGRpc2FibGVkLiAKLSAgICBT
dHJpbmcgaGVhZGVyKG5hbWUpOwotICAgIGhlYWRlci5hcHBlbmQoIjoiKTsKLQotICAgIGFwcGVu
ZFJlcXVlc3RIZWFkZXIoaGVhZGVyKTsKKyAgICBhdXRvIGhlYWRlciA9IG1ha2VTdHJpbmcobmFt
ZSwgJzonKTsKKyAgICBhcHBlbmRSZXF1ZXN0SGVhZGVyKFdURk1vdmUoaGVhZGVyKSk7CiB9CiAK
IHZvaWQgQ3VybEhhbmRsZTo6YXBwZW5kUmVxdWVzdEhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
RG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHAKaW5kZXggYWFmMGM4ZDk0MDcwNTVkNjhhMDU1ZmIzNTA3OTY3ZGU0YzAwODZl
ZC4uYjA5MjU2YjE5ODNlODZiMWZmZTU3Y2RhMjhmNzRjNmIzZjVhMzE5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAK
QEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEN1cmxEb3dubG9hZDo6d2lsbFNlbmRSZXF1ZXN0KCkK
ICAgICBuZXdSZXF1ZXN0LnNldFVSTChuZXdVUkwpOwogCiAgICAgaWYgKHNob3VsZFJlZGlyZWN0
QXNHRVQobmV3UmVxdWVzdCwgY3Jvc3NPcmlnaW4pKSB7Ci0gICAgICAgIG5ld1JlcXVlc3Quc2V0
SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgIG5ld1JlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VU
Il9zKTsKICAgICAgICAgbmV3UmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAg
bmV3UmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IDJi
YWY5NDJkYmM5NjNkM2ZmYjNkY2IxNWZjMWIzYmVkZDBlZWVlYjQuLjdlYjA4NzBkNzk3NGM1YmIx
MGI1YzQ2MTM4OWM1OGZjYWRlMzgxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtNTU5LDcgKzU1OSw3IEBAIHZv
aWQgQ3VybFJlcXVlc3Q6OnNldHVwUFVUKCkKICAgICBtX2N1cmxIYW5kbGUtPmVuYWJsZUh0dHBQ
dXRSZXF1ZXN0KCk7CiAKICAgICAvLyBEaXNhYmxlIHRoZSBFeHBlY3Q6IDEwMCBjb250aW51ZSBo
ZWFkZXIKLSAgICBtX2N1cmxIYW5kbGUtPnJlbW92ZVJlcXVlc3RIZWFkZXIoIkV4cGVjdCIpOwor
ICAgIG1fY3VybEhhbmRsZS0+cmVtb3ZlUmVxdWVzdEhlYWRlcigiRXhwZWN0Il9zKTsKIAogICAg
IGF1dG8gZWxlbWVudFNpemUgPSBtX2Zvcm1EYXRhU3RyZWFtLmVsZW1lbnRTaXplKCk7CiAgICAg
aWYgKCFlbGVtZW50U2l6ZSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpz
ZXR1cFNlbmREYXRhKGJvb2wgZm9yUHV0TWV0aG9kKQogewogICAgIC8vIGN1cmwgZ3Vlc3NlcyB0
aGF0IHdlIHdhbnQgY2h1bmtlZCBlbmNvZGluZyBhcyBsb25nIGFzIHdlIHNwZWNpZnkgdGhlIGhl
YWRlcgogICAgIGlmIChtX2Zvcm1EYXRhU3RyZWFtLnNob3VsZFVzZUNodW5rVHJhbnNmZXIoKSkK
LSAgICAgICAgbV9jdXJsSGFuZGxlLT5hcHBlbmRSZXF1ZXN0SGVhZGVyKCJUcmFuc2Zlci1FbmNv
ZGluZzogY2h1bmtlZCIpOworICAgICAgICBtX2N1cmxIYW5kbGUtPmFwcGVuZFJlcXVlc3RIZWFk
ZXIoIlRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkIl9zKTsKICAgICBlbHNlIHsKICAgICAgICAg
aWYgKGZvclB1dE1ldGhvZCkKICAgICAgICAgICAgIG1fY3VybEhhbmRsZS0+c2V0SW5GaWxlU2l6
ZUxhcmdlKHN0YXRpY19jYXN0PGN1cmxfb2ZmX3Q+KG1fZm9ybURhdGFTdHJlYW0udG90YWxTaXpl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCmluZGV4IDM4OTdlMDFj
NmQwNzY2ZGFjZjNlMTliMjM3MzM2ZjViNTVjZTUyNjkuLmIzYWI4ZDFjYjYyZDNkZDA5ZjBmYTA4
ODhhMjE5MDQ2YmRiMWUwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cApAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGU6OmN1
cmxEaWRSZWNlaXZlUmVzcG9uc2UoQ3VybFJlcXVlc3QmIHJlcXVlc3QsIEN1CiAgICAgICAgIGlm
IChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVy
bC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAgICAgICAgIGlmIChkKCktPm1fYWRkZWRD
YWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZSgyMDApOwotICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0
YXR1c1RleHQoIk9LIik7CisgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVz
VGV4dCgiT0siX3MpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IGU3YjhlYmNlMDczNTM2YzE0OGVhZmFjYTlk
NzUxZWM4ZmIyNDQyMzIuLjRmODlkOTczZWM5MTFhNWQ5MDlkZGQ3ZTJlYmE5N2E1ZDRmYmNiMGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAKQEAgLTQzLDEzICs0MywxMyBA
QCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRDb29raWVKYXJQYXRoKCkKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVmYXVsdEZpbGVOYW1lID0gImNvb2tpZS5qYXIuZGIiOwogICAgIGNoYXIqIGNvb2tp
ZUphclBhdGggPSBnZXRlbnYoIkNVUkxfQ09PS0lFX0pBUl9QQVRIIik7CiAgICAgaWYgKGNvb2tp
ZUphclBhdGgpCi0gICAgICAgIHJldHVybiBjb29raWVKYXJQYXRoOworICAgICAgICByZXR1cm4g
U3RyaW5nOjpmcm9tVVRGOChjb29raWVKYXJQYXRoKTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAg
ICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KEZpbGVTeXN0ZW06
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLCBkZWZhdWx0RmlsZU5hbWUpOwog
I2Vsc2UKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MjQxNwotICAgIHJldHVybiBkZWZhdWx0RmlsZU5hbWU7CisgICAgcmV0dXJuIFN0cmlu
ZyB7IGRlZmF1bHRGaWxlTmFtZSB9OwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9PcGVuU1NMSGVscGVyLmNwcAppbmRleCAzNjE1
MDlkNzRkYzk1MTJmNTFmNDFiOTJkNjk3YWJjODFkOTViYjVlLi5kMzliNjViNDQwZThmMmJiMTk1
NGU2YzYwYTNlODkyM2IzZjQ2YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvT3BlblNTTEhlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL09wZW5TU0xIZWxwZXIuY3BwCkBAIC0zNDAsMTIgKzM0MCwxMiBA
QCBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNlcnRpZmljYXRlU3VtbWFyeT4gY3JlYXRlU3VtbWFy
eUluZm8oY29uc3QgVmVjdG9yPHVpbnQ4XwogCiBTdHJpbmcgdGxzVmVyc2lvbihjb25zdCBTU0wq
IHNzbCkKIHsKLSAgICByZXR1cm4gU1NMX2dldF92ZXJzaW9uKHNzbCk7CisgICAgcmV0dXJuIFN0
cmluZyB7IFNTTF9nZXRfdmVyc2lvbihzc2wpIH07CiB9CiAKIFN0cmluZyB0bHNDaXBoZXJOYW1l
KGNvbnN0IFNTTCogc3NsKQogewotICAgIHJldHVybiBTU0xfQ0lQSEVSX2dldF9uYW1lKFNTTF9n
ZXRfY3VycmVudF9jaXBoZXIoc3NsKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IFNTTF9DSVBIRVJf
Z2V0X25hbWUoU1NMX2dldF9jdXJyZW50X2NpcGhlcihzc2wpKSB9OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4Q3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUHVibGljU3VmZml4
Q3VybC5jcHAKaW5kZXggYjc5YTQ3MzE1ZWM4MDI0Mjg5YmY0YTY1ZjkwZDJlMzhhYzFkNDc3ZS4u
ZjliMDBlMTg0NTA5YmY3YjhjNWMwYWMzMWRlMTJjMzJiMmU1MmYzMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1B1YmxpY1N1ZmZpeEN1cmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9QdWJsaWNTdWZmaXhDdXJs
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW5JbnRlcm5hbChjb25zdCBwc2xfY3R4X3QqIHBzbCwgY29uc3QgYwogewogICAgIC8v
IHBzbF9yZWdpc3RlcmFibGVfZG9tYWluIHJldHVybnMgYSBwb2ludGVyIHRvIGRvbWFpbidzIGRh
dGEgb3IgbnVsbCBpZiB0aGVyZSBpcyBubyBwcml2YXRlIGRvbWFpbgogICAgIGlmIChjb25zdCBj
aGFyKiB0b3BQcml2YXRlRG9tYWluID0gcHNsX3JlZ2lzdHJhYmxlX2RvbWFpbihwc2wsIGRvbWFp
bikpCi0gICAgICAgIHJldHVybiB0b3BQcml2YXRlRG9tYWluOworICAgICAgICByZXR1cm4gU3Ry
aW5nIHsgdG9wUHJpdmF0ZURvbWFpbiB9OwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJy
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9y
LmgKaW5kZXggZDFkN2I2NmVhYTc4YzEwMzFmYmFiNGI3NDFjZjgzMWMyZmMwYjEzYi4uMTQ1ZmY2
OGQ1ODg4ZmE0YTQ2NGM2N2IwYjRhZjU2NDY1YjFjNGZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC01OCw3ICs1
OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBj
dXJsRXJyb3JEb21haW47CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJsRXJyb3JEb21haW47
CiAKICAgICB1bnNpZ25lZCBtX3NzbEVycm9ycyB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3JDdXJsLmNw
cAppbmRleCA5ZTNlMTU2MWI1MjkxMDAyZWVkZTg5YWVjN2Q0YmNiZGJkMjUyYzIzLi45OWQwNmEy
N2EwMmUwMTM0MzEyNmYzODQ0MjBiYjdjYjRmNzJkNjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvckN1cmwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yQ3VybC5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jb25zdCBjaGFyKiBj
b25zdCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9yRG9tYWluIjsK
K0FTQ0lJTGl0ZXJhbCBSZXNvdXJjZUVycm9yOjpjdXJsRXJyb3JEb21haW4gPSAiQ3VybEVycm9y
RG9tYWluIl9zOwogCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6Omh0dHBFcnJvcihpbnQg
ZXJyb3JDb2RlLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIFR5cGUgdHlwZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKaW5kZXggOWVkYmQyZTgxYTdmMWU0NTY3NWQwMjE5NTNjZWY1OTk1YzY0NjU5
Ny4uZGVhMGRhYzRiZDAwMmRlODlkYzgyMDNiODA0Yzc2MmE1YmYxNDdiNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFu
ZGxlQ3VybC5jcHAKQEAgLTQ2Miw3ICs0NjIsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxs
U2VuZFJlcXVlc3QoKQogICAgIG5ld1JlcXVlc3Quc2V0VVJMKG5ld1VSTCk7CiAKICAgICBpZiAo
c2hvdWxkUmVkaXJlY3RBc0dFVChuZXdSZXF1ZXN0LCBjcm9zc09yaWdpbikpIHsKLSAgICAgICAg
bmV3UmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgbmV3UmVxdWVzdC5zZXRI
VFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBCb2R5KG51bGxw
dHIpOwogICAgICAgICBuZXdSZXF1ZXN0LmNsZWFySFRUUENvbnRlbnRUeXBlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVzcG9uc2VDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZVJlc3BvbnNlQ3VybC5jcHAKaW5kZXggM2QxYmQxMjQ5YjdkNzZlZWVhNDZjYzU4NWU4
ZTNjOGU5ZjBkZThhZS4uNWJmOGQ2ODAxMWMyODMwNDc4YzA3NjMxODNkZDY4OTIzMjc1ZmQ2ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
UmVzcG9uc2VDdXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VSZXNwb25zZUN1cmwuY3BwCkBAIC04OSwxMyArODksMTMgQEAgUmVzb3VyY2VS
ZXNwb25zZTo6UmVzb3VyY2VSZXNwb25zZShjb25zdCBDdXJsUmVzcG9uc2UmIHJlc3BvbnNlKQog
CiAgICAgc3dpdGNoIChyZXNwb25zZS5odHRwVmVyc2lvbikgewogICAgIGNhc2UgQ1VSTF9IVFRQ
X1ZFUlNJT05fMV8wOgotICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjAiKTsKKyAgICAg
ICAgc2V0SFRUUFZlcnNpb24oIkhUVFAvMS4wIl9zKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE6Ci0gICAgICAgIHNldEhUVFBWZXJzaW9uKCJIVFRQLzEu
MSIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8xLjEiX3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIENVUkxfSFRUUF9WRVJTSU9OXzJfMDoKLSAgICAgICAgc2V0SFRUUFZlcnNp
b24oIkhUVFAvMiIpOworICAgICAgICBzZXRIVFRQVmVyc2lvbigiSFRUUC8yIl9zKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDVVJMX0hUVFBfVkVSU0lPTl9OT05FOgogICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9MZWdhY3lQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lv
cy9MZWdhY3lQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggMGZlNjVhMjllNjM2MTZkYjQyZjdj
OWVhMWQxODUyMjFjMjAwNDBjMy4uYzIwZWM4ZTcyMTFjZTFlZmU2N2I1NDFiYzgxYjk2NTVjNmU1
N2QxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvTGVn
YWN5UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvaW9zL0xlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNDAsNyArNDAsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbCgpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1Bhc3N3b3Jk
RW50cnkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZXF1
ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcigiIik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoZW1wdHlTdHJpbmcoKSk7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRl
eCBmYWI1NzQyMzNmZTAwZjRiMGJmMjJlMGJhZWMwOWRiMTE2YTRkM2NlLi5hOGQyMzcwNjQ4ZDI0
Njg4MTJjZTViNmY5NTM5YWFiMDk2MmU4NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwCkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
Omhhc0Nvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbiwgQ29tcGxldGkKICAg
ICBHVW5pcXVlUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMo
Y29va2llU3RvcmFnZSgpKSk7CiAgICAgZm9yIChhdXRvKiBpdGVtID0gY29va2llcy5nZXQoKTsg
aXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBHVW5pcXVlUHRyPFNv
dXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSkpOwot
ICAgICAgICBpZiAoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZyb21Ib3N0KHNv
dXBfY29va2llX2dldF9kb21haW4oY29va2llLmdldCgpKSkgPT0gZG9tYWluKSB7CisgICAgICAg
IGlmIChSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVja2VkQ3JlYXRlRnJvbUhvc3QoU3RyaW5nIHsg
c291cF9jb29raWVfZ2V0X2RvbWFpbihjb29raWUuZ2V0KCkpIH0pID09IGRvbWFpbikgewogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUVycm9yU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCmluZGV4IDJjZThhMDNmZGYwMjJkZTNmMmZjZTlk
ZjNhOGFhOTU1NmY4YzAwYjcuLjM0YTU3ZTVjMmMyZWI2OTg5N2E1NzNhZTQwMzJiMjMxYjk5OTNj
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUVycm9yU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IoY29u
c3QgVVJMJiBmYWlsaW5nVVJMLCBpbnQgc3RhdHVzQ29kZSwgY29uc3QgU3RyaW5nJiByZWFzb25Q
aHJhc2UpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09V
UF9IVFRQX0VSUk9SX0RPTUFJTiksIHN0YXR1c0NvZGUsIGZhaWxpbmdVUkwsIHJlYXNvblBocmFz
ZSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmco
U09VUF9IVFRQX0VSUk9SX0RPTUFJTikgfSwgc3RhdHVzQ29kZSwgZmFpbGluZ1VSTCwgcmVhc29u
UGhyYXNlKTsKIH0KIAogUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjpodHRwRXJyb3IoU291
cE1lc3NhZ2UqIG1lc3NhZ2UsIEdFcnJvciogZXJyb3IpCkBAIC02MSwyMiArNjEsMjIgQEAgUmVz
b3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjphdXRoZW50aWNhdGlvbkVycm9yKFNvdXBNZXNzYWdl
KiBtZXNzYWdlKQogewogICAgIEFTU0VSVChtZXNzYWdlKTsKICNpZiBVU0UoU09VUDIpCi0gICAg
cmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9IVFRQX0VSUk9SX0RP
TUFJTiksIG1lc3NhZ2UtPnN0YXR1c19jb2RlLAorICAgIHJldHVybiBSZXNvdXJjZUVycm9yKFN0
cmluZyB7IGdfcXVhcmtfdG9fc3RyaW5nKFNPVVBfSFRUUF9FUlJPUl9ET01BSU4pIH0sIG1lc3Nh
Z2UtPnN0YXR1c19jb2RlLAogICAgICAgICBzb3VwVVJJVG9VUkwoc291cF9tZXNzYWdlX2dldF91
cmkobWVzc2FnZSkpLCBTdHJpbmc6OmZyb21VVEY4KG1lc3NhZ2UtPnJlYXNvbl9waHJhc2UpKTsK
ICNlbHNlCi0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZ19xdWFya190b19zdHJpbmcoU09VUF9T
RVNTSU9OX0VSUk9SKSwgc291cF9tZXNzYWdlX2dldF9zdGF0dXMobWVzc2FnZSksCisgICAgcmV0
dXJuIFJlc291cmNlRXJyb3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoU09VUF9TRVNTSU9O
X0VSUk9SKSB9LCBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhtZXNzYWdlKSwKICAgICAgICAgc291
cF9tZXNzYWdlX2dldF91cmkobWVzc2FnZSksIFN0cmluZzo6ZnJvbVVURjgoc291cF9tZXNzYWdl
X2dldF9yZWFzb25fcGhyYXNlKG1lc3NhZ2UpKSk7CiAjZW5kaWYKIH0KIAogUmVzb3VyY2VFcnJv
ciBSZXNvdXJjZUVycm9yOjpnZW5lcmljR0Vycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgR0Vy
cm9yKiBlcnJvcikKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmlu
ZyhlcnJvci0+ZG9tYWluKSwgZXJyb3ItPmNvZGUsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVU
RjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBn
X3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgZmFpbGluZ1VS
TCwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpOwogfQogCiBSZXNvdXJjZUVycm9y
IFJlc291cmNlRXJyb3I6OnRsc0Vycm9yKGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgdW5zaWduZWQg
dGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQogewotICAgIFJlc291cmNl
RXJyb3IgcmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhHX1RMU19FUlJPUiksIEdfVExT
X0VSUk9SX0JBRF9DRVJUSUZJQ0FURSwgZmFpbGluZ1VSTCwgdW5hY2NlcHRhYmxlVExTQ2VydGlm
aWNhdGUoKSk7CisgICAgUmVzb3VyY2VFcnJvciByZXNvdXJjZUVycm9yKFN0cmluZyB7IGdfcXVh
cmtfdG9fc3RyaW5nKEdfVExTX0VSUk9SKSB9LCBHX1RMU19FUlJPUl9CQURfQ0VSVElGSUNBVEUs
IGZhaWxpbmdVUkwsIHVuYWNjZXB0YWJsZVRMU0NlcnRpZmljYXRlKCkpOwogICAgIHJlc291cmNl
RXJyb3Iuc2V0VExTRXJyb3JzKHRsc0Vycm9ycyk7CiAgICAgcmVzb3VyY2VFcnJvci5zZXRDZXJ0
aWZpY2F0ZShjZXJ0aWZpY2F0ZSk7CiAgICAgcmV0dXJuIHJlc291cmNlRXJyb3I7CkBAIC04OCw5
ICs4OCw5IEBAIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvcjo6dGltZW91dEVycm9yKGNvbnN0
IFVSTCYgZmFpbGluZ1VSTCkKICAgICAvLyBuZXR3b3JraW5nIGVycm9ycyBmcm9tIHRoYXQgZmls
ZSBzaG91bGQgYmUgbW92ZWQgaGVyZS4KIAogICAgIC8vIFVzZSB0aGUgc2FtZSB2YWx1ZSBhcyBp
biBOU1VSTEVycm9yLmgKLSAgICBzdGF0aWMgY29uc3QgaW50IHRpbWVvdXRFcnJvciA9IC0xMDAx
OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCAgZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0
d29ya0Vycm9yIjsKLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbiwgdGltZW91
dEVycm9yLCBmYWlsaW5nVVJMLCAiUmVxdWVzdCB0aW1lZCBvdXQiLCBSZXNvdXJjZUVycm9yOjpU
eXBlOjpUaW1lb3V0KTsKKyAgICBzdGF0aWMgY29uc3RleHByIGludCB0aW1lb3V0RXJyb3IgPSAt
MTAwMTsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8gZXJyb3JEb21haW4gPSAiV2ViS2l0TmV0
d29ya0Vycm9yIl9zOworICAgIHJldHVybiBSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluLCB0aW1l
b3V0RXJyb3IsIGZhaWxpbmdVUkwsICJSZXF1ZXN0IHRpbWVkIG91dCJfcywgUmVzb3VyY2VFcnJv
cjo6VHlwZTo6VGltZW91dCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VFcnJvcjo6ZG9QbGF0Zm9ybUlz
b2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXNwb25zZVNv
dXAuY3BwCmluZGV4IDliN2I0YjMyZDc1N2IxYmMyYTZjYjI1OTQxMDgwNGI4OTUyY2UxMWIuLjg4
OGRiN2Q4ZjMzOTI4ZGY2ZjZjZjk5NzY5MWRkZjI4ZjVjMjYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNlU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVzcG9u
c2VTb3VwLmNwcApAQCAtNTUsNyArNTUsNyBAQCBSZXNvdXJjZVJlc3BvbnNlOjpSZXNvdXJjZVJl
c3BvbnNlKFNvdXBNZXNzYWdlKiBzb3VwTWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgc25pZgogICAg
IH0KIAogICAgIG1faHR0cFN0YXR1c0NvZGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3N0YXR1cyhzb3Vw
TWVzc2FnZSk7Ci0gICAgc2V0SFRUUFN0YXR1c1RleHQoc291cF9tZXNzYWdlX2dldF9yZWFzb25f
cGhyYXNlKHNvdXBNZXNzYWdlKSk7CisgICAgc2V0SFRUUFN0YXR1c1RleHQoU3RyaW5nIHsgc291
cF9tZXNzYWdlX2dldF9yZWFzb25fcGhyYXNlKHNvdXBNZXNzYWdlKSB9KTsKIAogICAgIG1fY2Vy
dGlmaWNhdGUgPSBzb3VwX21lc3NhZ2VfZ2V0X3Rsc19wZWVyX2NlcnRpZmljYXRlKHNvdXBNZXNz
YWdlKTsKICAgICBtX3Rsc0Vycm9ycyA9IHNvdXBfbWVzc2FnZV9nZXRfdGxzX3BlZXJfY2VydGlm
aWNhdGVfZXJyb3JzKHNvdXBNZXNzYWdlKTsKQEAgLTY2LDkgKzY2LDkgQEAgUmVzb3VyY2VSZXNw
b25zZTo6UmVzb3VyY2VSZXNwb25zZShTb3VwTWVzc2FnZSogc291cE1lc3NhZ2UsIGNvbnN0IENT
dHJpbmcmIHNuaWYKICAgICBTdHJpbmcgY29udGVudFR5cGU7CiAgICAgY29uc3QgY2hhciogb2Zm
aWNpYWxUeXBlID0gc291cF9tZXNzYWdlX2hlYWRlcnNfZ2V0X29uZShyZXNwb25zZUhlYWRlcnMs
ICJDb250ZW50LVR5cGUiKTsKICAgICBpZiAoIXNuaWZmZWRDb250ZW50VHlwZS5pc051bGwoKSAm
JiBtX2h0dHBTdGF0dXNDb2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCAmJiBzbmlmZmVk
Q29udGVudFR5cGUgIT0gb2ZmaWNpYWxUeXBlKQotICAgICAgICBjb250ZW50VHlwZSA9IHNuaWZm
ZWRDb250ZW50VHlwZS5kYXRhKCk7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgc25p
ZmZlZENvbnRlbnRUeXBlLmRhdGEoKSB9OwogICAgIGVsc2UKLSAgICAgICAgY29udGVudFR5cGUg
PSBvZmZpY2lhbFR5cGU7CisgICAgICAgIGNvbnRlbnRUeXBlID0gU3RyaW5nIHsgb2ZmaWNpYWxU
eXBlIH07CiAgICAgc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250
ZW50VHlwZSkpOwogICAgIGlmIChtX21pbWVUeXBlLmlzRW1wdHkoKSAmJiBtX2h0dHBTdGF0dXND
b2RlICE9IFNPVVBfU1RBVFVTX05PVF9NT0RJRklFRCkKICAgICAgICAgc2V0TWltZVR5cGUoTUlN
RVR5cGVSZWdpc3RyeTo6bWltZVR5cGVGb3JQYXRoKG1fdXJsLnBhdGgoKS50b1N0cmluZygpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9IeXBoZW5h
dGlvbkxpYkh5cGhlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2h5cGhlbi9I
eXBoZW5hdGlvbkxpYkh5cGhlbi5jcHAKaW5kZXggYTU0YjY1YzUxMTgyMDZiNzE3MTFiNDk3NzNj
YTIxZDY2YzIwOTFhNS4uYTJmMGM5NTQ3MjhjOWU2ZDZiMzYwODZiOTY1OGRjMzk0NGNjMmFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9oeXBoZW4vSHlwaGVuYXRp
b25MaWJIeXBoZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvaHlwaGVu
L0h5cGhlbmF0aW9uTGliSHlwaGVuLmNwcApAQCAtNjUsMTIgKzY1LDEzIEBAIHN0YXRpYyBTdHJp
bmcgZXh0cmFjdExvY2FsZUZyb21EaWN0aW9uYXJ5RmlsZU5hbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSkKIAogc3RhdGljIHZvaWQgc2NhbkRpcmVjdG9yeUZvckRpY3Rpb25hcmllcyhjb25zdCBj
aGFyKiBkaXJlY3RvcnlQYXRoLCBIYXNoTWFwPEF0b21TdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiYg
YXZhaWxhYmxlTG9jYWxlcykKIHsKLSAgICBmb3IgKGF1dG8mIGZpbGVOYW1lIDogRmlsZVN5c3Rl
bTo6bGlzdERpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSkgeworICAgIGF1dG8gZGlyZWN0b3J5UGF0
aFN0cmluZyA9IFN0cmluZzo6ZnJvbVVURjgoZGlyZWN0b3J5UGF0aCk7CisgICAgZm9yIChhdXRv
JiBmaWxlTmFtZSA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkoZGlyZWN0b3J5UGF0aFN0cmlu
ZykpIHsKICAgICAgICAgU3RyaW5nIGxvY2FsZSA9IGV4dHJhY3RMb2NhbGVGcm9tRGljdGlvbmFy
eUZpbGVOYW1lKGZpbGVOYW1lKTsKICAgICAgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGRpcmVjdG9yeVBhdGgsIGZpbGVOYW1lKTsKKyAgICAg
ICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChk
aXJlY3RvcnlQYXRoU3RyaW5nLCBmaWxlTmFtZSk7CiAgICAgICAgIGNoYXIgbm9ybWFsaXplZFBh
dGhbUEFUSF9NQVhdOwogICAgICAgICBpZiAoIXJlYWxwYXRoKEZpbGVTeXN0ZW06OmZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbihmaWxlUGF0aCkuZGF0YSgpLCBub3JtYWxpemVkUGF0aCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvd2luL0xvY2FsZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L3dpbi9M
b2NhbGVXaW4uY3BwCmluZGV4IGFhMDBhNGFkNmY1YjU5OTgyYjZiNDc3MzE3MWM4YmM3YzAzMzkw
MDguLmE0NGU0MzZiNjVlYzMzNGZlNzQ4OGFkM2RkN2NlY2M4OWE3YjQwNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvd2luL0xvY2FsZVdpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC93aW4vTG9jYWxlV2luLmNwcApAQCAtNDM0LDggKzQz
NCw4IEBAIHZvaWQgTG9jYWxlV2luOjppbml0aWFsaXplTG9jYWxlRGF0YSgpCiAgICAgU3RyaW5n
IG5lZ2F0aXZlU3VmZml4ID0gZW1wdHlTdHJpbmcoKTsKICAgICBzd2l0Y2ggKG5lZ2F0aXZlRm9y
bWF0KSB7CiAgICAgY2FzZSBOZWdhdGl2ZUZvcm1hdFBhcmVudGhlc2lzOgotICAgICAgICBuZWdh
dGl2ZVByZWZpeCA9ICIoIjsKLSAgICAgICAgbmVnYXRpdmVTdWZmaXggPSAiKSI7CisgICAgICAg
IG5lZ2F0aXZlUHJlZml4ID0gIigiX3M7CisgICAgICAgIG5lZ2F0aXZlU3VmZml4ID0gIikiX3M7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTmVnYXRpdmVGb3JtYXRTaWduU3BhY2VQcmVmaXg6
CiAgICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gbmVnYXRpdmVTaWduICsgIiAiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2ZW50V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9LZXlFdmVudFdpbi5jcHAKaW5kZXggYWFlNmM5OWRkMDUyOTg1
YTQzNzE4ODQ2YjY4NTM2NDU0MDUwYzIzNC4uMDVhMGQxMjU2YTEzNjk4MjUwN2I3MzJjNzg1MmJi
ZWNlMjAxYjUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL0tleUV2
ZW50V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vS2V5RXZlbnRXaW4u
Y3BwCkBAIC00NiwxMDEgKzQ2LDEwMSBAQCBzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JX
aW5kb3dzS2V5Q29kZSh1bnNpZ25lZCBzaG9ydCBrZXlDb2RlKQogewogICAgIHN3aXRjaCAoa2V5
Q29kZSkgewogICAgICAgICBjYXNlIFZLX01FTlU6Ci0gICAgICAgICAgICByZXR1cm4gIkFsdCI7
CisgICAgICAgICAgICByZXR1cm4gIkFsdCJfczsKICAgICAgICAgY2FzZSBWS19DT05UUk9MOgot
ICAgICAgICAgICAgcmV0dXJuICJDb250cm9sIjsKKyAgICAgICAgICAgIHJldHVybiAiQ29udHJv
bCJfczsKICAgICAgICAgY2FzZSBWS19TSElGVDoKLSAgICAgICAgICAgIHJldHVybiAiU2hpZnQi
OworICAgICAgICAgICAgcmV0dXJuICJTaGlmdCJfczsKICAgICAgICAgY2FzZSBWS19DQVBJVEFM
OgotICAgICAgICAgICAgcmV0dXJuICJDYXBzTG9jayI7CisgICAgICAgICAgICByZXR1cm4gIkNh
cHNMb2NrIl9zOwogICAgICAgICBjYXNlIFZLX0xXSU46CiAgICAgICAgIGNhc2UgVktfUldJTjoK
LSAgICAgICAgICAgIHJldHVybiAiV2luIjsKKyAgICAgICAgICAgIHJldHVybiAiV2luIl9zOwog
ICAgICAgICBjYXNlIFZLX0NMRUFSOgotICAgICAgICAgICAgcmV0dXJuICJDbGVhciI7CisgICAg
ICAgICAgICByZXR1cm4gIkNsZWFyIl9zOwogICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAg
ICAgICByZXR1cm4gIkRvd24iOworICAgICAgICAgICAgcmV0dXJuICJEb3duIl9zOwogICAgICAg
ICAvLyAiRW5kIgogICAgICAgICBjYXNlIFZLX0VORDoKLSAgICAgICAgICAgIHJldHVybiAiRW5k
IjsKKyAgICAgICAgICAgIHJldHVybiAiRW5kIl9zOwogICAgICAgICAvLyAiRW50ZXIiCiAgICAg
ICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgICAg
ICAgICByZXR1cm4gIkVudGVyIl9zOwogICAgICAgICBjYXNlIFZLX0VYRUNVVEU6Ci0gICAgICAg
ICAgICByZXR1cm4gIkV4ZWN1dGUiOworICAgICAgICAgICAgcmV0dXJuICJFeGVjdXRlIl9zOwog
ICAgICAgICBjYXNlIFZLX0YxOgotICAgICAgICAgICAgcmV0dXJuICJGMSI7CisgICAgICAgICAg
ICByZXR1cm4gIkYxIl9zOwogICAgICAgICBjYXNlIFZLX0YyOgotICAgICAgICAgICAgcmV0dXJu
ICJGMiI7CisgICAgICAgICAgICByZXR1cm4gIkYyIl9zOwogICAgICAgICBjYXNlIFZLX0YzOgot
ICAgICAgICAgICAgcmV0dXJuICJGMyI7CisgICAgICAgICAgICByZXR1cm4gIkYzIl9zOwogICAg
ICAgICBjYXNlIFZLX0Y0OgotICAgICAgICAgICAgcmV0dXJuICJGNCI7CisgICAgICAgICAgICBy
ZXR1cm4gIkY0Il9zOwogICAgICAgICBjYXNlIFZLX0Y1OgotICAgICAgICAgICAgcmV0dXJuICJG
NSI7CisgICAgICAgICAgICByZXR1cm4gIkY1Il9zOwogICAgICAgICBjYXNlIFZLX0Y2OgotICAg
ICAgICAgICAgcmV0dXJuICJGNiI7CisgICAgICAgICAgICByZXR1cm4gIkY2Il9zOwogICAgICAg
ICBjYXNlIFZLX0Y3OgotICAgICAgICAgICAgcmV0dXJuICJGNyI7CisgICAgICAgICAgICByZXR1
cm4gIkY3Il9zOwogICAgICAgICBjYXNlIFZLX0Y4OgotICAgICAgICAgICAgcmV0dXJuICJGOCI7
CisgICAgICAgICAgICByZXR1cm4gIkY4Il9zOwogICAgICAgICBjYXNlIFZLX0Y5OgotICAgICAg
ICAgICAgcmV0dXJuICJGOSI7CisgICAgICAgICAgICByZXR1cm4gIkY5Il9zOwogICAgICAgICBj
YXNlIFZLX0YxMDoKLSAgICAgICAgICAgIHJldHVybiAiRjExIjsKKyAgICAgICAgICAgIHJldHVy
biAiRjExIl9zOwogICAgICAgICBjYXNlIFZLX0YxMjoKLSAgICAgICAgICAgIHJldHVybiAiRjEy
IjsKKyAgICAgICAgICAgIHJldHVybiAiRjEyIl9zOwogICAgICAgICBjYXNlIFZLX0YxMzoKLSAg
ICAgICAgICAgIHJldHVybiAiRjEzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjEzIl9zOwogICAg
ICAgICBjYXNlIFZLX0YxNDoKLSAgICAgICAgICAgIHJldHVybiAiRjE0IjsKKyAgICAgICAgICAg
IHJldHVybiAiRjE0Il9zOwogICAgICAgICBjYXNlIFZLX0YxNToKLSAgICAgICAgICAgIHJldHVy
biAiRjE1IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE1Il9zOwogICAgICAgICBjYXNlIFZLX0Yx
NjoKLSAgICAgICAgICAgIHJldHVybiAiRjE2IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE2Il9z
OwogICAgICAgICBjYXNlIFZLX0YxNzoKLSAgICAgICAgICAgIHJldHVybiAiRjE3IjsKKyAgICAg
ICAgICAgIHJldHVybiAiRjE3Il9zOwogICAgICAgICBjYXNlIFZLX0YxODoKLSAgICAgICAgICAg
IHJldHVybiAiRjE4IjsKKyAgICAgICAgICAgIHJldHVybiAiRjE4Il9zOwogICAgICAgICBjYXNl
IFZLX0YxOToKLSAgICAgICAgICAgIHJldHVybiAiRjE5IjsKKyAgICAgICAgICAgIHJldHVybiAi
RjE5Il9zOwogICAgICAgICBjYXNlIFZLX0YyMDoKLSAgICAgICAgICAgIHJldHVybiAiRjIwIjsK
KyAgICAgICAgICAgIHJldHVybiAiRjIwIl9zOwogICAgICAgICBjYXNlIFZLX0YyMToKLSAgICAg
ICAgICAgIHJldHVybiAiRjIxIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIxIl9zOwogICAgICAg
ICBjYXNlIFZLX0YyMjoKLSAgICAgICAgICAgIHJldHVybiAiRjIyIjsKKyAgICAgICAgICAgIHJl
dHVybiAiRjIyIl9zOwogICAgICAgICBjYXNlIFZLX0YyMzoKLSAgICAgICAgICAgIHJldHVybiAi
RjIzIjsKKyAgICAgICAgICAgIHJldHVybiAiRjIzIl9zOwogICAgICAgICBjYXNlIFZLX0YyNDoK
LSAgICAgICAgICAgIHJldHVybiAiRjI0IjsKKyAgICAgICAgICAgIHJldHVybiAiRjI0Il9zOwog
ICAgICAgICBjYXNlIFZLX0hFTFA6Ci0gICAgICAgICAgICByZXR1cm4gIkhlbHAiOworICAgICAg
ICAgICAgcmV0dXJuICJIZWxwIl9zOwogICAgICAgICBjYXNlIFZLX0hPTUU6Ci0gICAgICAgICAg
ICByZXR1cm4gIkhvbWUiOworICAgICAgICAgICAgcmV0dXJuICJIb21lIl9zOwogICAgICAgICBj
YXNlIFZLX0lOU0VSVDoKLSAgICAgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICAgICAgICAg
IHJldHVybiAiSW5zZXJ0Il9zOwogICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gIkxlZnQiOworICAgICAgICAgICAgcmV0dXJuICJMZWZ0Il9zOwogICAgICAgICBjYXNl
IFZLX05FWFQ6Ci0gICAgICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICAgICAgICAgIHJl
dHVybiAiUGFnZURvd24iX3M7CiAgICAgICAgIGNhc2UgVktfUFJJT1I6Ci0gICAgICAgICAgICBy
ZXR1cm4gIlBhZ2VVcCI7CisgICAgICAgICAgICByZXR1cm4gIlBhZ2VVcCJfczsKICAgICAgICAg
Y2FzZSBWS19QQVVTRToKLSAgICAgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgICAgICAgICAg
cmV0dXJuICJQYXVzZSJfczsKICAgICAgICAgY2FzZSBWS19TTkFQU0hPVDoKLSAgICAgICAgICAg
IHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgICAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiJf
czsKICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgIHJldHVybiAiUmlnaHQiOwor
ICAgICAgICAgICAgcmV0dXJuICJSaWdodCJfczsKICAgICAgICAgY2FzZSBWS19TQ1JPTEw6Ci0g
ICAgICAgICAgICByZXR1cm4gIlNjcm9sbCI7CisgICAgICAgICAgICByZXR1cm4gIlNjcm9sbCJf
czsKICAgICAgICAgY2FzZSBWS19TRUxFQ1Q6Ci0gICAgICAgICAgICByZXR1cm4gIlNlbGVjdCI7
CisgICAgICAgICAgICByZXR1cm4gIlNlbGVjdCJfczsKICAgICAgICAgY2FzZSBWS19VUDoKLSAg
ICAgICAgICAgIHJldHVybiAiVXAiOworICAgICAgICAgICAgcmV0dXJuICJVcCJfczsKICAgICAg
ICAgLy8gU3RhbmRhcmQgc2F5cyB0aGF0IERFTCBiZWNvbWVzIFUrMDA3Ri4KICAgICAgICAgY2Fz
ZSBWS19ERUxFVEU6Ci0gICAgICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgICAgICAgICBy
ZXR1cm4gIlUrMDA3RiJfczsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKCJVKyIsIGhleCh0b0FTQ0lJVXBwZXIoa2V5Q29kZSksIDQpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTG9jYWxpemVkU3RyaW5nc1dpbi5j
cHAKaW5kZXggYjkzODcxNDY2NTNhYWQzZDkyYzA2YjBiNDQzZTdhNGM4YmQwMDhlZS4uODA3ZDU3
MjM0MzBiMWFiODliOWJjOWIyODUwZTIxMWYyMjAyYmU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL0xvY2FsaXplZFN0cmluZ3NXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Mb2NhbGl6ZWRTdHJpbmdzV2luLmNwcApAQCAtMzQsMTMgKzM0
LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFN0cmluZyB1cGxvYWRGaWxlVGV4dCgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gInVwbG9hZCI7CisgICAgcmV0dXJuICJ1
cGxvYWQiX3M7CiB9CiAKIFN0cmluZyBhbGxGaWxlc1RleHQoKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuICJhbGwgZmlsZXMiOworICAgIHJldHVybiAiYWxsIGZpbGVzIl9z
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKaW5kZXggYjZiMDc2MzdjZDU2NjU3
MGZjMjM5NzdkOTQ0YmFhN2YzZDRhNjYyZi4uMjhiNTRlZjQ3YTFjM2I3OWViNzVmZjc1YjhjNjNh
YmIxZTU0OTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVU
eXBlUmVnaXN0cnlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NSU1F
VHlwZVJlZ2lzdHJ5V2luLmNwcApAQCAtNzQsMzQgKzc0LDM0IEBAIFN0cmluZyBNSU1FVHlwZVJl
Z2lzdHJ5OjptaW1lVHlwZUZvckV4dGVuc2lvbihTdHJpbmdWaWV3IHN0cmluZykKICAgICBzdGF0
aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbWltZXR5cGVNYXA7CiAgICAgaWYgKG1pbWV0eXBl
TWFwLmlzRW1wdHkoKSkgewogICAgICAgICAvL2ZpbGwgd2l0aCBpbml0aWFsIHZhbHVlcwotICAg
ICAgICBtaW1ldHlwZU1hcC5hZGQoInR4dCIsICJ0ZXh0L3BsYWluIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgicGRmIiwgImFwcGxpY2F0aW9uL3BkZiIpOwotICAgICAgICBtaW1ldHlwZU1h
cC5hZGQoInBzIiwgImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJjc3MiLCAidGV4dC9jc3MiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1s
IiwgInRleHQvaHRtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImh0bSIsICJ0ZXh0L2h0
bWwiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ4bWwiLCAidGV4dC94bWwiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJ4c2wiLCAidGV4dC94c2wiKTsKLSAgICAgICAgbWltZXR5cGVN
YXAuYWRkKCJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKTsKLSAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ4aHQiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgieGh0bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7Ci0gICAgICAgIG1p
bWV0eXBlTWFwLmFkZCgicnNzIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiKTsKLSAgICAgICAgbWlt
ZXR5cGVNYXAuYWRkKCJ3ZWJhcmNoaXZlIiwgImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSIpOwot
ICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2ZyIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgic3ZneiIsICJpbWFnZS9zdmcreG1sIik7Ci0gICAgICAgIG1pbWV0
eXBlTWFwLmFkZCgianBnIiwgImltYWdlL2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRk
KCJqcGVnIiwgImltYWdlL2pwZWciKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwbmciLCAi
aW1hZ2UvcG5nIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidGlmIiwgImltYWdlL3RpZmYi
KTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ0aWZmIiwgImltYWdlL3RpZmYiKTsKLSAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJpY28iLCAiaW1hZ2UvaWNvIik7Ci0gICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgiY3VyIiwgImltYWdlL2ljbyIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJt
cCIsICJpbWFnZS9ibXAiKTsKLSAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJ3bWwiLCAidGV4dC92
bmQud2FwLndtbCIpOwotICAgICAgICBtaW1ldHlwZU1hcC5hZGQoIndtbGMiLCAiYXBwbGljYXRp
b24vdm5kLndhcC53bWxjIik7Ci0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIiwgImF1ZGlv
L3gtbTRhIik7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgidHh0Il9zLCAidGV4dC9wbGFpbiJf
cyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgicGRmIl9zLCAiYXBwbGljYXRpb24vcGRmIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJwcyJfcywgImFwcGxpY2F0aW9uL3Bvc3RzY3Jp
cHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImNzcyJfcywgInRleHQvY3NzIl9zKTsK
KyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJodG1sIl9zLCAidGV4dC9odG1sIl9zKTsKKyAgICAg
ICAgbWltZXR5cGVNYXAuYWRkKCJodG0iX3MsICJ0ZXh0L2h0bWwiX3MpOworICAgICAgICBtaW1l
dHlwZU1hcC5hZGQoInhtbCJfcywgInRleHQveG1sIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ4c2wiX3MsICJ0ZXh0L3hzbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgianMi
X3MsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5h
ZGQoInhodCJfcywgImFwcGxpY2F0aW9uL3hodG1sK3htbCJfcyk7CisgICAgICAgIG1pbWV0eXBl
TWFwLmFkZCgieGh0bWwiX3MsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3MpOworICAgICAgICBt
aW1ldHlwZU1hcC5hZGQoInJzcyJfcywgImFwcGxpY2F0aW9uL3Jzcyt4bWwiX3MpOworICAgICAg
ICBtaW1ldHlwZU1hcC5hZGQoIndlYmFyY2hpdmUiX3MsICJhcHBsaWNhdGlvbi94LXdlYmFyY2hp
dmUiX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2ZyJfcywgImltYWdlL3N2Zyt4bWwi
X3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoInN2Z3oiX3MsICJpbWFnZS9zdmcreG1sIl9z
KTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGciX3MsICJpbWFnZS9qcGVnIl9zKTsKKyAg
ICAgICAgbWltZXR5cGVNYXAuYWRkKCJqcGVnIl9zLCAiaW1hZ2UvanBlZyJfcyk7CisgICAgICAg
IG1pbWV0eXBlTWFwLmFkZCgicG5nIl9zLCAiaW1hZ2UvcG5nIl9zKTsKKyAgICAgICAgbWltZXR5
cGVNYXAuYWRkKCJ0aWYiX3MsICJpbWFnZS90aWZmIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAu
YWRkKCJ0aWZmIl9zLCAiaW1hZ2UvdGlmZiJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
aWNvIl9zLCAiaW1hZ2UvaWNvIl9zKTsKKyAgICAgICAgbWltZXR5cGVNYXAuYWRkKCJjdXIiX3Ms
ICJpbWFnZS9pY28iX3MpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImJtcCJfcywgImltYWdl
L2JtcCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sIl9zLCAidGV4dC92bmQud2Fw
LndtbCJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgid21sYyJfcywgImFwcGxpY2F0aW9u
L3ZuZC53YXAud21sYyJfcyk7CisgICAgICAgIG1pbWV0eXBlTWFwLmFkZCgibTRhIl9zLCAiYXVk
aW8veC1tNGEiX3MpOwogI2lmIFVTRShKUEVHWEwpCi0gICAgICAgIG1pbWV0eXBlTWFwLmFkZCgi
anhsIiwgImltYWdlL2p4bCIpOworICAgICAgICBtaW1ldHlwZU1hcC5hZGQoImp4bCJfcywgImlt
YWdlL2p4bCJfcyk7CiAjZW5kaWYKICAgICB9CiAgICAgU3RyaW5nIHJlc3VsdCA9IG1pbWV0eXBl
TWFwLmdldChleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bh
c3RlYm9hcmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRX
aW4uY3BwCmluZGV4IDBiMjVmZjZjMzhjODYzNGYzN2VlYTJhZmQwMjRhOGQ0MmE0ZjQyYzUuLjY2
ODVlZDk5MzY0NjlmZDBhNDNmYmUyNDEyYmJjMzhiY2ZmOGQ1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTI0MCw5ICsyNDAsOSBAQCBi
b29sIFBhc3RlYm9hcmQ6Omhhc0RhdGEoKQogc3RhdGljIHZvaWQgYWRkTWltZVR5cGVzRm9yRm9y
bWF0KExpc3RIYXNoU2V0PFN0cmluZz4mIHJlc3VsdHMsIGNvbnN0IEZPUk1BVEVUQyYgZm9ybWF0
KQogewogICAgIGlmIChmb3JtYXQuY2ZGb3JtYXQgPT0gdXJsRm9ybWF0KCktPmNmRm9ybWF0IHx8
IGZvcm1hdC5jZkZvcm1hdCA9PSB1cmxXRm9ybWF0KCktPmNmRm9ybWF0KQotICAgICAgICByZXN1
bHRzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICByZXN1bHRzLmFkZCgidGV4dC91cmkt
bGlzdCJfcyk7CiAgICAgaWYgKGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRXRm9ybWF0KCkt
PmNmRm9ybWF0IHx8IGZvcm1hdC5jZkZvcm1hdCA9PSBwbGFpblRleHRGb3JtYXQoKS0+Y2ZGb3Jt
YXQpCi0gICAgICAgIHJlc3VsdHMuYWRkKCJ0ZXh0L3BsYWluIik7CisgICAgICAgIHJlc3VsdHMu
YWRkKCJ0ZXh0L3BsYWluIl9zKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQYXN0ZWJvYXJkQ3VzdG9t
RGF0YT4gUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRDdXN0b21EYXRhKCkKQEAgLTI3NSw5ICsy
NzUsOSBAQCBWZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlc1NhZmVGb3JCaW5kaW5ncyhj
b25zdCBTdHJpbmcmIG9yaWdpbikKICAgICAgICAgICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQo
dHlwZSk7CiAgICAgfQogCi0gICAgZG9tUGFzdGVib2FyZFR5cGVzLmFkZCgidGV4dC9wbGFpbiIp
OwotICAgIGRvbVBhc3RlYm9hcmRUeXBlcy5hZGQoInRleHQvdXJpLWxpc3QiKTsKLSAgICBkb21Q
YXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMu
YWRkKCJ0ZXh0L3BsYWluIl9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L3Vy
aS1saXN0Il9zKTsKKyAgICBkb21QYXN0ZWJvYXJkVHlwZXMuYWRkKCJ0ZXh0L2h0bWwiX3MpOwog
CiAgICAgcmV0dXJuIGNvcHlUb1ZlY3Rvcihkb21QYXN0ZWJvYXJkVHlwZXMpOwogfQpAQCAtMzI3
LDcgKzMyNyw3IEBAIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkT3JpZ2luKCkKIFN0cmluZyBQYXN0
ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAoIW1fZGF0
YU9iamVjdCAmJiBtX2RyYWdEYXRhTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIENsaXBib2FyZERhdGFUeXBlIGRh
dGFUeXBlID0gY2xpcGJvYXJkVHlwZUZyb21NSU1FVHlwZSh0eXBlKTsKICAgICBpZiAoZGF0YVR5
cGUgPT0gQ2xpcGJvYXJkRGF0YVR5cGVUZXh0KQpAQCAtMzQxLDcgKzM0MSw3IEBAIFN0cmluZyBQ
YXN0ZWJvYXJkOjpyZWFkU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICAgICAgcmV0dXJu
IG1fZGF0YU9iamVjdCA/IGdldENGSFRNTChtX2RhdGFPYmplY3QuZ2V0KCkpIDogZ2V0Q0ZIVE1M
KCZtX2RyYWdEYXRhTWFwKTsKICAgICB9CiAKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CiAKIFN0cmluZyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nSW5DdXN0b21E
YXRhKGNvbnN0IFN0cmluZyYgdHlwZSkKQEAgLTQyNSw3ICs0MjUsNyBAQCBzdGF0aWMgYm9vbCB3
cml0ZVVSTChXQ0RhdGFPYmplY3QgKmRhdGEsIGNvbnN0IFVSTCYgdXJsLCBTdHJpbmcgdGl0bGUs
IGJvb2wgd2l0aAogCiAgICAgaWYgKHdpdGhIVE1MKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBj
Zmh0bWxEYXRhOwotICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1cmwsIHRpdGxl
KSwgIiIsIGNmaHRtbERhdGEpOworICAgICAgICBtYXJrdXBUb0NGSFRNTCh1cmxUb01hcmt1cCh1
cmwsIHRpdGxlKSwgZW1wdHlTdHJpbmcoKSwgY2ZodG1sRGF0YSk7CiAgICAgICAgIG1lZGl1bS5o
R2xvYmFsID0gY3JlYXRlR2xvYmFsRGF0YShjZmh0bWxEYXRhKTsKICAgICAgICAgaWYgKG1lZGl1
bS5oR2xvYmFsICYmIEZBSUxFRChkYXRhLT5TZXREYXRhKGh0bWxGb3JtYXQoKSwgJm1lZGl1bSwg
VFJVRSkpKQogICAgICAgICAgICAgOjpHbG9iYWxGcmVlKG1lZGl1bS5oR2xvYmFsKTsKQEAgLTY5
Miw3ICs2OTIsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KGNvbnN0
IFVSTCYga3VybCwgY29uc3QgU3RyaW5nJiB0aXRsZVN0cikKICAgICBTdHJpbmcgdXJsID0ga3Vy
bC5zdHJpbmcoKTsKICAgICBBU1NFUlQodXJsLmlzQWxsQVNDSUkoKSk7IC8vIFVSTDo6c3RyaW5n
KCkgaXMgVVJMIGVuY29kZWQuCiAKLSAgICBTdHJpbmcgZnNQYXRoID0gZmlsZVN5c3RlbVBhdGhG
cm9tVVJMT3JUaXRsZSh1cmwsIHRpdGxlU3RyLCAiLlVSTCIsIHRydWUpOworICAgIFN0cmluZyBm
c1BhdGggPSBmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKHVybCwgdGl0bGVTdHIsICIuVVJM
Il9zLCB0cnVlKTsKICAgICBTdHJpbmcgY29udGVudFN0cmluZygiW0ludGVybmV0U2hvcnRjdXRd
XHJcblVSTD0iICsgdXJsICsgIlxyXG4iKTsKICAgICBDU3RyaW5nIGNvbnRlbnQgPSBjb250ZW50
U3RyaW5nLmxhdGluMSgpOwogCkBAIC03NjAsNyArNzYwLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJiBwYXN0ZWJvYXJkVVJMKQogICAgIC8vIHdyaXRlIHRv
IGNsaXBib2FyZCBpbiBmb3JtYXQgQ0ZfSFRNTCB0byBiZSBhYmxlIHRvIHBhc3RlIGludG8gY29u
dGVudGVkaXRhYmxlIGFyZWFzIGFzIGEgbGluawogICAgIGlmICg6Ok9wZW5DbGlwYm9hcmQobV9v
d25lcikpIHsKICAgICAgICAgVmVjdG9yPGNoYXI+IGRhdGE7Ci0gICAgICAgIG1hcmt1cFRvQ0ZI
VE1MKHVybFRvTWFya3VwKHBhc3RlYm9hcmRVUkwudXJsLCB0aXRsZSksICIiLCBkYXRhKTsKKyAg
ICAgICAgbWFya3VwVG9DRkhUTUwodXJsVG9NYXJrdXAocGFzdGVib2FyZFVSTC51cmwsIHRpdGxl
KSwgZW1wdHlTdHJpbmcoKSwgZGF0YSk7CiAgICAgICAgIEhHTE9CQUwgY2JEYXRhID0gY3JlYXRl
R2xvYmFsRGF0YShkYXRhKTsKICAgICAgICAgaWYgKCE6OlNldENsaXBib2FyZERhdGEoSFRNTENs
aXBib2FyZEZvcm1hdCwgY2JEYXRhKSkKICAgICAgICAgICAgIDo6R2xvYmFsRnJlZShjYkRhdGEp
OwpAQCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0LCBQbGFpblRleHRVUkxSZWFkaW5nUG9saWN5LCBzdGQ6CiAgICAgaWYgKDo6
SXNDbGlwYm9hcmRGb3JtYXRBdmFpbGFibGUoQ0ZfVEVYVCkgJiYgOjpPcGVuQ2xpcGJvYXJkKG1f
b3duZXIpKSB7CiAgICAgICAgIGlmIChIQU5ETEUgY2JEYXRhID0gOjpHZXRDbGlwYm9hcmREYXRh
KENGX1RFWFQpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyB0cmVhdHMgdGhlIGNoYXJh
Y3RlcnMgYXMgTGF0aW4tMSwgbm90IFVURi04IG9yIGV2ZW4gV2luZG93cyBMYXRpbi0xLiBJcyB0
aGF0IHRoZSByaWdodCBlbmNvZGluZz8KLSAgICAgICAgICAgIHRleHQudGV4dCA9IHN0YXRpY19j
YXN0PGNoYXIqPihHbG9iYWxMb2NrKGNiRGF0YSkpOworICAgICAgICAgICAgdGV4dC50ZXh0ID0g
U3RyaW5nIHsgc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2soY2JEYXRhKSkgfTsKICAgICAg
ICAgICAgIEdsb2JhbFVubG9jayhjYkRhdGEpOwogICAgICAgICAgICAgOjpDbG9zZUNsaXBib2Fy
ZCgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTUwLDcgKzk1MCw3IEBAIHN0YXRpYyBIR0xP
QkFMIGNyZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYKICAgICAgICAgR2xvYmFsRnJlZShtZW1PYmopOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9Ci0gICAgZXh0ZW5zaW9uLmluc2VydCgiLiIsIDApOworICAgIGV4dGVuc2lvbi5p
bnNlcnQoIi4iX3MsIDApOwogICAgIGZzUGF0aCA9IGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0
bGUodXJsLCBwcmVmZXJyZWRUaXRsZSwgZXh0ZW5zaW9uLCBmYWxzZSk7CiAKICAgICBpZiAoZnNQ
YXRoLmxlbmd0aCgpIDw9IDApIHsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6d3JpdGVVUkxUb1dyaXRhYmxlRGF0YU9iamVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsCiB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlTWFya3VwKGNvbnN0IFN0cmluZyYgbWFy
a3VwKQogewogICAgIFZlY3RvcjxjaGFyPiBkYXRhOwotICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1
cCwgIiIsIGRhdGEpOworICAgIG1hcmt1cFRvQ0ZIVE1MKG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwg
ZGF0YSk7CiAKICAgICBTVEdNRURJVU0gbWVkaXVtIHsgfTsKICAgICBtZWRpdW0udHltZWQgPSBU
WU1FRF9IR0xPQkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5
c3RlbUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1N5c3RlbUluZm8uY3Bw
CmluZGV4IDcwZjZjMWRjZGViZDZlNGRiODA1MmYyYTkxMWY3MDYyMWFiMjQ3ZDQuLmUxNjUzM2Jl
MmRiODJkMmVjYTZiM2JjOGJmN2MwYTUzODBiYjU1YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TeXN0ZW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU3lzdGVtSW5mby5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTeXN0
ZW1JbmZvLmgiCiAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg0LDI1ICs4NSwyNSBAQCBzdGF0aWMgU3RyaW5n
IG9zVmVyc2lvbkZvclVBU3RyaW5nKCkKICAgICBjYXNlIFdpbmRvd3NDRTE6CiAgICAgY2FzZSBX
aW5kb3dzQ0UyOgogICAgIGNhc2UgV2luZG93c0NFMzoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dz
IENFIjsKKyAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIl9zOwogICAgIGNhc2UgV2luZG93c0NF
NDoKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIENFIC5ORVQiOworICAgICAgICByZXR1cm4gIldp
bmRvd3MgQ0UgLk5FVCJfczsKICAgICBjYXNlIFdpbmRvd3MzXzE6Ci0gICAgICAgIHJldHVybiAi
V2luZG93cyAzLjEiOworICAgICAgICByZXR1cm4gIldpbmRvd3MgMy4xIl9zOwogICAgIGNhc2Ug
V2luZG93czk1OgotICAgICAgICByZXR1cm4gIldpbmRvd3MgOTUiOworICAgICAgICByZXR1cm4g
IldpbmRvd3MgOTUiX3M7CiAgICAgY2FzZSBXaW5kb3dzOTg6Ci0gICAgICAgIHJldHVybiAiV2lu
ZG93cyA5OCI7CisgICAgICAgIHJldHVybiAiV2luZG93cyA5OCJfczsKICAgICBjYXNlIFdpbmRv
d3NNRToKLSAgICAgICAgcmV0dXJuICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAg
IHJldHVybiAiV2luZG93cyA5ODsgV2luIDl4IDQuOTAiX3M7CiAgICAgY2FzZSBXaW5kb3dzTlQ0
OgotICAgICAgICByZXR1cm4gIldpbk5UNC4wIjsKKyAgICAgICAgcmV0dXJuICJXaW5OVDQuMCJf
czsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBjb25zdCBjaGFy
KiBmYW1pbHlOYW1lID0gKHZlcnNpb24gPj0gV2luZG93c05UMykgPyAiV2luZG93cyBOVCAiIDog
IldpbmRvd3MgQ0UgIjsKLSAgICByZXR1cm4gZmFtaWx5TmFtZSArIFN0cmluZzo6bnVtYmVyKG1h
am9yKSArICcuJyArIFN0cmluZzo6bnVtYmVyKG1pbm9yKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZyhmYW1pbHlOYW1lLCBtYWpvciwgJy4nLCBtaW5vcik7CiB9CiAKIHN0YXRpYyBib29sIGlzV09X
NjQoKQpAQCAtMTUyLDExICsxNTMsMTEgQEAgc3RhdGljIFdPUkQgcHJvY2Vzc29yQXJjaGl0ZWN0
dXJlKCkKIHN0YXRpYyBTdHJpbmcgYXJjaGl0ZWN0dXJlVG9rZW5Gb3JVQVN0cmluZygpCiB7CiAg
ICAgaWYgKGlzV09XNjQoKSkKLSAgICAgICAgcmV0dXJuICI7IFdPVzY0IjsKKyAgICAgICAgcmV0
dXJuICI7IFdPVzY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNoaXRlY3R1cmUoKSA9PSBQUk9D
RVNTT1JfQVJDSElURUNUVVJFX0FNRDY0KQotICAgICAgICByZXR1cm4gIjsgV2luNjQ7IHg2NCI7
CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgeDY0Il9zOwogICAgIGlmIChwcm9jZXNzb3JBcmNo
aXRlY3R1cmUoKSA9PSBQUk9DRVNTT1JfQVJDSElURUNUVVJFX0lBNjQpCi0gICAgICAgIHJldHVy
biAiOyBXaW42NDsgSUE2NCI7CisgICAgICAgIHJldHVybiAiOyBXaW42NDsgSUE2NCJfczsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3hyL29wZW54ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ci9vcGVueHIvT3BlblhSSW5wdXRNYXBwaW5ncy5oCmluZGV4IGNmYmZkNTRiNjI5YTRk
NjJhMmIwMjQyOTkyNDM5MjIwNzdkNjljOGQuLjVkNzU0ODk3NmM0MWU3ZjBhODBkZjEyNzBjODQz
YmM4ZmM3YzQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54
ci9PcGVuWFJJbnB1dE1hcHBpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIv
b3BlbnhyL09wZW5YUklucHV0TWFwcGluZ3MuaApAQCAtNDcsMTcgKzQ3LDE3IEBAIGNvbnN0ZXhw
ciBzdGQ6OmFycmF5PE9wZW5YUkJ1dHRvblR5cGUsIDc+IG9wZW5YUkJ1dHRvblR5cGVzIHsKIGlu
bGluZSBTdHJpbmcgYnV0dG9uVHlwZVRvU3RyaW5nKE9wZW5YUkJ1dHRvblR5cGUgdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRyaWdnZXI6
IHJldHVybiAidHJpZ2dlciI7Ci0gICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpTcXVlZXplOiBy
ZXR1cm4gInNxdWVlemUiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VG91Y2hwYWQ6IHJl
dHVybiAidG91Y2hwYWQiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6VGh1bWJzdGljazog
cmV0dXJuICJ0aHVtYnN0aWNrIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1icmVz
dDogcmV0dXJuICJ0aHVtYnJlc3QiOwotICAgIGNhc2UgT3BlblhSQnV0dG9uVHlwZTo6QnV0dG9u
QTogcmV0dXJuICJidXR0b25hIjsKLSAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OkJ1dHRvbkI6
IHJldHVybiAiYnV0dG9uYiI7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUcmlnZ2VyOiBy
ZXR1cm4gInRyaWdnZXIiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpTcXVlZXplOiBy
ZXR1cm4gInNxdWVlemUiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBlOjpUb3VjaHBhZDog
cmV0dXJuICJ0b3VjaHBhZCJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRodW1ic3Rp
Y2s6IHJldHVybiAidGh1bWJzdGljayJfczsKKyAgICBjYXNlIE9wZW5YUkJ1dHRvblR5cGU6OlRo
dW1icmVzdDogcmV0dXJuICJ0aHVtYnJlc3QiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBl
OjpCdXR0b25BOiByZXR1cm4gImJ1dHRvbmEiX3M7CisgICAgY2FzZSBPcGVuWFJCdXR0b25UeXBl
OjpCdXR0b25COiByZXR1cm4gImJ1dHRvbmIiX3M7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKICAgICB9CiB9CiAKQEAgLTgwLDExICs4MCwxMSBAQCBjb25zdGV4cHIg
c3RkOjphcnJheTxPcGVuWFJBeGlzVHlwZSwgMj4gb3BlblhSQXhpc1R5cGVzIHsKIGlubGluZSBT
dHJpbmcgYXhpc1R5cGV0b1N0cmluZyhPcGVuWFJBeGlzVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewotICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRvdWNocGFkOiByZXR1cm4gInRv
dWNocGFkIjsKLSAgICBjYXNlIE9wZW5YUkF4aXNUeXBlOjpUaHVtYnN0aWNrOiByZXR1cm4gInRo
dW1ic3RpY2siOworICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRvdWNocGFkOiByZXR1cm4gInRv
dWNocGFkIl9zOworICAgIGNhc2UgT3BlblhSQXhpc1R5cGU6OlRodW1ic3RpY2s6IHJldHVybiAi
dGh1bWJzdGljayJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL29wZW54ci9P
cGVuWFJVdGlscy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0
aWxzLmgKaW5kZXggOWVjYzQ4YTZhNmYwMTVlYzc1ZWExNTgxZjM2NDhhYTIwMzlmN2FiOS4uNTYz
NzJiYjM1NmVjM2VjMzJkMWEwMWIzYzBmZDg5MmQyMmNhYTlkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0veHIvb3BlbnhyL09wZW5YUlV0aWxzLmgKQEAgLTEyNywxMiArMTI3LDEy
IEBAIGlubGluZSBTdHJpbmcgaGFuZGVuZXNzVG9TdHJpbmcoWFJIYW5kZWRuZXNzIGhhbmRlbmVz
cykKIHsKICAgICBzd2l0Y2ggKGhhbmRlbmVzcykgewogICAgIGNhc2UgWFJIYW5kZWRuZXNzOjpM
ZWZ0OgotICAgICAgICByZXR1cm4gImxlZnQiOworICAgICAgICByZXR1cm4gImxlZnQiX3M7CiAg
ICAgY2FzZSBYUkhhbmRlZG5lc3M6OlJpZ2h0OgotICAgICAgICByZXR1cm4gInJpZ2h0IjsKKyAg
ICAgICAgcmV0dXJuICJyaWdodCJfczsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuICIiOworICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBh
OTA5MGY3ZWExYTM0OWY0OGQ3M2YzYzM3NjU0ZWUzZjY0ZmUzMmIzLi4wY2Y0MjQ4MjlkODc0ZTZk
ZTEwNmJkY2Y3ZjU2NzRiZWRmNTQwNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50
U3RhdGUoUGFnZSYgcGFnZSkKICAgICBwYWdlLnNldE91dHNpZGVWaWV3cG9ydFRocm90dGxpbmdF
bmFibGVkRm9yVGVzdGluZyhmYWxzZSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICBNb2Nr
UHJldmlld0xvYWRlckNsaWVudDo6c2luZ2xldG9uKCkuc2V0UGFzc3dvcmQoIiIpOworICAgIE1v
Y2tQcmV2aWV3TG9hZGVyQ2xpZW50OjpzaW5nbGV0b24oKS5zZXRQYXNzd29yZChlbXB0eVN0cmlu
ZygpKTsKICAgICBMZWdhY3lQcmV2aWV3TG9hZGVyOjpzZXRDbGllbnRGb3JUZXN0aW5nKG51bGxw
dHIpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3Vs
dC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDUyZTI3Njc2
M2NhMzJhYTA0ZTY5Mzc5ZmY1M2ViMTQxMmNiMzI3YjEuLjgzNTk2OWJmYTM2Y2UxNmY2MzU2YzZi
YTE3Y2E5MmVhMWU5OGRlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJl
c3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNTMs
MTEgKzUzLDExIEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZh
bHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgaWYgKCFlcnJvck9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJ
bnRlZ2VyKCJjb2RlIik7CisgICAgYXV0byBlcnJvciA9IGVycm9yT2JqZWN0LT5nZXRJbnRlZ2Vy
KCJjb2RlIl9zKTsKICAgICBpZiAoIWVycm9yKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRv
IGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiKTsKKyAgICBh
dXRvIGVycm9yTWVzc2FnZSA9IGVycm9yT2JqZWN0LT5nZXRTdHJpbmcoIm1lc3NhZ2UiX3MpOwog
ICAgIGlmICghZXJyb3JNZXNzYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL1Nlc3Npb24uY3Bw
CmluZGV4IDA1MjQ2YmFhNjNjNTA5NDFiYjJhOGJhNDMyOWI4MDcxYjk3ZTY5OWEuLmQ3MWY0ZDEw
NTdlZGJiNTNlZGFlMTY1YjJmZTJjZTAzYjFmMGVlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJE
cml2ZXIvU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9TZXNzaW9uLmNwcApAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgU2Vzc2lvbjo6aGFuZGxlVXNlclByb21wdHMoRnVuY3Rpb248
dm9pZCAoQ29tbWFuZFJlc3VsdCYmKT4mJiBjb21wbGV0aW9uSGFuCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIGlzU2hvd2luZ0phdmFTY3JpcHREaWFsb2cg
PSByZXNwb25zZS5yZXNwb25zZU9iamVjdC0+Z2V0Qm9vbGVhbigicmVzdWx0Iik7CisgICAgICAg
IGF1dG8gaXNTaG93aW5nSmF2YVNjcmlwdERpYWxvZyA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0
LT5nZXRCb29sZWFuKCJyZXN1bHQiX3MpOwogICAgICAgICBpZiAoIWlzU2hvd2luZ0phdmFTY3Jp
cHREaWFsb2cpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENvbW1hbmRSZXN1bHQ6
OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3IpKTsKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTM1OSwxMyArMzU5LDEzIEBAIHZvaWQgU2Vzc2lvbjo6Z2V0Q3VycmVu
dFVSTChGdW5jdGlvbjx2b2lkIChDb21tYW5kUmVzdWx0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBh
dXRvIGJyb3dzaW5nQ29udGV4dCA9IHJlc3BvbnNlLnJlc3BvbnNlT2JqZWN0LT5nZXRPYmplY3Qo
ImNvbnRleHQiKTsKKyAgICAgICAgICAgIGF1dG8gYnJvd3NpbmdDb250ZXh0ID0gcmVzcG9uc2Uu
cmVzcG9uc2VPYmplY3QtPmdldE9iamVjdCgiY29udGV4dCJfcyk7CiAgICAgICAgICAgICBpZiAo
IWJyb3dzaW5nQ29udGV4dCkgewogICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENv
bW1hbmRSZXN1bHQ6OmZhaWwoQ29tbWFuZFJlc3VsdDo6RXJyb3JDb2RlOjpVbmtub3duRXJyb3Ip
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGF1dG8gdXJsID0gYnJvd3NpbmdDb250ZXh0LT5nZXRTdHJpbmcoInVybCIpOworICAgICAgICAg
ICAgYXV0byB1cmwgPSBicm93c2luZ0NvbnRleHQtPmdldFN0cmluZygidXJsIl9zKTsKICAgICAg
ICAgICAgIGlmICghdXJsKSB7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQ29t
bWFuZFJlc3VsdDo6ZmFpbChDb21tYW5kUmVzdWx0OjpFcnJvckNvZGU6OlVua25vd25FcnJvcikp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTg1NSwxNCArODU1LDE0IEBAIHZvaWQgU2Vz
c2lvbjo6c2V0V2luZG93UmVjdChzdGQ6Om9wdGlvbmFsPGRvdWJsZT4geCwgc3RkOjpvcHRpb25h
bDxkb3VibGU+IHksIHN0CiAgICAgICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiaGFuZGxlIl9z
LCBtX3RvcGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwogICAgICAgICBpZiAoeCAmJiB5
KSB7CiAgICAgICAgICAgICBhdXRvIHdpbmRvd09yaWdpbiA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCIsIHgudmFsdWUoKSk7
Ci0gICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieSIsIHkudmFsdWUoKSk7Cisg
ICAgICAgICAgICB3aW5kb3dPcmlnaW4tPnNldERvdWJsZSgieCJfcywgeC52YWx1ZSgpKTsKKyAg
ICAgICAgICAgIHdpbmRvd09yaWdpbi0+c2V0RG91YmxlKCJ5Il9zLCB5LnZhbHVlKCkpOwogICAg
ICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJvcmlnaW4iX3MsIFdURk1vdmUod2luZG93
T3JpZ2luKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHdpZHRoICYmIGhlaWdodCkgewogICAg
ICAgICAgICAgYXV0byB3aW5kb3dTaXplID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAg
ICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgid2lkdGgiLCB3aWR0aC52YWx1ZSgpKTsKLSAg
ICAgICAgICAgIHdpbmRvd1NpemUtPnNldERvdWJsZSgiaGVpZ2h0IiwgaGVpZ2h0LnZhbHVlKCkp
OworICAgICAgICAgICAgd2luZG93U2l6ZS0+c2V0RG91YmxlKCJ3aWR0aCJfcywgd2lkdGgudmFs
dWUoKSk7CisgICAgICAgICAgICB3aW5kb3dTaXplLT5zZXREb3VibGUoImhlaWdodCJfcywgaGVp
Z2h0LnZhbHVlKCkpOwogICAgICAgICAgICAgcGFyYW1ldGVycy0+c2V0T2JqZWN0KCJzaXplIl9z
LCBXVEZNb3ZlKHdpbmRvd1NpemUpKTsKICAgICAgICAgfQogICAgICAgICBtX2hvc3QtPnNlbmRD
b21tYW5kVG9CYWNrZW5kKCJzZXRXaW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0Il9zLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFNlc3Npb25Ib3N0OjpDb21tYW5kUmVzcG9u
c2UmJiByZXNwb25zZSkgbXV0YWJsZSB7CkBAIC0xNzE3LDEyICsxNzE3LDEyIEBAIHZvaWQgU2Vz
c2lvbjo6ZWxlbWVudElzRmlsZVVwbG9hZChjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVuY3Rp
b248dm9pZCAoQ29tbWFuCiAgICAgYXV0byBhcmd1bWVudHMgPSBKU09OOjpBcnJheTo6Y3JlYXRl
KCk7CiAgICAgYXJndW1lbnRzLT5wdXNoU3RyaW5nKGNyZWF0ZUVsZW1lbnQoZWxlbWVudElEKS0+
dG9KU09OU3RyaW5nKCkpOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgaXNGaWxlVXBsb2FkU2Ny
aXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0ZpbGVVcGxvYWRTY3JpcHQgPQog
ICAgICAgICAiZnVuY3Rpb24oZWxlbWVudCkgeyIKICAgICAgICAgIiAgICBpZiAoZWxlbWVudC50
YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYgZWxlbWVudC50eXBlID09PSAnZmls
ZScpIgogICAgICAgICAiICAgICAgICByZXR1cm4geyAnZmlsZVVwbG9hZCc6IHRydWUsICdtdWx0
aXBsZSc6IGVsZW1lbnQuaGFzQXR0cmlidXRlKCdtdWx0aXBsZScpIH07IgogICAgICAgICAiICAg
IHJldHVybiB7ICdmaWxlVXBsb2FkJzogZmFsc2UgfTsiCi0gICAgICAgICJ9IjsKKyAgICAgICAg
In0iX3M7CiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHBhcmFtZXRlcnMtPnNldFN0cmluZygiYnJvd3NpbmdDb250ZXh0SGFuZGxlIl9zLCBtX3Rv
cGxldmVsQnJvd3NpbmdDb250ZXh0LnZhbHVlKCkpOwpAQCAtMTg1NSw3ICsxODU1LDcgQEAgdm9p
ZCBTZXNzaW9uOjplbGVtZW50SXNFZGl0YWJsZShjb25zdCBTdHJpbmcmIGVsZW1lbnRJRCwgRnVu
Y3Rpb248dm9pZCAoQ29tbWFuZFIKICAgICBhdXRvIGFyZ3VtZW50cyA9IEpTT046OkFycmF5Ojpj
cmVhdGUoKTsKICAgICBhcmd1bWVudHMtPnB1c2hTdHJpbmcoY3JlYXRlRWxlbWVudChlbGVtZW50
SUQpLT50b0pTT05TdHJpbmcoKSk7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBpc0VkaXRhYmxl
U2NyaXB0W10gPQorICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBpc0VkaXRhYmxlU2NyaXB0ID0K
ICAgICAgICAgImZ1bmN0aW9uKGVsZW1lbnQpIHsiCiAgICAgICAgICIgICAgaWYgKGVsZW1lbnQu
ZGlzYWJsZWQgfHwgZWxlbWVudC5yZWFkT25seSkiCiAgICAgICAgICIgICAgICAgIHJldHVybiBm
YWxzZTsiCkBAIC0xODcwLDcgKzE4NzAsNyBAQCB2b2lkIFNlc3Npb246OmVsZW1lbnRJc0VkaXRh
YmxlKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBGdW5jdGlvbjx2b2lkIChDb21tYW5kUgogICAg
ICAgICAiICAgICAgICByZXR1cm4gdHJ1ZTsiCiAgICAgICAgICIgICAgfSIKICAgICAgICAgIiAg
ICByZXR1cm4gZmFsc2U7IgotICAgICAgICAifSI7CisgICAgICAgICJ9Il9zOwogCiAgICAgYXV0
byBwYXJhbWV0ZXJzID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICBwYXJhbWV0ZXJzLT5z
ZXRTdHJpbmcoImJyb3dzaW5nQ29udGV4dEhhbmRsZSJfcywgbV90b3BsZXZlbEJyb3dzaW5nQ29u
dGV4dC52YWx1ZSgpKTsKQEAgLTIxNzAsNyArMjE3MCw3IEBAIHZvaWQgU2Vzc2lvbjo6ZWxlbWVu
dFNlbmRLZXlzKGNvbnN0IFN0cmluZyYgZWxlbWVudElELCBjb25zdCBTdHJpbmcmIHRleHQsIEZ1
bmN0CiAgICAgICAgICAgICBhdXRvIGZpbGVVcGxvYWRUeXBlID0gcGFyc2VFbGVtZW50SXNGaWxl
VXBsb2FkUmVzdWx0KHJlc3VsdC5yZXN1bHQoKSk7CiAgICAgICAgICAgICBpZiAoIWZpbGVVcGxv
YWRUeXBlIHx8IGNhcGFiaWxpdGllcygpLnN0cmljdEZpbGVJbnRlcmFjdGFiaWxpdHkudmFsdWVf
b3IoZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyB0byBhbiBh
dG9tLgotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGZvY3VzU2NyaXB0W10gPQor
ICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgYXV0byBmb2N1c1NjcmlwdCA9CiAgICAg
ICAgICAgICAgICAgICAgICJmdW5jdGlvbiBmb2N1cyhlbGVtZW50KSB7IgogICAgICAgICAgICAg
ICAgICAgICAiICAgIGxldCBkb2MgPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQgfHwgZWxlbWVudDsi
CiAgICAgICAgICAgICAgICAgICAgICIgICAgbGV0IHByZXZBY3RpdmVFbGVtZW50ID0gZG9jLmFj
dGl2ZUVsZW1lbnQ7IgpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgdm9pZCBTZXNzaW9uOjplbGVtZW50
U2VuZEtleXMoY29uc3QgU3RyaW5nJiBlbGVtZW50SUQsIGNvbnN0IFN0cmluZyYgdGV4dCwgRnVu
Y3QKICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgZWxlbWVudC5zZXRTZWxlY3Rpb25SYW5n
ZShlbGVtZW50LnZhbHVlLmxlbmd0aCwgZWxlbWVudC52YWx1ZS5sZW5ndGgpOyIKICAgICAgICAg
ICAgICAgICAgICAgIiAgICBpZiAoZWxlbWVudFJvb3ROb2RlLmFjdGl2ZUVsZW1lbnQgIT09IGVs
ZW1lbnQpIgogICAgICAgICAgICAgICAgICAgICAiICAgICAgICB0aHJvdyB7bmFtZTogJ0VsZW1l
bnROb3RJbnRlcmFjdGFibGUnLCBtZXNzYWdlOiAnRWxlbWVudCBpcyBub3QgZm9jdXNhYmxlLid9
OyIKLSAgICAgICAgICAgICAgICAgICAgIn0iOworICAgICAgICAgICAgICAgICAgICAifSJfczsK
IAogICAgICAgICAgICAgICAgIGF1dG8gYXJndW1lbnRzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+cHVzaFN0cmluZyhjcmVhdGVFbGVtZW50KGVs
ZW1lbnRJRCktPnRvSlNPTlN0cmluZygpKTsKQEAgLTI1MDYsMTMgKzI1MDYsMTMgQEAgc3RhdGlj
IFJlZjxKU09OOjpPYmplY3Q+IGJ1aWx0QXV0b21hdGlvbkNvb2tpZShjb25zdCBTZXNzaW9uOjpD
b29raWUmIGNvb2tpZSkKICAgICBhdXRvIGNvb2tpZU9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiX3MsIGNvb2tpZS5uYW1l
KTsKICAgICBjb29raWVPYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsIGNvb2tpZS52YWx1ZSk7
Ci0gICAgY29va2llT2JqZWN0LT5zZXRTdHJpbmcoInBhdGgiX3MsIGNvb2tpZS5wYXRoLnZhbHVl
X29yKCIvIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJwYXRoIl9zLCBjb29raWUu
cGF0aC52YWx1ZV9vcigiLyJfcykpOwogICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJkb21h
aW4iX3MsIGNvb2tpZS5kb21haW4udmFsdWVfb3IoZW1wdHlTdHJpbmcoKSkpOwogICAgIGNvb2tp
ZU9iamVjdC0+c2V0Qm9vbGVhbigic2VjdXJlIl9zLCBjb29raWUuc2VjdXJlLnZhbHVlX29yKGZh
bHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFuKCJodHRwT25seSJfcywgY29va2ll
Lmh0dHBPbmx5LnZhbHVlX29yKGZhbHNlKSk7CiAgICAgY29va2llT2JqZWN0LT5zZXRCb29sZWFu
KCJzZXNzaW9uIl9zLCAhY29va2llLmV4cGlyeSk7CiAgICAgY29va2llT2JqZWN0LT5zZXREb3Vi
bGUoImV4cGlyZXMiX3MsIGNvb2tpZS5leHBpcnkudmFsdWVfb3IoMCkpOwotICAgIGNvb2tpZU9i
amVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2llLnNhbWVTaXRlLnZhbHVlX29yKCJO
b25lIikpOworICAgIGNvb2tpZU9iamVjdC0+c2V0U3RyaW5nKCJzYW1lU2l0ZSJfcywgY29va2ll
LnNhbWVTaXRlLnZhbHVlX29yKCJOb25lIl9zKSk7CiAgICAgcmV0dXJuIGNvb2tpZU9iamVjdDsK
IH0KIApAQCAtMjY5MSwzOCArMjY5MSwzOCBAQCBTZXNzaW9uOjpJbnB1dFNvdXJjZVN0YXRlJiBT
ZXNzaW9uOjppbnB1dFNvdXJjZVN0YXRlKGNvbnN0IFN0cmluZyYgaWQpCiAgICAgcmV0dXJuIG1f
aW5wdXRTdGF0ZVRhYmxlLmVuc3VyZShpZCwgW10geyByZXR1cm4gSW5wdXRTb3VyY2VTdGF0ZSgp
OyB9KS5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9u
U291cmNlVHlwZShjb25zdCBJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCitzdGF0aWMgQVNDSUlM
aXRlcmFsIGF1dG9tYXRpb25Tb3VyY2VUeXBlKGNvbnN0IElucHV0U291cmNlJiBpbnB1dFNvdXJj
ZSkKIHsKICAgICBzd2l0Y2ggKGlucHV0U291cmNlLnR5cGUpIHsKICAgICBjYXNlIElucHV0U291
cmNlOjpUeXBlOjpOb25lOgotICAgICAgICByZXR1cm4gIk51bGwiOworICAgICAgICByZXR1cm4g
Ik51bGwiX3M7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6UG9pbnRlcjoKICAgICAgICAg
c3dpdGNoIChpbnB1dFNvdXJjZS5wb2ludGVyVHlwZS52YWx1ZV9vcihQb2ludGVyVHlwZTo6TW91
c2UpKSB7CiAgICAgICAgIGNhc2UgUG9pbnRlclR5cGU6Ok1vdXNlOgotICAgICAgICAgICAgcmV0
dXJuICJNb3VzZSI7CisgICAgICAgICAgICByZXR1cm4gIk1vdXNlIl9zOwogICAgICAgICBjYXNl
IFBvaW50ZXJUeXBlOjpUb3VjaDoKLSAgICAgICAgICAgIHJldHVybiAiVG91Y2giOworICAgICAg
ICAgICAgcmV0dXJuICJUb3VjaCJfczsKICAgICAgICAgY2FzZSBQb2ludGVyVHlwZTo6UGVuOgot
ICAgICAgICAgICAgcmV0dXJuICJQZW4iOworICAgICAgICAgICAgcmV0dXJuICJQZW4iX3M7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnB1dFNvdXJjZTo6VHlwZTo6S2V5
OgotICAgICAgICByZXR1cm4gIktleWJvYXJkIjsKKyAgICAgICAgcmV0dXJuICJLZXlib2FyZCJf
czsKICAgICBjYXNlIElucHV0U291cmNlOjpUeXBlOjpXaGVlbDoKLSAgICAgICAgcmV0dXJuICJX
aGVlbCI7CisgICAgICAgIHJldHVybiAiV2hlZWwiX3M7CiAgICAgfQogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBhdXRvbWF0aW9uT3Jp
Z2luVHlwZShQb2ludGVyT3JpZ2luOjpUeXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsIGF1
dG9tYXRpb25PcmlnaW5UeXBlKFBvaW50ZXJPcmlnaW46OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlZpZXdwb3J0OgotICAg
ICAgICByZXR1cm4gIlZpZXdwb3J0IjsKKyAgICAgICAgcmV0dXJuICJWaWV3cG9ydCJfczsKICAg
ICBjYXNlIFBvaW50ZXJPcmlnaW46OlR5cGU6OlBvaW50ZXI6Ci0gICAgICAgIHJldHVybiAiUG9p
bnRlciI7CisgICAgICAgIHJldHVybiAiUG9pbnRlciJfczsKICAgICBjYXNlIFBvaW50ZXJPcmln
aW46OlR5cGU6OkVsZW1lbnQ6Ci0gICAgICAgIHJldHVybiAiRWxlbWVudCI7CisgICAgICAgIHJl
dHVybiAiRWxlbWVudCJfczsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2VydmljZS5jcHAg
Yi9Tb3VyY2UvV2ViRHJpdmVyL1dlYkRyaXZlclNlcnZpY2UuY3BwCmluZGV4IDVlNDQwNjdlZjBh
MjhiMWI4MGFlYmZmM2NhYWIzYzg0Y2Q1YThkYmYuLjU5MTg0NzBiODVjYWM4N2ZkYjljN2EzNTk3
YzI4MWQxMGE1OWJlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvV2ViRHJpdmVyU2Vy
dmljZS5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9XZWJEcml2ZXJTZXJ2aWNlLmNwcApAQCAt
NjEsNyArNjEsNyBAQCBpbnQgV2ViRHJpdmVyU2VydmljZTo6cnVuKGludCBhcmdjLCBjaGFyKiog
YXJndikKICNpZiBVU0UoSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIpCiAgICAgU3RyaW5nIHRhcmdl
dFN0cmluZzsKICAgICBpZiAoY29uc3QgY2hhciogdGFyZ2V0RW52VmFyID0gZ2V0ZW52KCJXRUJE
UklWRVJfVEFSR0VUX0FERFIiKSkKLSAgICAgICAgdGFyZ2V0U3RyaW5nID0gdGFyZ2V0RW52VmFy
OworICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyB0YXJnZXRFbnZWYXIgfTsKICNlbmRp
ZgogICAgIGZvciAoaW50IGkgPSAxIDsgaSA8IGFyZ2M7ICsraSkgewogICAgICAgICBjb25zdCBj
aGFyKiBhcmcgPSBhcmd2W2ldOwpAQCAtNzUsNyArNzUsNyBAQCBpbnQgV2ViRHJpdmVyU2Vydmlj
ZTo6cnVuKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgICAgICAgICBwcmludFVzYWdl
U3RhdGVtZW50KGFyZ3ZbMF0pOwogICAgICAgICAgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3J0U3RyaW5nID0gYXJndltpXTsKKyAgICAg
ICAgICAgIHBvcnRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgfQogCkBAIC05Nyw3ICs5Nyw3IEBAIGludCBXZWJEcml2ZXJTZXJ2aWNl
OjpydW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VT
dGF0ZW1lbnQoYXJndlswXSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhcmdldFN0cmluZyA9IGFyZ3ZbaV07CisgICAg
ICAgICAgICB0YXJnZXRTdHJpbmcgPSBTdHJpbmcgeyBhcmd2W2ldIH07CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQogCkBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8UHJveHk+IGRlc2VyaWFsaXplUHJveHkoSlNPTjo6T2JqZWN0JiBwcm94eU9iamVjdCkK
ICAgICAgICAgICAgIGlmICghcHJveHkuaHR0cHNVUkwtPmlzVmFsaWQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvIHZh
bHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzUHJveHkiKSkgeworICAgICAgICBpZiAo
YXV0byB2YWx1ZSA9IHByb3h5T2JqZWN0LmdldFZhbHVlKCJzb2Nrc1Byb3h5Il9zKSkgewogICAg
ICAgICAgICAgYXV0byBzb2Nrc1Byb3h5ID0gdmFsdWUtPmFzU3RyaW5nKCk7CiAgICAgICAgICAg
ICBpZiAoIXNvY2tzUHJveHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
QEAgLTQ1MCw3ICs0NTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxQcm94eT4gZGVzZXJpYWxp
emVQcm94eShKU09OOjpPYmplY3QmIHByb3h5T2JqZWN0KQogICAgICAgICAgICAgaWYgKCFwcm94
eS5zb2Nrc1VSTC0+aXNWYWxpZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICAgICAgICAgIGF1dG8gc29ja3NWZXJzaW9uVmFsdWUgPSBwcm94eU9iamVjdC5n
ZXRWYWx1ZSgic29ja3NWZXJzaW9uIik7CisgICAgICAgICAgICBhdXRvIHNvY2tzVmVyc2lvblZh
bHVlID0gcHJveHlPYmplY3QuZ2V0VmFsdWUoInNvY2tzVmVyc2lvbiJfcyk7CiAgICAgICAgICAg
ICBpZiAoIXNvY2tzVmVyc2lvblZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKQEAgLTg3MiwzMCArODcyLDMwIEBAIHZvaWQgV2ViRHJpdmVyU2VydmljZTo6Y3Jl
YXRlU2Vzc2lvbihWZWN0b3I8Q2FwYWJpbGl0aWVzPiYmIGNhcGFiaWxpdGllc0xpc3QsIHN0CiAg
ICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldEJvb2xlYW4oInNldFdpbmRvd1JlY3Qi
X3MsIGNhcGFiaWxpdGllcy5zZXRXaW5kb3dSZWN0LnZhbHVlX29yKHRydWUpKTsKICAgICAgICAg
ICAgIHN3aXRjaCAoY2FwYWJpbGl0aWVzLnVuaGFuZGxlZFByb21wdEJlaGF2aW9yLnZhbHVlX29y
KFVuaGFuZGxlZFByb21wdEJlaGF2aW9yOjpEaXNtaXNzQW5kTm90aWZ5KSkgewogICAgICAgICAg
ICAgY2FzZSBVbmhhbmRsZWRQcm9tcHRCZWhhdmlvcjo6RGlzbWlzczoKLSAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJkaXNtaXNzIik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRT
dHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyJfcyk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFVuaGFuZGxlZFByb21wdEJlaGF2aW9y
OjpBY2NlcHQ6Ci0gICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmco
InVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiYWNjZXB0Iik7CisgICAgICAgICAgICAgICAg
Y2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9z
LCAiYWNjZXB0Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkRpc21pc3NBbmROb3RpZnk6Ci0gICAgICAgICAgICAg
ICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9y
Il9zLCAiZGlzbWlzcyBhbmQgbm90aWZ5Iik7CisgICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVz
T2JqZWN0LT5zZXRTdHJpbmcoInVuaGFuZGxlZFByb21wdEJlaGF2aW9yIl9zLCAiZGlzbWlzcyBh
bmQgbm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
VW5oYW5kbGVkUHJvbXB0QmVoYXZpb3I6OkFjY2VwdEFuZE5vdGlmeToKLSAgICAgICAgICAgICAg
ICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3Ii
X3MsICJhY2NlcHQgYW5kIG5vdGlmeSIpOworICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllc09i
amVjdC0+c2V0U3RyaW5nKCJ1bmhhbmRsZWRQcm9tcHRCZWhhdmlvciJfcywgImFjY2VwdCBhbmQg
bm90aWZ5Il9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVW5o
YW5kbGVkUHJvbXB0QmVoYXZpb3I6Oklnbm9yZToKLSAgICAgICAgICAgICAgICBjYXBhYmlsaXRp
ZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5kbGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUi
KTsKKyAgICAgICAgICAgICAgICBjYXBhYmlsaXRpZXNPYmplY3QtPnNldFN0cmluZygidW5oYW5k
bGVkUHJvbXB0QmVoYXZpb3IiX3MsICJpZ25vcmUiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChjYXBhYmlsaXRpZXMucGFnZUxv
YWRTdHJhdGVneS52YWx1ZV9vcihQYWdlTG9hZFN0cmF0ZWd5OjpOb3JtYWwpKSB7CiAgICAgICAg
ICAgICBjYXNlIFBhZ2VMb2FkU3RyYXRlZ3k6Ok5vbmU6Ci0gICAgICAgICAgICAgICAgY2FwYWJp
bGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3RyYXRlZ3kiX3MsICJub25lIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJub25lIl9zKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgUGFnZUxvYWRTdHJhdGVneTo6Tm9ybWFsOgotICAgICAgICAgICAgICAgIGNhcGFiaWxp
dGllc09iamVjdC0+c2V0U3RyaW5nKCJwYWdlTG9hZFN0cmF0ZWd5Il9zLCAibm9ybWFsIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJub3JtYWwiX3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBQYWdlTG9hZFN0cmF0ZWd5OjpFYWdlcjoKLSAgICAgICAgICAgICAgICBjYXBhYmls
aXRpZXNPYmplY3QtPnNldFN0cmluZygicGFnZUxvYWRTdHJhdGVneSJfcywgImVhZ2VyIik7Cisg
ICAgICAgICAgICAgICAgY2FwYWJpbGl0aWVzT2JqZWN0LT5zZXRTdHJpbmcoInBhZ2VMb2FkU3Ry
YXRlZ3kiX3MsICJlYWdlciJfcyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoIWNhcGFiaWxpdGllcy5wcm94eSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxpdGllc1NvY2tldC5jcHAgYi9Tb3VyY2UvV2Vi
RHJpdmVyL3NvY2tldC9DYXBhYmlsaXRpZXNTb2NrZXQuY3BwCmluZGV4IDBmNmM4NzgyMDA5NWEy
NzEwYzc5ODVmMjBkNGQ4N2ExYTkwN2FiZmEuLjJiNjcxMzQ5ZDM1YjFkY2RjOWFlYTg1ZjI5MDZm
NDJkOWIwODA3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0NhcGFiaWxp
dGllc1NvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9zb2NrZXQvQ2FwYWJpbGl0aWVz
U29ja2V0LmNwcApAQCAtMzIsMTIgKzMyLDEyIEBAIHZvaWQgQ2FwYWJpbGl0aWVzU29ja2V0Ojpw
YXJzZUNhcGFiaWxpdGllcyhjb25zdCBKU09OOjpPYmplY3QmIG1hdGNoZWRDYXBhYmlsaXRpCiB7
CiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiB0YXJnZXRBZGRyVmFsdWU7CiAgICAgU3RyaW5nIHRh
cmdldEFkZHI7Ci0gICAgaWYgKG1hdGNoZWRDYXBhYmlsaXRpZXMuZ2V0VmFsdWUoInNvY2tldDp0
YXJnZXRBZGRyIiwgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFzU3RyaW5n
KHRhcmdldEFkZHIpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZhbHVlKCJzb2Nr
ZXQ6dGFyZ2V0QWRkciJfcywgdGFyZ2V0QWRkclZhbHVlKSAmJiB0YXJnZXRBZGRyVmFsdWUtPmFz
U3RyaW5nKHRhcmdldEFkZHIpKQogICAgICAgICBjYXBhYmlsaXRpZXMudGFyZ2V0QWRkciA9IHRh
cmdldEFkZHI7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHRhcmdldFBvcnRWYWx1ZTsKICAg
ICBpbnQgdGFyZ2V0UG9ydDsKLSAgICBpZiAobWF0Y2hlZENhcGFiaWxpdGllcy5nZXRWYWx1ZSgi
c29ja2V0OnRhcmdldFBvcnQiLCB0YXJnZXRQb3J0VmFsdWUpICYmIHRhcmdldFBvcnRWYWx1ZS0+
YXNJbnRlZ2VyKHRhcmdldFBvcnQpKQorICAgIGlmIChtYXRjaGVkQ2FwYWJpbGl0aWVzLmdldFZh
bHVlKCJzb2NrZXQ6dGFyZ2V0UG9ydCJfcywgdGFyZ2V0UG9ydFZhbHVlKSAmJiB0YXJnZXRQb3J0
VmFsdWUtPmFzSW50ZWdlcih0YXJnZXRQb3J0KSkKICAgICAgICAgY2FwYWJpbGl0aWVzLnRhcmdl
dFBvcnQgPSB0YXJnZXRQb3J0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViRHJpdmVyL3Nv
Y2tldC9IVFRQU2VydmVyU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBT
ZXJ2ZXJTb2NrZXQuY3BwCmluZGV4IDc5YjdjYTRiMmQxMzMyMmIwZGU4ODMyYTIzODIxODBlMzJh
MDQyZjAuLjcwYWE0NGYwYmU4NDM4ZjgxYTQxMDIwZWMyMDk2MjcwNTU4NDBiOTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJEcml2ZXIvc29ja2V0L0hUVFBTZXJ2ZXJTb2NrZXQuY3BwCkBAIC05NCw3ICs5NCw3
IEBAIHZvaWQgSFRUUFJlcXVlc3RIYW5kbGVyOjpkaWRSZWNlaXZlKFJlbW90ZUluc3BlY3RvclNv
Y2tldEVuZHBvaW50JiwgQ29ubmVjdGlvbklECiAgICAgICAgIEhUVFBSZXF1ZXN0SGFuZGxlcjo6
UmVzcG9uc2UgcmVzcG9uc2UgewogICAgICAgICAgICAgNDAwLAogICAgICAgICAgICAgInRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCIsCi0gICAgICAgICAgICAiPGgxPkJhZCBjbGllbnQ8L2gxPiBJ
bnZhbGlkIEhUTUwgZm9ybWF0IiwKKyAgICAgICAgICAgICI8aDE+QmFkIGNsaWVudDwvaDE+IElu
dmFsaWQgSFRNTCBmb3JtYXQiX3MsCiAgICAgICAgIH07CiAgICAgICAgIHNlbmRSZXNwb25zZShX
VEZNb3ZlKHJlc3BvbnNlKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
bWFuZEVuY29kZXIubW0KaW5kZXggM2I2ZmY4YWYyMDZhNDJjOWEzNGNhOTIwZmIyMjczZDg2MTc2
MWU3Zi4uNTdkYmEwM2UxZTNkZGU1MmI3Zjk4YjU0MDBmODk5N2QyN2E2OWQ2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIENv
bW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZm
ZXImIHNvdXJjZSwgY29ucwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weUJ1ZmZlclRvVGV4dHVy
ZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRl
IGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZp
Y2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIENvbW1hbmRF
bmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBz
b3VyY2UsIGNvbgogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb0J1ZmZlcihzb3Vy
Y2UsIGRlc3RpbmF0aW9uLCBjb3B5U2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFs
aWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxp
ZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdl
bmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVy
Ojpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNl
LCBjbwogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNh
dGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1cmUoc291cmNlLCBk
ZXN0aW5hdGlvbiwgY29weVNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IgYW5kIHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlv
bkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZGY1MjM4YTM1ZGFiNTA4MDQ4YTQw
NjI1ZjMxOWIyYjM3N2ZkNTkzMS4uMDAxMTg1OGZmOGVhNGY4MmM1NzU5NWNiZGZkZjgwM2U0MWNh
YTAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMjUwLDkgKzI1MCw5IEBAIHN0YXRpYyBTdHJp
bmcgc3RyaW5nRm9yU1NMUHJvdG9jb2woU1NMUHJvdG9jb2wgcHJvdG9jb2wpCiAgICAgY2FzZSBr
VExTUHJvdG9jb2wxMzoKICAgICAgICAgcmV0dXJuICJUTFMgMS4zIl9zOwogICAgIGNhc2Uga1NT
TFByb3RvY29sQWxsOgotICAgICAgICByZXR1cm4gIkFsbCI7CisgICAgICAgIHJldHVybiAiQWxs
Il9zOwogICAgIGNhc2Uga1NTTFByb3RvY29sVW5rbm93bjoKLSAgICAgICAgcmV0dXJuICJVbmtu
b3duIjsKKyAgICAgICAgcmV0dXJuICJVbmtub3duIl9zOwogICAgIGNhc2Uga1RMU1Byb3RvY29s
TWF4U3VwcG9ydGVkOgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtE
YXRhVGFza0N1cmwuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdv
cmtEYXRhVGFza0N1cmwuY3BwCmluZGV4IDA2Y2NlYzYyMWEwNWE3YzMwOWI4OWUyMTA0MjRkZTdk
YWYzMDcxMzYuLjA5ZGJlOTk2NjE0NDg0MWUyZmZiM2E4YWM5MTVkZGYxYTcxYzE1NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tD
dXJsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya0Rh
dGFUYXNrQ3VybC5jcHAKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1
cmw6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAg
Ly8gQ2hhbmdlIHJlcXVlc3QgbWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5n
IGEgcHJldmlvdXMgcmVkaXJlY3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNv
LgogICAgICAgICBpZiAoIXJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8
IHNob3VsZFJlZGlyZWN0QXNHRVQocmVxdWVzdCwgaXNDcm9zc09yaWdpbikpIHsKLSAgICAgICAg
ICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZCgiR0VUIik7CisgICAgICAgICAgICByZXF1ZXN0LnNl
dEhUVFBNZXRob2QoIkdFVCJfcyk7CiAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KG51
bGxwdHIpOwogICAgICAgICAgICAgcmVxdWVzdC5jbGVhckhUVFBDb250ZW50VHlwZSgpOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0
d29ya0RhdGFUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAv
TmV0d29ya0RhdGFUYXNrU291cC5jcHAKaW5kZXggNjZlNDg5NTU0OWEzYWVjOGQxZGY5OTRkMjVm
ZGNkYTRlZDJkN2U2Ni4uZTY3ZjdlZDI5YmM1MmVhYzkyNmZlYTc1NmU3YTU4YWY1Y2M2MWE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRh
VGFza1NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3
b3JrRGF0YVRhc2tTb3VwLmNwcApAQCAtOTI5LDkgKzkyOSw5IEBAIHZvaWQgTmV0d29ya0RhdGFU
YXNrU291cDo6Y29udGludWVIVFRQUmVkaXJlY3Rpb24oKQogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhSZWRpcmVjdHMgPSAyMDsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdC5yZWRpcmVj
dENvdW50KCkgPiBtYXhSZWRpcmVjdHMpIHsKICNpZiBVU0UoU09VUDIpCi0gICAgICAgIGRpZEZh
aWwoUmVzb3VyY2VFcnJvcjo6dHJhbnNwb3J0RXJyb3IobV9jdXJyZW50UmVxdWVzdC51cmwoKSwg
U09VUF9TVEFUVVNfVE9PX01BTllfUkVESVJFQ1RTLCAiVG9vIG1hbnkgcmVkaXJlY3RzIikpOwor
ICAgICAgICBkaWRGYWlsKFJlc291cmNlRXJyb3I6OnRyYW5zcG9ydEVycm9yKG1fY3VycmVudFJl
cXVlc3QudXJsKCksIFNPVVBfU1RBVFVTX1RPT19NQU5ZX1JFRElSRUNUUywgIlRvbyBtYW55IHJl
ZGlyZWN0cyJfcykpOwogI2Vsc2UKLSAgICAgICAgZGlkRmFpbChSZXNvdXJjZUVycm9yKGdfcXVh
cmtfdG9fc3RyaW5nKFNPVVBfU0VTU0lPTl9FUlJPUiksIFNPVVBfU0VTU0lPTl9FUlJPUl9UT09f
TUFOWV9SRURJUkVDVFMsIG1fY3VycmVudFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgo
IlRvbyBtYW55IHJlZGlyZWN0cyIpKSk7CisgICAgICAgIGRpZEZhaWwoUmVzb3VyY2VFcnJvcihT
dHJpbmcgeyBnX3F1YXJrX3RvX3N0cmluZyhTT1VQX1NFU1NJT05fRVJST1IpIH0sIFNPVVBfU0VT
U0lPTl9FUlJPUl9UT09fTUFOWV9SRURJUkVDVFMsIG1fY3VycmVudFJlcXVlc3QudXJsKCksIFN0
cmluZzo6ZnJvbVVURjgoIlRvbyBtYW55IHJlZGlyZWN0cyIpKSk7CiAjZW5kaWYKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTk1OSw3ICs5NTksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1Nv
dXA6OmNvbnRpbnVlSFRUUFJlZGlyZWN0aW9uKCkKICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKHJlcXVlc3QuaHR0cE1ldGhvZCgpLCAiZ2V0IikpIHsKICAgICAgICAgLy8g
Q2hhbmdlIG5ld1JlcXVlc3QgbWV0aG9kIHRvIEdFVCBpZiBjaGFuZ2Ugd2FzIG1hZGUgZHVyaW5n
IGEgcHJldmlvdXMgcmVkaXJlY3Rpb24gb3IgaWYgY3VycmVudCByZWRpcmVjdGlvbiBzYXlzIHNv
LgogICAgICAgICBpZiAoc291cF9tZXNzYWdlX2dldF9tZXRob2QobV9zb3VwTWVzc2FnZS5nZXQo
KSkgPT0gU09VUF9NRVRIT0RfR0VUIHx8ICFyZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBG
YW1pbHkoKSB8fCBzaG91bGRSZWRpcmVjdEFzR0VUKG1fc291cE1lc3NhZ2UuZ2V0KCksIGlzQ3Jv
c3NPcmlnaW4pKSB7Ci0gICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOwor
ICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiX3MpOwogICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQQm9keShudWxscHRyKTsKICAgICAgICAgICAgIHJlcXVlc3QuY2xlYXJI
VFRQQ29udGVudFR5cGUoKTsKICAgICAgICAgfQpAQCAtMTAzNyw3ICsxMDM3LDcgQEAgdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpyZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVh
bSwgR0FzeW5jUmVzdWx0KgogICAgICAgICBpZiAodGFzay0+bV9zb3VwTWVzc2FnZSkKICAgICAg
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcjo6Z2VuZXJpY0dFcnJvcih0YXNrLT5t
X2N1cnJlbnRSZXF1ZXN0LnVybCgpLCBlcnJvci5nZXQoKSkpOwogICAgICAgICBlbHNlIGlmICh0
YXNrLT5tX2ZpbGUpCi0gICAgICAgICAgICB0YXNrLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZ19x
dWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbiksIGVycm9yLT5jb2RlLCB0YXNrLT5tX2ZpcnN0
UmVxdWVzdC51cmwoKSwgU3RyaW5nOjpmcm9tVVRGOChlcnJvci0+bWVzc2FnZSkpKTsKKyAgICAg
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0
cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3Qu
dXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfSBlbHNlIGlm
IChieXRlc1JlYWQgPiAwKQpAQCAtMTEyNyw3ICsxMTI3LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRSZXF1ZXN0TmV4dFBhcnQoR1JlZlB0cjxHSW5wdXRTdHJlYW0+JiYgaW5wdXRT
dHJlYW0KICAgICBBU1NFUlQoIW1faW5wdXRTdHJlYW0pOwogICAgIG1faW5wdXRTdHJlYW0gPSBX
VEZNb3ZlKGlucHV0U3RyZWFtKTsKICAgICBhdXRvKiBoZWFkZXJzID0gc291cF9tdWx0aXBhcnRf
aW5wdXRfc3RyZWFtX2dldF9oZWFkZXJzKG1fbXVsdGlwYXJ0SW5wdXRTdHJlYW0uZ2V0KCkpOwot
ICAgIFN0cmluZyBjb250ZW50VHlwZSA9IHNvdXBfbWVzc2FnZV9oZWFkZXJzX2dldF9vbmUoaGVh
ZGVycywgIkNvbnRlbnQtVHlwZSIpOworICAgIFN0cmluZyBjb250ZW50VHlwZSB7IHNvdXBfbWVz
c2FnZV9oZWFkZXJzX2dldF9vbmUoaGVhZGVycywgIkNvbnRlbnQtVHlwZSIpIH07CiAgICAgbV9y
ZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UobV9maXJzdFJlcXVlc3QudXJsKCksIGV4dHJhY3RN
SU1FVHlwZUZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpLAogICAgICAgICBzb3VwX21lc3NhZ2Vf
aGVhZGVyc19nZXRfY29udGVudF9sZW5ndGgoaGVhZGVycyksIGV4dHJhY3RDaGFyc2V0RnJvbU1l
ZGlhVHlwZShjb250ZW50VHlwZSkpOwogICAgIG1fcmVzcG9uc2UudXBkYXRlRnJvbVNvdXBNZXNz
YWdlSGVhZGVycyhoZWFkZXJzKTsKQEAgLTEzNzYsNyArMTM3Niw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrU291cDo6ZG93bmxvYWQoKQogICAgIGVsc2UKICAgICAgICAgb3V0cHV0U3RyZWFtID0g
YWRvcHRHUmVmKGdfZmlsZV9jcmVhdGUobV9kb3dubG9hZERlc3RpbmF0aW9uRmlsZS5nZXQoKSwg
R19GSUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAmZXJyb3Iub3V0UHRyKCkpKTsKICAgICBpZiAo
IW91dHB1dFN0cmVhbSkgewotICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKG1fcmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGRpZEZhaWxE
b3dubG9hZChkb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgU3RyaW5nOjpmcm9t
VVRGOChlcnJvci0+bWVzc2FnZSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4
NCw3ICsxMzg0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tTb3VwOjpkb3dubG9hZCgpCiAgICAg
bV9kb3dubG9hZEludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxlX25ld19mb3JfcGF0
aChpbnRlcm1lZGlhdGVQYXRoLmdldCgpKSk7CiAgICAgb3V0cHV0U3RyZWFtID0gYWRvcHRHUmVm
KGdfZmlsZV9yZXBsYWNlKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBudWxscHRy
LCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpOwog
ICAgIGlmICghb3V0cHV0U3RyZWFtKSB7Ci0gICAgICAgIGRpZEZhaWxEb3dubG9hZChkb3dubG9h
ZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgICAg
ZGlkRmFpbERvd25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBTdHJp
bmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIG1fZG93bmxvYWRPdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19PVVRQVVRfU1RSRUFNKG91
dHB1dFN0cmVhbS5sZWFrUmVmKCkpKTsKQEAgLTE0MTIsNyArMTQxMiw3IEBAIHZvaWQgTmV0d29y
a0RhdGFUYXNrU291cDo6d3JpdGVEb3dubG9hZENhbGxiYWNrKEdPdXRwdXRTdHJlYW0qIG91dHB1
dFN0cmVhbSwgR0FzCiAgICAgZ3NpemUgYnl0ZXNXcml0dGVuOwogICAgIGdfb3V0cHV0X3N0cmVh
bV93cml0ZV9hbGxfZmluaXNoKG91dHB1dFN0cmVhbSwgcmVzdWx0LCAmYnl0ZXNXcml0dGVuLCAm
ZXJyb3Iub3V0UHRyKCkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcih0YXNrLT5tX3Jlc3BvbnNlLCBlcnJvci0+
bWVzc2FnZSkpOworICAgICAgICB0YXNrLT5kaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5h
dGlvbkVycm9yKHRhc2stPm1fcmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3Nh
Z2UpKSk7CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRXcml0ZURvd25sb2FkKGJ5dGVzV3Jp
dHRlbik7CiB9CkBAIC0xNDQ0LDcgKzE0NDQsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6
OmRpZEZpbmlzaERvd25sb2FkKCkKICAgICBBU1NFUlQobV9kb3dubG9hZEludGVybWVkaWF0ZUZp
bGUpOwogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKICAgICBpZiAoIWdfZmlsZV9t
b3ZlKG1fZG93bmxvYWRJbnRlcm1lZGlhdGVGaWxlLmdldCgpLCBtX2Rvd25sb2FkRGVzdGluYXRp
b25GaWxlLmdldCgpLCBHX0ZJTEVfQ09QWV9PVkVSV1JJVEUsIG1fY2FuY2VsbGFibGUuZ2V0KCks
IG51bGxwdHIsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpIHsKLSAgICAgICAgZGlkRmFpbERv
d25sb2FkKGRvd25sb2FkRGVzdGluYXRpb25FcnJvcihtX3Jlc3BvbnNlLCBlcnJvci0+bWVzc2Fn
ZSkpOworICAgICAgICBkaWRGYWlsRG93bmxvYWQoZG93bmxvYWREZXN0aW5hdGlvbkVycm9yKG1f
cmVzcG9uc2UsIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE2ODgsMTAgKzE2ODgsMTAgQEAgdm9pZCBOZXR3b3JrRGF0YVRh
c2tTb3VwOjpkaWRHZXRGaWxlSW5mbyhHRmlsZUluZm8qIGluZm8pCiB7CiAgICAgbV9yZXNwb25z
ZS5zZXRVUkwobV9maXJzdFJlcXVlc3QudXJsKCkpOwogICAgIGlmIChnX2ZpbGVfaW5mb19nZXRf
ZmlsZV90eXBlKGluZm8pID09IEdfRklMRV9UWVBFX0RJUkVDVE9SWSkgewotICAgICAgICBtX3Jl
c3BvbnNlLnNldE1pbWVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICAgICAgbV9yZXNwb25zZS5zZXRN
aW1lVHlwZSgidGV4dC9odG1sIl9zKTsKICAgICAgICAgbV9yZXNwb25zZS5zZXRFeHBlY3RlZENv
bnRlbnRMZW5ndGgoLTEpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnN0IGdjaGFyKiBjb250
ZW50VHlwZSA9IGdfZmlsZV9pbmZvX2dldF9jb250ZW50X3R5cGUoaW5mbyk7CisgICAgICAgIFN0
cmluZyBjb250ZW50VHlwZSB7IGdfZmlsZV9pbmZvX2dldF9jb250ZW50X3R5cGUoaW5mbykgfTsK
ICAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKGNvbnRlbnRUeXBlKSk7CiAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFt
ZShleHRyYWN0Q2hhcnNldEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpKTsKICAgICAgICAgaWYg
KG1fcmVzcG9uc2UubWltZVR5cGUoKS5pc0VtcHR5KCkpCkBAIC0xNzE5LDcgKzE3MTksNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OnJlYWRGaWxlQ2FsbGJhY2soR0ZpbGUqIGZpbGUsIEdB
c3luY1Jlc3VsdCogcmVzdWx0LCBOZQogICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsK
ICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gaW5wdXRTdHJlYW0gPSBhZG9wdEdSZWYoR19JTlBV
VF9TVFJFQU0oZ19maWxlX3JlYWRfZmluaXNoKGZpbGUsIHJlc3VsdCwgJmVycm9yLm91dFB0cigp
KSkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFpbChSZXNvdXJjZUVycm9y
KGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+Y29kZSwgdGFzay0+bV9m
aXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7Cisg
ICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcgeyBnX3F1YXJrX3RvX3N0
cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3Qu
dXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7CiAgICAgZWxzZQogICAg
ICAgICB0YXNrLT5kaWRSZWFkRmlsZShXVEZNb3ZlKGlucHV0U3RyZWFtKSk7CiB9CkBAIC0xNzQz
LDcgKzE3NDMsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmVudW1lcmF0ZUZpbGVDaGls
ZHJlbkNhbGxiYWNrKEdGaWxlKiBmaWxlLCBHQXN5bmNSZXN1bAogICAgIEdVbmlxdWVPdXRQdHI8
R0Vycm9yPiBlcnJvcjsKICAgICBHUmVmUHRyPEdGaWxlRW51bWVyYXRvcj4gZW51bWVyYXRvciA9
IGFkb3B0R1JlZihnX2ZpbGVfZW51bWVyYXRlX2NoaWxkcmVuX2ZpbmlzaChmaWxlLCByZXN1bHQs
ICZlcnJvci5vdXRQdHIoKSkpOwogICAgIGlmIChlcnJvcikKLSAgICAgICAgdGFzay0+ZGlkRmFp
bChSZXNvdXJjZUVycm9yKGdfcXVhcmtfdG9fc3RyaW5nKGVycm9yLT5kb21haW4pLCBlcnJvci0+
Y29kZSwgdGFzay0+bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3It
Pm1lc3NhZ2UpKSk7CisgICAgICAgIHRhc2stPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihTdHJpbmcg
eyBnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSB9LCBlcnJvci0+Y29kZSwgdGFzay0+
bV9maXJzdFJlcXVlc3QudXJsKCksIFN0cmluZzo6ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKSk7
CiAgICAgZWxzZQogICAgICAgICB0YXNrLT5kaWRSZWFkRmlsZSh3ZWJraXREaXJlY3RvcnlJbnB1
dFN0cmVhbU5ldyhXVEZNb3ZlKGVudW1lcmF0b3IpLCB0YXNrLT5tX2ZpcnN0UmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc291cC9XZWJTb2NrZXRUYXNrU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3NvdXAvV2ViU29ja2V0VGFza1NvdXAuY3BwCmluZGV4IDRiY2U4ODg0OGM2NzMy
NjBhYTVjNjdiNjk0NGI3MTUyYjVkMTVkOWIuLjk3ZjA5ODU0Y2Y1ZTNlMjhmZTAyZWJjZjkyMjFi
MzVkYjJlMDlhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291
cC9XZWJTb2NrZXRUYXNrU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zb3VwL1dlYlNvY2tldFRhc2tTb3VwLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2Vi
U29ja2V0VGFzazo6ZGlkQ29ubmVjdChHUmVmUHRyPFNvdXBXZWJzb2NrZXRDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24pCiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29ubmVjdGlvbi5n
ZXQoKSwgImVycm9yIiwgcmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRpZFJlY2VpdmVFcnJv
ckNhbGxiYWNrKSwgdGhpcyk7CiAgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKG1fY29ubmVj
dGlvbi5nZXQoKSwgImNsb3NlZCIsIHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPihkaWRDbG9z
ZUNhbGxiYWNrKSwgdGhpcyk7CiAKLSAgICBtX2NoYW5uZWwuZGlkQ29ubmVjdChzb3VwX3dlYnNv
Y2tldF9jb25uZWN0aW9uX2dldF9wcm90b2NvbChtX2Nvbm5lY3Rpb24uZ2V0KCkpLCBhY2NlcHRl
ZEV4dGVuc2lvbnMoKSk7CisgICAgbV9jaGFubmVsLmRpZENvbm5lY3QoU3RyaW5nIHsgc291cF93
ZWJzb2NrZXRfY29ubmVjdGlvbl9nZXRfcHJvdG9jb2wobV9jb25uZWN0aW9uLmdldCgpKSB9LCBh
Y2NlcHRlZEV4dGVuc2lvbnMoKSk7CiAKICAgICBtX2NoYW5uZWwuZGlkUmVjZWl2ZUhhbmRzaGFr
ZVJlc3BvbnNlKG1faGFuZHNoYWtlTWVzc2FnZS5nZXQoKSk7CiAgICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9kYXRhKG1faGFuZHNoYWtlTWVzc2FnZS5nZXQoKSwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RD
b2Rlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0Q29k
ZXIuaAppbmRleCBhOWRkYTMwMGZkODZmYmE2OGY3MWZmZjVmZTU4YjZiZDAyMjZkNjMyLi4zYTg4
ZmMyNmFkMDQ5MDIwOTVlNmUzMzA1ZTk0ZTM2YzFmMzllMmY5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tSZW1vdGVPYmplY3RDb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS1JlbW90ZU9iamVjdENvZGVyLmgKQEAgLTQ0LDUg
KzQ0LDUgQEAgY2xhc3MgRGljdGlvbmFyeTsKIEBlbmQKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1i
b29sIG1ldGhvZFNpZ25hdHVyZXNBcmVDb21wYXRpYmxlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYpOworYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZShOU1N0cmluZyAqLCBO
U1N0cmluZyAqKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS1JlbW90ZU9iamVjdENvZGVyLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLUmVtb3RlT2JqZWN0Q29kZXIubW0KaW5kZXggYTliZWM1ODczZWQ0YWM0ZWFkNGZjMmU0MzU0
OTZhNWE5NDJkNGUwNC4uMTU3M2RmMmI3MmM2MDg3NjI4ZTk3ZDRjM2RkY2VmOTQyZDhjZDNlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2JqZWN0
Q29kZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLUmVtb3RlT2Jq
ZWN0Q29kZXIubW0KQEAgLTU0LDI1ICs1NCwyMiBAQCBzdGF0aWMgUmVmUHRyPEFQSTo6RGljdGlv
bmFyeT4gY3JlYXRlRW5jb2RlZE9iamVjdChXS1JlbW90ZU9iamVjdEVuY29kZXIgKiwgaWQpOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBtZXRob2RTaWduYXR1cmVzQXJlQ29tcGF0aWJs
ZShjb25zdCBTdHJpbmcmIHdpcmUsIGNvbnN0IFN0cmluZyYgbG9jYWwpCitib29sIG1ldGhvZFNp
Z25hdHVyZXNBcmVDb21wYXRpYmxlKE5TU3RyaW5nICp3aXJlLCBOU1N0cmluZyAqbG9jYWwpCiB7
Ci0gICAgaWYgKGxvY2FsID09IHdpcmUpCisgICAgaWYgKFtsb2NhbCBpc0VxdWFsVG9TdHJpbmc6
d2lyZV0gPT0gIE5TT3JkZXJlZFNhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYg
KGxvY2FsLmxlbmd0aCgpICE9IHdpcmUubGVuZ3RoKCkpCisgICAgaWYgKGxvY2FsLmxlbmd0aCAh
PSB3aXJlLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdW5zaWduZWQgbGVu
Z3RoID0gbG9jYWwubGVuZ3RoKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgbG9jYWxUeXBlID0gbG9jYWxbaV07Ci0gICAgICAgIGNo
YXIgd2lyZVR5cGUgPSB3aXJlW2ldOwotCi0gICAgICAgIGlmIChsb2NhbFR5cGUgIT0gd2lyZVR5
cGUpIHsKLSAgICAgICAgICAgIC8vIGBib29sYCBhbmQgYHNpZ25lZCBjaGFyYCBhcmUgaW50ZXJj
aGFuZ2VhYmxlLgotICAgICAgICAgICAgaWYgKHN0cmNocigiQmMiLCBsb2NhbFR5cGUpICYmIHN0
cmNocigiQmMiLCB3aXJlVHlwZSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgYXV0
byBtYXBDaGFyYWN0ZXIgPSBbXSh1bmljaGFyIGMpIC0+IHVuaWNoYXIgeworICAgICAgICAvLyBg
Ym9vbGAgYW5kIGBzaWduZWQgY2hhcmAgYXJlIGludGVyY2hhbmdlYWJsZS4KKyAgICAgICAgcmV0
dXJuIGMgPT0gJ0InID8gJ2MnIDogYzsKKyAgICB9OworICAgIE5TVUludGVnZXIgbGVuZ3RoID0g
bG9jYWwubGVuZ3RoOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGxlbmd0aDsgaSsr
KSB7CisgICAgICAgIGlmIChtYXBDaGFyYWN0ZXIoW2xvY2FsIGNoYXJhY3RlckF0SW5kZXg6aV0p
ICE9IG1hcENoYXJhY3Rlcihbd2lyZSBjaGFyYWN0ZXJBdEluZGV4OmldKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTk3MCw5ICs5NjcsOCBAQCBzdGF0aWMgTlNJbnZvY2F0aW9uICpkZWNvZGVJbnZvY2F0aW9uKFdL
UmVtb3RlT2JqZWN0RGVjb2RlciAqZGVjb2RlcikKICAgICBpZiAoIXR5cGVTaWduYXR1cmUpCiAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVyYXRpb25FeGNl
cHRpb24gZm9ybWF0OkAiSW52b2NhdGlvbiBoYWQgbm8gdHlwZSBzaWduYXR1cmUiXTsKIAotICAg
IFN0cmluZyByZW1vdGVNZXRob2RTaWduYXR1cmUgPSB0eXBlU2lnbmF0dXJlLlVURjhTdHJpbmc7
Ci0gICAgU3RyaW5nIGxvY2FsTWV0aG9kU2lnbmF0dXJlID0gW2ludm9jYXRpb24gbWV0aG9kU2ln
bmF0dXJlXS5fdHlwZVN0cmluZy5VVEY4U3RyaW5nOwotICAgIGlmICghV2ViS2l0OjptZXRob2RT
aWduYXR1cmVzQXJlQ29tcGF0aWJsZShyZW1vdGVNZXRob2RTaWduYXR1cmUsIGxvY2FsTWV0aG9k
U2lnbmF0dXJlKSkKKyAgICBOU1N0cmluZyAqbG9jYWxNZXRob2RTaWduYXR1cmUgPSBbaW52b2Nh
dGlvbiBtZXRob2RTaWduYXR1cmVdLl90eXBlU3RyaW5nOworICAgIGlmICghV2ViS2l0OjptZXRo
b2RTaWduYXR1cmVzQXJlQ29tcGF0aWJsZSh0eXBlU2lnbmF0dXJlLCBsb2NhbE1ldGhvZFNpZ25h
dHVyZSkpCiAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRVbmFyY2hpdmVPcGVy
YXRpb25FeGNlcHRpb24gZm9ybWF0OkAiTG9jYWwgYW5kIHJlbW90ZSBtZXRob2Qgc2lnbmF0dXJl
cyBhcmUgbm90IGNvbXBhdGlibGUgZm9yIG1ldGhvZCBcIiVzXCIiLCBzZWxlY3RvciA/IHNlbF9n
ZXROYW1lKHNlbGVjdG9yKSA6ICIobm8gc2VsZWN0b3IpIl07CiAKICAgICBpZiAoaXNSZXBseUJs
b2NrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVt
b3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggYWEzMTk0OWMwYzU0NGVlOTZiMWE0ZmRhMDEz
MGQ1ZjFiNDYxZDA2Yi4uNTk2OTdlMjYyZDk5M2Y1Mjk4YmQzOGUxZmMzZGUzZDE2OTk4Y2MwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9fV0tSZW1v
dGVPYmplY3RSZWdpc3RyeS5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIC0gKFdlYktpdDo6UmVtb3Rl
T2JqZWN0UmVnaXN0cnkmKXJlbW90ZU9iamVjdFJlZ2lzdHJ5CiAgICAgcmV0dXJuICpfcmVtb3Rl
T2JqZWN0UmVnaXN0cnk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcmVwbHlCbG9ja1NpZ25hdHVyZShQ
cm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBibG9ja0luZGV4KQor
c3RhdGljIE5TU3RyaW5nICpyZXBseUJsb2NrU2lnbmF0dXJlKFByb3RvY29sICpwcm90b2NvbCwg
U0VMIHNlbGVjdG9yLCBOU1VJbnRlZ2VyIGJsb2NrSW5kZXgpCiB7CiAgICAgLy8gUmVxdWlyZWQs
IG5vbi1pbmhlcml0ZWQgbWV0aG9kOgogICAgIGNvbnN0IGNoYXIqIG1ldGhvZFR5cGVFbmNvZGlu
ZyA9IF9wcm90b2NvbF9nZXRNZXRob2RUeXBlRW5jb2RpbmcocHJvdG9jb2wsIHNlbGVjdG9yLCB0
cnVlLCB0cnVlKTsKQEAgLTE5NywxMiArMTk3LDEyIEBAIHN0YXRpYyBTdHJpbmcgcmVwbHlCbG9j
a1NpZ25hdHVyZShQcm90b2NvbCAqcHJvdG9jb2wsIFNFTCBzZWxlY3RvciwgTlNVSW50ZWdlciBi
CiAKICAgICBBU1NFUlQobWV0aG9kVHlwZUVuY29kaW5nKTsKICAgICBpZiAoIW1ldGhvZFR5cGVF
bmNvZGluZykKLSAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IE5TTWV0aG9kU2lnbmF0dXJlICp0YXJnZXRNZXRob2RTaWduYXR1cmUgPSBbTlNNZXRob2RTaWdu
YXR1cmUgc2lnbmF0dXJlV2l0aE9iakNUeXBlczptZXRob2RUeXBlRW5jb2RpbmddOwogICAgIEFT
U0VSVCh0YXJnZXRNZXRob2RTaWduYXR1cmUpOwogICAgIGlmICghdGFyZ2V0TWV0aG9kU2lnbmF0
dXJlKQotICAgICAgICByZXR1cm4geyB9OworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0
dXJuIFt0YXJnZXRNZXRob2RTaWduYXR1cmUgX3NpZ25hdHVyZUZvckJsb2NrQXRBcmd1bWVudElu
ZGV4OmJsb2NrSW5kZXhdLl90eXBlU3RyaW5nOwogfQpAQCAtMjQ3LDE3ICsyNDcsMTcgQEAgLSAo
dm9pZClfaW52b2tlTWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24m
KXJlbW90ZU9iamVjdEludm9jYXQKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFN0cmluZyB3aXJlQmxvY2tTaWduYXR1cmUgPSBbTlNNZXRob2RTaWduYXR1cmUgc2ln
bmF0dXJlV2l0aE9iakNUeXBlczpyZXBseUluZm8tPmJsb2NrU2lnbmF0dXJlLnV0ZjgoKS5kYXRh
KCldLl90eXBlU3RyaW5nOwotICAgICAgICBTdHJpbmcgZXhwZWN0ZWRCbG9ja1NpZ25hdHVyZSA9
IHJlcGx5QmxvY2tTaWduYXR1cmUoW2ludGVyZmFjZSBwcm90b2NvbF0sIGludm9jYXRpb24uc2Vs
ZWN0b3IsIGkpOworICAgICAgICBOU1N0cmluZyAqd2lyZUJsb2NrU2lnbmF0dXJlID0gW05TTWV0
aG9kU2lnbmF0dXJlIHNpZ25hdHVyZVdpdGhPYmpDVHlwZXM6cmVwbHlJbmZvLT5ibG9ja1NpZ25h
dHVyZS51dGY4KCkuZGF0YSgpXS5fdHlwZVN0cmluZzsKKyAgICAgICAgTlNTdHJpbmcgKmV4cGVj
dGVkQmxvY2tTaWduYXR1cmUgPSByZXBseUJsb2NrU2lnbmF0dXJlKFtpbnRlcmZhY2UgcHJvdG9j
b2xdLCBpbnZvY2F0aW9uLnNlbGVjdG9yLCBpKTsKIAotICAgICAgICBpZiAoZXhwZWN0ZWRCbG9j
a1NpZ25hdHVyZS5pc051bGwoKSkgeworICAgICAgICBpZiAoIWV4cGVjdGVkQmxvY2tTaWduYXR1
cmUpIHsKICAgICAgICAgICAgIE5TTG9nKEAiX2ludm9rZU1ldGhvZDogRmFpbGVkIHRvIHZhbGlk
YXRlIHJlcGx5IGJsb2NrIHNpZ25hdHVyZTogY291bGQgbm90IGZpbmQgbG9jYWwgc2lnbmF0dXJl
Iik7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghV2ViS2l0OjptZXRob2RTaWduYXR1cmVzQXJl
Q29tcGF0aWJsZSh3aXJlQmxvY2tTaWduYXR1cmUsIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUpKSB7
Ci0gICAgICAgICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSBy
ZXBseSBibG9jayBzaWduYXR1cmU6ICVzICE9ICVzIiwgd2lyZUJsb2NrU2lnbmF0dXJlLnV0Zjgo
KS5kYXRhKCksIGV4cGVjdGVkQmxvY2tTaWduYXR1cmUudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBOU0xvZyhAIl9pbnZva2VNZXRob2Q6IEZhaWxlZCB0byB2YWxpZGF0ZSByZXBseSBibG9j
ayBzaWduYXR1cmU6ICVAICE9ICVAIiwgd2lyZUJsb2NrU2lnbmF0dXJlLCBleHBlY3RlZEJsb2Nr
U2lnbmF0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMjk4LDcgQEAgLSAodm9pZClfaW52b2tl
TWV0aG9kOihjb25zdCBXZWJLaXQ6OlJlbW90ZU9iamVjdEludm9jYXRpb24mKXJlbW90ZU9iamVj
dEludm9jYXQKICAgICAgICAgfTsKIAogICAgICAgICBSZWZQdHI8UmVwbHlCbG9ja0NhbGxDaGVj
a2VyPiBjaGVja2VyID0gUmVwbHlCbG9ja0NhbGxDaGVja2VyOjpjcmVhdGUoc2VsZiwgcmVwbHlJ
RCk7Ci0gICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJkaW5nQ2Fw
dHVyZUJsb2NrKHdpcmVCbG9ja1NpZ25hdHVyZS51dGY4KCkuZGF0YSgpLCBbaW50ZXJmYWNlLCBy
ZW1vdGVPYmplY3RSZWdpc3RyeSwgcmVwbHlJRCwgY2hlY2tlcl0oTlNJbnZvY2F0aW9uICppbnZv
Y2F0aW9uKSB7CisgICAgICAgIGlkIHJlcGx5QmxvY2sgPSBfX05TTWFrZVNwZWNpYWxGb3J3YXJk
aW5nQ2FwdHVyZUJsb2NrKFt3aXJlQmxvY2tTaWduYXR1cmUgVVRGOFN0cmluZ10sIFtpbnRlcmZh
Y2UsIHJlbW90ZU9iamVjdFJlZ2lzdHJ5LCByZXBseUlELCBjaGVja2VyXShOU0ludm9jYXRpb24g
Kmludm9jYXRpb24pIHsKICAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tXS1Jl
bW90ZU9iamVjdEVuY29kZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgICAgIFtlbmNvZGVyIGVu
Y29kZU9iamVjdDppbnZvY2F0aW9uIGZvcktleTppbnZvY2F0aW9uS2V5XTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2dsaWIvV2ViS2l0VVJJUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAppbmRleCAx
NDQ4ZGY5ZTlkZWFjYmU0YTY5NDFkNmQxYWNhZTE2OTY1YjJkMzc2Li5mZjIyMWNhNDlhM2M2Mjhk
MGRiZjZiMDkyZGIyN2IwNDhhYTViMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvZ2xpYi9XZWJLaXRVUklSZXF1ZXN0LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg
d2Via2l0X3VyaV9yZXF1ZXN0X3NldF91cmkoV2ViS2l0VVJJUmVxdWVzdCogcmVxdWVzdCwgY29u
c3QgY2hhciogdXJpKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1VSSV9SRVFVRVNU
KHJlcXVlc3QpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHVyaSk7CiAKLSAgICBVUkwgdXJsIHsg
dXJpIH07CisgICAgVVJMIHVybCB7IFN0cmluZyB7IHVyaSB9IH07CiAgICAgaWYgKHVybCA9PSBy
ZXF1ZXN0LT5wcml2LT5yZXNvdXJjZVJlcXVlc3QudXJsKCkpCiAgICAgICAgIHJldHVybjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvZ3RrL1dlYkVycm9yc0d0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3RrLmNwcAppbmRleCA2YTBkZjU0YzM3
NDQ1ZGY2NGNjNWQzYjRiYjYxMGVjMWYzYzA2NWYwLi4zZjlmZTY1NzM2M2I5YzI4NWNkNGJiMDEx
ZmE3NjQ4NThkMGIyYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2Vi
RXJyb3JzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9ndGsvV2ViRXJyb3JzR3Rr
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBAIFJlc291cmNlRXJyb3IgcHJpbnRFcnJvcihjb25zdCBV
UkwmIGZhaWxpbmdVUkwsIGNvbnN0IFN0cmluZyYgbG9jYWxpemVkRGVzY3JpcHRpCiAKIFJlc291
cmNlRXJyb3IgcHJpbnRlck5vdEZvdW5kRXJyb3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogewot
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JEb21h
aW4oKSwgQVBJOjpFcnJvcjo6UHJpbnQ6OlByaW50ZXJOb3RGb3VuZCwgZmFpbGluZ1VSTCwgXygi
UHJpbnRlciBub3QgZm91bmQiKSk7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJv
cjo6d2ViS2l0UHJpbnRFcnJvckRvbWFpbigpLCBBUEk6OkVycm9yOjpQcmludDo6UHJpbnRlck5v
dEZvdW5kLCBmYWlsaW5nVVJMLCBTdHJpbmc6OmZyb21VVEY4KF8oIlByaW50ZXIgbm90IGZvdW5k
IikpKTsKIH0KIAogUmVzb3VyY2VFcnJvciBpbnZhbGlkUGFnZVJhbmdlVG9QcmludChjb25zdCBV
UkwmIGZhaWxpbmdVUkwpCiB7Ci0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6
d2ViS2l0UHJpbnRFcnJvckRvbWFpbigpLCBBUEk6OkVycm9yOjpQcmludDo6SW52YWxpZFBhZ2VS
YW5nZSwgZmFpbGluZ1VSTCwgXygiSW52YWxpZCBwYWdlIHJhbmdlIikpOworICAgIHJldHVybiBS
ZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFByaW50RXJyb3JEb21haW4oKSwgQVBJOjpF
cnJvcjo6UHJpbnQ6OkludmFsaWRQYWdlUmFuZ2UsIGZhaWxpbmdVUkwsIFN0cmluZzo6ZnJvbVVU
RjgoXygiSW52YWxpZCBwYWdlIHJhbmdlIikpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRBdXRv
bWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOGNiYmVkYzNiMjk0YmQ3ZTI1NzIzOWJiY2I1
ODMzMzQ3ZDc4NmU2Mi4uNzAwMjZmZDI4NjQzMmE5ZjM4NTRhNDRhMzcwMmE5NjliMjIyMDk1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0QXV0b21h
dGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdEF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtMzc4LDcgKzM3OCw3IEBAIFN0cmluZyB3ZWJr
aXRBdXRvbWF0aW9uU2Vzc2lvbkdldEJyb3dzZXJOYW1lKFdlYktpdEF1dG9tYXRpb25TZXNzaW9u
KiBzZXNzaW9uKQogICAgIGlmIChzZXNzaW9uLT5wcml2LT5hcHBsaWNhdGlvbkluZm8pCiAgICAg
ICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF9hcHBsaWNhdGlvbl9pbmZvX2dldF9u
YW1lKHNlc3Npb24tPnByaXYtPmFwcGxpY2F0aW9uSW5mbykpOwogCi0gICAgcmV0dXJuIGdfZ2V0
X3ByZ25hbWUoKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChnX2dldF9wcmduYW1lKCkp
OwogfQogCiBTdHJpbmcgd2Via2l0QXV0b21hdGlvblNlc3Npb25HZXRCcm93c2VyVmVyc2lvbihX
ZWJLaXRBdXRvbWF0aW9uU2Vzc2lvbiogc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdENyZWRlbnRpYWwuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKaW5kZXggZjgyNmVlMTg5
YTU0OTNlOWMyNGQ4NDViYjVlNWJlNTNkOWM3Zjg2OS4uMGRhYTVjOWJkNWE3N2QyNGVlMjA4NjU1
MmQxOTZmZWFlMzJjYzFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0Q3JlZGVudGlhbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBXZWJLaXRD
cmVkZW50aWFsKiB3ZWJraXRfY3JlZGVudGlhbF9uZXdfZm9yX2NlcnRpZmljYXRlX3Bpbihjb25z
dCBnY2hhciogcGluLCBXZQogICAgICAgICBwZXJzaXN0ZW5jZSA9IFdFQktJVF9DUkVERU5USUFM
X1BFUlNJU1RFTkNFX0ZPUl9TRVNTSU9OOwogICAgIH0KIAotICAgIHJldHVybiB3ZWJraXRDcmVk
ZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoIiIsIFN0cmluZzo6ZnJvbVVURjgocGlu
KSwgdG9XZWJDb3JlQ3JlZGVudGlhbFBlcnNpc3RlbmNlKHBlcnNpc3RlbmNlKSkpOworICAgIHJl
dHVybiB3ZWJraXRDcmVkZW50aWFsQ3JlYXRlKFdlYkNvcmU6OkNyZWRlbnRpYWwoZW1wdHlTdHJp
bmcoKSwgU3RyaW5nOjpmcm9tVVRGOChwaW4pLCB0b1dlYkNvcmVDcmVkZW50aWFsUGVyc2lzdGVu
Y2UocGVyc2lzdGVuY2UpKSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0SW5qZWN0ZWRCdW5kbGVDbGllbnQuY3Bw
CmluZGV4IDkyNjJhODRkZWNlMjViZjBiZGY1YzU5YjQ4ZDAwMjU4NTJmMzZiYTcuLjNmZmZjOGZi
OWUyN2I2NmJiMjYwYzkwZjQxMWZkYjQ3Y2EzMjE4NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdEluamVjdGVkQnVuZGxlQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRJbmplY3RlZEJ1bmRsZUNs
aWVudC5jcHAKQEAgLTEzOSwxMSArMTM5LDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJr
aXRXZWJWaWV3UmVtb3ZlTG9hZGluZ1dlYlJlc291cmNlKHdlYlZpZXcsIHJlc291cmNlSWRlbnRp
Zmllci0+dmFsdWUoKSk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB9IGVsc2UgaWYgKGdf
c3RyX2VxdWFsKG1lc3NhZ2VOYW1lLCAiRGlkR2V0U25hcHNob3QiKSkgewotICAgICAgICAgICAg
QVBJOjpVSW50NjQqIGNhbGxiYWNrSUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3Nh
Z2UuZ2V0KCJDYWxsYmFja0lEIikpOworICAgICAgICAgICAgQVBJOjpVSW50NjQqIGNhbGxiYWNr
SUQgPSBzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIl9z
KSk7CiAgICAgICAgICAgICBpZiAoIWNhbGxiYWNrSUQpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJJbWFnZSo+
KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdCIpKTsKKyAgICAgICAgICAgIFdlYkltYWdlKiBpbWFnZSA9
IHN0YXRpY19jYXN0PFdlYkltYWdlKj4obWVzc2FnZS5nZXQoIlNuYXBzaG90Il9zKSk7CiAgICAg
ICAgICAgICB3ZWJLaXRXZWJWaWV3RGlkUmVjZWl2ZVNuYXBzaG90KHdlYlZpZXcsIGNhbGxiYWNr
SUQtPnZhbHVlKCksIGltYWdlKTsKICNlbmRpZgogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0UHJvdG9jb2xIYW5kbGVyLmNw
cAppbmRleCA5ZmM0ZDMxOTkwMzYwMzlkNDhhZTdiYjJhMzJhMDljZmY1ODMwNjY2Li43NTMyZmY1
YmVkYmJkNDgzNGVlN2MxMTFjZmVkYjlhN2E4NGM2MDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFByb3RvY29sSGFuZGxlci5jcHAK
QEAgLTk0LDcgKzk0LDcgQEAgV2ViS2l0UHJvdG9jb2xIYW5kbGVyOjpXZWJLaXRQcm90b2NvbEhh
bmRsZXIoV2ViS2l0V2ViQ29udGV4dCogY29udGV4dCkKIAogdm9pZCBXZWJLaXRQcm90b2NvbEhh
bmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCkKIHsK
LSAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3Rf
Z2V0X3VyaShyZXF1ZXN0KSk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwoU3RyaW5nIHsgd2Vi
a2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpIH0pOwogICAgIGlmIChyZXF1
ZXN0VVJMLmhvc3QoKSA9PSAiZ3B1IikgewogICAgICAgICBoYW5kbGVHUFUocmVxdWVzdCk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9n
bGliL1dlYktpdFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFNldHRpbmdzLmNwcAppbmRleCA2M2MwZTVkYjRlMGRmY2E4ZmNhNzQ3MThiMmIyNjY0
YmMwYTliYjFmLi5iMzViZGM1ZTdjYjhlY2M4ODhjNGE3ZWE5NWExZGMwNDljMjZiZWViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRTZXR0aW5ncy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0U2V0dGluZ3Mu
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBf
V2ViS2l0U2V0dGluZ3NQcml2YXRlIHsKICAgICBfV2ViS2l0U2V0dGluZ3NQcml2YXRlKCkKLSAg
ICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2Vi
S2l0Mi4iLCAiV2ViS2l0Mi4iKSkKKyAgICAgICAgOiBwcmVmZXJlbmNlcyhXZWJQcmVmZXJlbmNl
czo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcykpCiAgICAgewog
ICAgICAgICBkZWZhdWx0Rm9udEZhbWlseSA9IHByZWZlcmVuY2VzLT5zdGFuZGFyZEZvbnRGYW1p
bHkoKS51dGY4KCk7CiAgICAgICAgIG1vbm9zcGFjZUZvbnRGYW1pbHkgPSBwcmVmZXJlbmNlcy0+
Zml4ZWRGb250RmFtaWx5KCkudXRmOCgpOwpAQCAtMzA4OSw3ICszMDg5LDcgQEAgdm9pZCB3ZWJr
aXRfc2V0dGluZ3Nfc2V0X3VzZXJfYWdlbnQoV2ViS2l0U2V0dGluZ3MqIHNldHRpbmdzLCBjb25z
dCBjaGFyKiB1c2VyQWcKICAgICAgICAgdXNlckFnZW50U3RyaW5nID0gU3RyaW5nOjpmcm9tVVRG
OCh1c2VyQWdlbnQpOwogICAgICAgICBnX3JldHVybl9pZl9mYWlsKFdlYkNvcmU6OmlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSh1c2VyQWdlbnRTdHJpbmcpKTsKICAgICB9IGVsc2UKLSAgICAg
ICAgdXNlckFnZW50U3RyaW5nID0gV2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnQoIiIpOworICAg
ICAgICB1c2VyQWdlbnRTdHJpbmcgPSBXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudChlbXB0eVN0
cmluZygpKTsKIAogICAgIENTdHJpbmcgbmV3VXNlckFnZW50ID0gdXNlckFnZW50U3RyaW5nLnV0
ZjgoKTsKICAgICBpZiAobmV3VXNlckFnZW50ID09IHByaXYtPnVzZXJBZ2VudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFVSSVNjaGVtZVJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKaW5kZXggYzkxYzRkOGU4ZjQ0M2IyODY3OTZlMjc3ZTI0N2QyYWJlOGJjOGJk
NC4uMGMzZTJiN2VhOGNlMjA5NTY4N2RjMzllY2U4YzQ3NTc3YTA4ZjExOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1lUmVxdWVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0VVJJU2NoZW1l
UmVxdWVzdC5jcHAKQEAgLTIyMiwxNiArMjIyLDE2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFVSSVNj
aGVtZVJlcXVlc3RSZWFkQ2FsbGJhY2soR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgR0FzeW5j
CiAKICAgICBXZWJLaXRVUklTY2hlbWVSZXNwb25zZSogcmVzcCA9IHByaXYtPnJlc3BvbnNlLmdl
dCgpOwogICAgIGlmICghcHJpdi0+Ynl0ZXNSZWFkKSB7Ci0gICAgICAgIENTdHJpbmcgY29udGVu
dFR5cGUgPSB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldENvbnRlbnRUeXBlKHJlc3ApOwotICAg
ICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHByaXYtPnRhc2stPnJlcXVlc3QoKS51cmwo
KSwgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZS5kYXRhKCkpLCB3ZWJL
aXRVUklTY2hlbWVSZXNwb25zZUdldFN0cmVhbUxlbmd0aChyZXNwKSwgZW1wdHlTdHJpbmcoKSk7
Ci0gICAgICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9t
TWVkaWFUeXBlKGNvbnRlbnRUeXBlLmRhdGEoKSkpOworICAgICAgICBTdHJpbmcgY29udGVudFR5
cGUgeyB3ZWJLaXRVUklTY2hlbWVSZXNwb25zZUdldENvbnRlbnRUeXBlKHJlc3ApLmRhdGEoKSB9
OworICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKHByaXYtPnRhc2stPnJlcXVlc3Qo
KS51cmwoKSwgZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSksIHdlYktp
dFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RyZWFtTGVuZ3RoKHJlc3ApLCBlbXB0eVN0cmluZygpKTsK
KyAgICAgICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUoY29udGVudFR5cGUpKTsKICAgICAgICAgY29uc3QgQ1N0cmluZyYgc3RhdHVzTWVz
c2FnZSA9IHdlYktpdFVSSVNjaGVtZVJlc3BvbnNlR2V0U3RhdHVzTWVzc2FnZShyZXNwKTsKICAg
ICAgICAgaWYgKHN0YXR1c01lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHJlc3BvbnNl
LnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgICAgICAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzVGV4dCgiT0siX3MpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzcG9uc2Uu
c2V0SFRUUFN0YXR1c0NvZGUod2ViS2l0VVJJU2NoZW1lUmVzcG9uc2VHZXRTdGF0dXNDb2RlKHJl
c3ApKTsKLSAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KHN0YXR1c01lc3Nh
Z2UuZGF0YSgpKTsKKyAgICAgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KFN0cmlu
ZyB7IHN0YXR1c01lc3NhZ2UuZGF0YSgpIH0pOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNw
b25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlc3BvbnNlLnNldE1pbWVU
eXBlKE1JTUVUeXBlUmVnaXN0cnk6Om1pbWVUeXBlRm9yUGF0aChyZXNwb25zZS51cmwoKS5wYXRo
KCkudG9TdHJpbmcoKSkpOwpAQCAtMzExLDYgKzMxMSw2IEBAIHZvaWQgd2Via2l0X3VyaV9zY2hl
bWVfcmVxdWVzdF9maW5pc2hfZXJyb3IoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCogcmVxdWVzdCwg
R0VyCiAKICAgICBXZWJLaXRVUklTY2hlbWVSZXF1ZXN0UHJpdmF0ZSogcHJpdiA9IHJlcXVlc3Qt
PnByaXY7CiAgICAgcHJpdi0+cmVzcG9uc2UgPSBudWxscHRyOwotICAgIFJlc291cmNlRXJyb3Ig
cmVzb3VyY2VFcnJvcihnX3F1YXJrX3RvX3N0cmluZyhlcnJvci0+ZG9tYWluKSwgdG9XZWJDb3Jl
RXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBSZXNvdXJjZUVycm9yIHJlc291cmNlRXJy
b3IoU3RyaW5nIHsgZ19xdWFya190b19zdHJpbmcoZXJyb3ItPmRvbWFpbikgfSwgdG9XZWJDb3Jl
RXJyb3IoZXJyb3ItPmNvZGUpLCBwcml2LT50YXNrLT5yZXF1ZXN0KCkudXJsKCksIFN0cmluZzo6
ZnJvbVVURjgoZXJyb3ItPm1lc3NhZ2UpKTsKICAgICBwcml2LT50YXNrLT5kaWRDb21wbGV0ZShy
ZXNvdXJjZUVycm9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9ndGsvRHJhZ1NvdXJjZUd0azQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0
ay9EcmFnU291cmNlR3RrNC5jcHAKaW5kZXggMDlmZWIxNGJlMDE2MjVkZmRhZTAzYjUyMmE4YTEy
ZjExZGZjYWQwYi4uMmE3Y2JmOWY0MWY5ZjFjODE5YmVhZjIyY2FkN2EwOWVkMWEzZDIxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9EcmFnU291cmNlR3RrNC5j
cHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBEcmFnU291cmNlOjpiZWdpbihTZWxlY3Rpb25EYXRh
JiYgc2VsZWN0aW9uRGF0YSwgT3B0aW9uU2V0PERyYWdPcGVyYXRpb24+IG8KIAogICAgIGlmICht
X3NlbGVjdGlvbkRhdGEtPmhhc0N1c3RvbURhdGEoKSkgewogICAgICAgICBHUmVmUHRyPEdCeXRl
cz4gYnl0ZXMgPSBtX3NlbGVjdGlvbkRhdGEtPmN1c3RvbURhdGEoKS0+Y3JlYXRlR0J5dGVzKCk7
Ci0gICAgICAgIHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9i
eXRlcyhQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLCBieXRlcy5nZXQoKSkpOworICAg
ICAgICBwcm92aWRlcnMuYXBwZW5kKGdka19jb250ZW50X3Byb3ZpZGVyX25ld19mb3JfYnl0ZXMo
UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCksIGJ5dGVzLmdldCgp
KSk7CiAgICAgfQogCiAgICAgYXV0byogc3VyZmFjZSA9IGd0a19uYXRpdmVfZ2V0X3N1cmZhY2Uo
Z3RrX3dpZGdldF9nZXRfbmF0aXZlKG1fd2ViVmlldykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0R3RrMy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGszLmNwcAppbmRleCBmNWFmMDkyYmIyMjU4
MjA1OTZjYjAyNTMwZDBkYjBiNzY5NDQwMzI5Li4xZjUyMmRlOTZiYWQzYmEwMjU5MGNlM2VmZDEw
YTEyODZjYjcyNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L0Ryb3BUYXJnZXRHdGszLmNwcApAQCAtNTEsNyArNTEsNyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFy
Z2V0KEd0a1dpZGdldCogd2ViVmlldykKICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJn
ZXRzKGxpc3QuZ2V0KCksIERyb3BUYXJnZXRUeXBlOjpVUklMaXN0KTsKICAgICBndGtfdGFyZ2V0
X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVU
U0NBUEVfVVJMIiksIDAsIERyb3BUYXJnZXRUeXBlOjpOZXRzY2FwZVVSTCk7CiAgICAgZ3RrX3Rh
cmdldF9saXN0X2FkZChsaXN0LmdldCgpLCBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygi
YXBwbGljYXRpb24vdm5kLndlYmtpdGd0ay5zbWFydHBhc3RlIiksIDAsIERyb3BUYXJnZXRUeXBl
OjpTbWFydFBhc3RlKTsKLSAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIGdka19h
dG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkp
LCAwLCBEcm9wVGFyZ2V0VHlwZTo6Q3VzdG9tKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxp
c3QuZ2V0KCksIGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKFBhc3RlYm9hcmRDdXN0b21E
YXRhOjpndGtUeXBlKCkuY2hhcmFjdGVycygpKSwgMCwgRHJvcFRhcmdldFR5cGU6OkN1c3RvbSk7
CiAgICAgZ3RrX2RyYWdfZGVzdF9zZXQobV93ZWJWaWV3LCBzdGF0aWNfY2FzdDxHdGtEZXN0RGVm
YXVsdHM+KDApLCBudWxscHRyLCAwLAogICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFnQWN0aW9u
PihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJTkspKTsK
ICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRfbGlzdChtX3dlYlZpZXcsIGxpc3QuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9Ecm9wVGFyZ2V0
R3RrNC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0
LmNwcAppbmRleCBhYmJhY2EyOWM3NDExMWRjYzA5MzU3Mzk0OTNiOTNjNzQ0NTI1MGQ4Li43NDc5
MTQyYjlmMTU4YmMzMmZjYTRkODFmYmI1Zjk2ZjUyZWJhM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL0Ryb3BUYXJnZXRHdGs0LmNwcApAQCAtNDksNyArNDks
NyBAQCBEcm9wVGFyZ2V0OjpEcm9wVGFyZ2V0KEd0a1dpZGdldCogd2ViVmlldykKICAgICBnZGtf
Y29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgInRl
eHQvdXJpLWxpc3QiKTsKICAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVf
dHlwZShmb3JtYXRzQnVpbGRlciwgIl9ORVRTQ0FQRV9VUkwiKTsKICAgICBnZGtfY29udGVudF9m
b3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlwZShmb3JtYXRzQnVpbGRlciwgImFwcGxpY2F0aW9u
L3ZuZC53ZWJraXRndGsuc21hcnRwYXN0ZSIpOwotICAgIGdka19jb250ZW50X2Zvcm1hdHNfYnVp
bGRlcl9hZGRfbWltZV90eXBlKGZvcm1hdHNCdWlsZGVyLCBQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6
Z3RrVHlwZSgpKTsKKyAgICBnZGtfY29udGVudF9mb3JtYXRzX2J1aWxkZXJfYWRkX21pbWVfdHlw
ZShmb3JtYXRzQnVpbGRlciwgUGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0
ZXJzKCkpOwogICAgIGF1dG8qIHRhcmdldCA9IGd0a19kcm9wX3RhcmdldF9hc3luY19uZXcoZ2Rr
X2NvbnRlbnRfZm9ybWF0c19idWlsZGVyX2ZyZWVfdG9fZm9ybWF0cyhmb3JtYXRzQnVpbGRlciks
CiAgICAgICAgIHN0YXRpY19jYXN0PEdka0RyYWdBY3Rpb24+KEdES19BQ1RJT05fQ09QWSB8IEdE
S19BQ1RJT05fTU9WRSB8IEdES19BQ1RJT05fTElOSykpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
dGFyZ2V0LCAiYWNjZXB0IiwgR19DQUxMQkFDSygrW10oR3RrRHJvcFRhcmdldEFzeW5jKiwgR2Rr
RHJvcCogZ2RrRHJvcCwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGdib29sZWFuIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0UmVtb3RlSW5zcGVjdG9y
UHJvdG9jb2xIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0UmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyLmNwcAppbmRleCA2N2I5ZmVkZTZhMzcx
MjI3OGMyY2Q1NzQ3NzEyMjYyNWU1MDBjNmIyLi4yYTA2NmI4NWNjNDUxYmNkZWViYWQ2ZWM0NzIx
ZTRhMGZkOWVhOGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRs
ZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6
flJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcigpCiAgICAgICAgIGdfb2JqZWN0X3dlYWtf
dW5yZWYoR19PQkpFQ1Qod2ViVmlldyksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3RpZnk+KHdl
YlZpZXdEZXN0cm95ZWQpLCB0aGlzKTsKIAogICAgIGZvciAoYXV0byogdXNlckNvbnRlbnRNYW5h
Z2VyIDogbV91c2VyQ29udGVudE1hbmFnZXJzKSB7Ci0gICAgICAgIHdlYmtpdFVzZXJDb250ZW50
TWFuYWdlckdldFVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KHVzZXJDb250ZW50TWFuYWdlcikt
PnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoImluc3BlY3RvciIsIEFQSTo6Q29udGVu
dFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOworICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1h
bmFnZXJHZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5y
ZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKCJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVu
dFdvcmxkOjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgICAgICBnX29iamVjdF93ZWFrX3VucmVm
KEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dlYWtOb3Rp
Znk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KIH0KQEAgLTk5
LDcgKzk5LDcgQEAgdm9pZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OnVzZXJDb250
ZW50TWFuYWdlckRlc3Ryb3llZChSZW1vdGVJbnNwZWN0b3IKIAogdm9pZCBSZW1vdGVJbnNwZWN0
b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJU2NoZW1lUmVxdWVzdCog
cmVxdWVzdCkKIHsKLSAgICBVUkwgcmVxdWVzdFVSTCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2No
ZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSk7CisgICAgVVJMIHJlcXVlc3RVUkwgPSBVUkwo
U3RyaW5nIHsgd2Via2l0X3VyaV9zY2hlbWVfcmVxdWVzdF9nZXRfdXJpKHJlcXVlc3QpIH0pOwog
ICAgIGlmICghcmVxdWVzdFVSTC5wb3J0KCkpIHsKICAgICAgICAgR1VuaXF1ZVB0cjxHRXJyb3I+
IGVycm9yKGdfZXJyb3JfbmV3X2xpdGVyYWwoV0VCS0lUX1BPTElDWV9FUlJPUiwgV0VCS0lUX1BP
TElDWV9FUlJPUl9DQU5OT1RfU0hPV19VUkksICJDYW5ub3Qgc2hvdyBpbnNwZWN0b3IgVVJMOiBu
byBwb3J0IHByb3ZpZGVkIikpOwogICAgICAgICB3ZWJraXRfdXJpX3NjaGVtZV9yZXF1ZXN0X2Zp
bmlzaF9lcnJvcihyZXF1ZXN0LCBlcnJvci5nZXQoKSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmhhbmRsZVJlcXVlc3QoV2ViS2l0VVJJ
U2NoZW1lUmVxdWVzdCogcmVxdWUKICAgICBhdXRvKiB1c2VyQ29udGVudE1hbmFnZXIgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VzZXJfY29udGVudF9tYW5hZ2VyKHdlYlZpZXcpOwogICAgIGF1dG8g
dXNlckNvbnRlbnRNYW5hZ2VyUmVzdWx0ID0gbV91c2VyQ29udGVudE1hbmFnZXJzLmFkZCh1c2Vy
Q29udGVudE1hbmFnZXIpOwogICAgIGlmICh1c2VyQ29udGVudE1hbmFnZXJSZXN1bHQuaXNOZXdF
bnRyeSkgewotICAgICAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6
Y3JlYXRlKG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9y
IiwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgICAgIGF1dG8g
aGFuZGxlciA9IFdlYlNjcmlwdE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGUobWFrZVVuaXF1ZTxTY3Jp
cHRNZXNzYWdlQ2xpZW50PigqdGhpcyksICJpbnNwZWN0b3IiX3MsIEFQSTo6Q29udGVudFdvcmxk
OjpwYWdlQ29udGVudFdvcmxkKCkpOwogICAgICAgICB3ZWJraXRVc2VyQ29udGVudE1hbmFnZXJH
ZXRVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSh1c2VyQ29udGVudE1hbmFnZXIpLT5hZGRVc2Vy
U2NyaXB0TWVzc2FnZUhhbmRsZXIoaGFuZGxlci5nZXQoKSk7CiAgICAgICAgIGdfb2JqZWN0X3dl
YWtfcmVmKEdfT0JKRUNUKHVzZXJDb250ZW50TWFuYWdlciksIHJlaW50ZXJwcmV0X2Nhc3Q8R1dl
YWtOb3RpZnk+KHVzZXJDb250ZW50TWFuYWdlckRlc3Ryb3llZCksIHRoaXMpOwogICAgIH0KQEAg
LTE0Myw3ICsxNDMsNyBAQCB2b2lkIFJlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlcjo6dGFy
Z2V0TGlzdENoYW5nZWQoUmVtb3RlSW5zcGVjdG9yQ2xpZW50JiBjbAogICAgICAgICBpZiAod2Vi
a2l0X3dlYl92aWV3X2lzX2xvYWRpbmcod2ViVmlldykpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBVUkwgd2ViVmlld1VSTCA9IFVSTCh7IH0sIHdlYmtpdF93ZWJfdmlld19nZXRf
dXJpKHdlYlZpZXcpKTsKKyAgICAgICAgVVJMIHdlYlZpZXdVUkwgPSBVUkwoU3RyaW5nIHsgd2Vi
a2l0X3dlYl92aWV3X2dldF91cmkod2ViVmlldykgfSk7CiAgICAgICAgIGF1dG8gY2xpZW50Rm9y
V2ViVmlldyA9IG1faW5zcGVjdG9yQ2xpZW50cy5nZXQod2ViVmlld1VSTC5ob3N0QW5kUG9ydCgp
KTsKICAgICAgICAgaWYgKCFjbGllbnRGb3JXZWJWaWV3KSB7CiAgICAgICAgICAgICAvLyBUaGlz
IHZpZXcgaXMgbm90IHNob3dpbmcgYSBpbnNwZWN0b3IgdmlldyBhbnltb3JlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApp
bmRleCA5OTdiNmE1ZWZmZjNjNWVmYzFiZWU2MGRmMmFiYzVlMjUzMzU2MzcwLi41NDI5M2U3ZTRj
OTIzZWFmYjI0NTljMjQzY2M5YTM5MTNlOTcwZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcApAQCAtMjM2Myw3ICsy
MzYzLDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUVudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJW
aWV3QmFzZSogd2Via2l0V2ViVmlld0Jhc2UpCiAgICAgICAgIGd0a193aW5kb3dfZnVsbHNjcmVl
bihHVEtfV0lORE9XKHRvcExldmVsV2luZG93KSk7CiAgICAgZnVsbFNjcmVlbk1hbmFnZXJQcm94
eS0+ZGlkRW50ZXJGdWxsU2NyZWVuKCk7CiAgICAgcHJpdi0+ZnVsbFNjcmVlbk1vZGVBY3RpdmUg
PSB0cnVlOwotICAgIHByaXYtPnNsZWVwRGlzYWJsZXIgPSBQQUw6OlNsZWVwRGlzYWJsZXI6OmNy
ZWF0ZShfKCJXZWJzaXRlIHJ1bm5pbmcgaW4gZnVsbHNjcmVlbiBtb2RlIiksIFBBTDo6U2xlZXBE
aXNhYmxlcjo6VHlwZTo6RGlzcGxheSk7CisgICAgcHJpdi0+c2xlZXBEaXNhYmxlciA9IFBBTDo6
U2xlZXBEaXNhYmxlcjo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoXygiV2Vic2l0ZSBydW5uaW5n
IGluIGZ1bGxzY3JlZW4gbW9kZSIpKSwgUEFMOjpTbGVlcERpc2FibGVyOjpUeXBlOjpEaXNwbGF5
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
d3BlL1dlYktpdENvbG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2Vi
S2l0Q29sb3IuY3BwCmluZGV4IGEwMGZlMzQ0ODVmOTMzMTQ4ODdhMzRmMTg1NGFlODhjNDM5MWQ5
ZTkuLjIyZmMwYThkZmIwOGViMmFkYjQwYjkwYzViMzE0MzZhZWUyOWNjMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS93cGUvV2ViS2l0Q29sb3IuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgZ2Jvb2xlYW4gd2Via2l0X2NvbG9yX3BhcnNlKFdlYktpdENvbG9yKiBjb2xvciwg
Y29uc3QgZ2NoYXIqIGNvbG9yU3RyaW5nKQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbG9y
LCBGQUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29sb3JTdHJpbmcsIEZBTFNFKTsK
IAotICAgIGF1dG8gd2ViQ29yZUNvbG9yID0gV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9y
V2l0aG91dENvbnRleHQoeyBjb2xvclN0cmluZyB9KTsKKyAgICBhdXRvIHdlYkNvcmVDb2xvciA9
IFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb2xvcldpdGhvdXRDb250ZXh0KFN0cmluZyB7IGNv
bG9yU3RyaW5nIH0pOwogICAgIGlmICghd2ViQ29yZUNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAg
cmV0dXJuIEZBTFNFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TYWZlQnJvd3NpbmdXYXJuaW5nQ29jb2EubW0KaW5kZXggNmIwNTEzNjYyMGVjZTI4NmNh
OTI2MmNlN2E2M2MyMzhiNDI1NmVjNi4uYmMxZTFjOWUzYzIzYWE1NThlYWUzMWExYzNkNGYxYjQ3
N2QyODkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU2FmZUJy
b3dzaW5nV2FybmluZ0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NhZmVCcm93c2luZ1dhcm5pbmdDb2NvYS5tbQpAQCAtNDEsOCArNDEsOCBAQCBzdGF0aWMgU3Ry
aW5nIG1hbHdhcmVEZXRhaWxzQmFzZShTU0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAg
ICAgcmV0dXJuIHJlc3VsdC5tYWx3YXJlRGV0YWlsc0Jhc2VVUkxTdHJpbmc7CiAjZWxzZQogICAg
IGlmIChbcmVzdWx0LnByb3ZpZGVyIGlzRXF1YWxUb1N0cmluZzpTU0JQcm92aWRlclRlbmNlbnRd
KQotICAgICAgICByZXR1cm4gImh0dHBzOi8vd3d3LnVybHNlYy5xcS5jb20vY2hlY2suaHRtbD90
cGw9c2FmYXJpIjsKLSAgICByZXR1cm4gImh0dHBzOi8vZ29vZ2xlLmNvbS9zYWZlYnJvd3Npbmcv
ZGlhZ25vc3RpYz90cGw9c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxz
ZWMucXEuY29tL2NoZWNrLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8v
Z29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvZGlhZ25vc3RpYz90cGw9c2FmYXJpIl9zOwogI2VuZGlm
CiB9CiAKQEAgLTYzLDggKzYzLDggQEAgc3RhdGljIFN0cmluZyByZXBvcnRBbkVycm9yQmFzZShT
U0JTZXJ2aWNlTG9va3VwUmVzdWx0ICpyZXN1bHQpCiAgICAgcmV0dXJuIHJlc3VsdC5yZXBvcnRB
bkVycm9yQmFzZVVSTFN0cmluZzsKICNlbHNlCiAgICAgaWYgKFtyZXN1bHQucHJvdmlkZXIgaXNF
cXVhbFRvU3RyaW5nOlNTQlByb3ZpZGVyVGVuY2VudF0pCi0gICAgICAgIHJldHVybiAiaHR0cHM6
Ly93d3cudXJsc2VjLnFxLmNvbS9jb21wbGFpbi5odG1sP3RwbD1zYWZhcmkiOwotICAgIHJldHVy
biAiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9zYWZlYnJvd3NpbmcvcmVwb3J0X2Vycm9yLz90cGw9
c2FmYXJpIjsKKyAgICAgICAgcmV0dXJuICJodHRwczovL3d3dy51cmxzZWMucXEuY29tL2NvbXBs
YWluLmh0bWw/dHBsPXNhZmFyaSJfczsKKyAgICByZXR1cm4gImh0dHBzOi8vd3d3Lmdvb2dsZS5j
b20vc2FmZWJyb3dzaW5nL3JlcG9ydF9lcnJvci8/dHBsPXNhZmFyaSJfczsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU3lzdGVt
UHJldmlld0NvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA1ZTY2NzhmZTczZTU0NjkyOThhZGMxMjYx
OTdkMWJjNDFmMTljMDc4Li41ZjVlMmQ0NTJjNjQ0NjIyMzZmNjBiZTEzNTExMGZiMTNmNDdjMDMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TeXN0ZW1QcmV2aWV3
Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1N5
c3RlbVByZXZpZXdDb250cm9sbGVyQ29jb2EubW0KQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIFN5
c3RlbVByZXZpZXdDb250cm9sbGVyOjpmYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
IGVycm9yKQogCiB2b2lkIFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJl
dmlld0FjdGlvbigpCiB7Ci0gICAgcGFnZSgpLnN5c3RlbVByZXZpZXdBY3Rpb25UcmlnZ2VyZWQo
bV9zeXN0ZW1QcmV2aWV3SW5mbywgIl9hcHBsZV9hcl9xdWlja2xvb2tfYnV0dG9uX3RhcHBlZCIp
OworICAgIHBhZ2UoKS5zeXN0ZW1QcmV2aWV3QWN0aW9uVHJpZ2dlcmVkKG1fc3lzdGVtUHJldmll
d0luZm8sICJfYXBwbGVfYXJfcXVpY2tsb29rX2J1dHRvbl90YXBwZWQiX3MpOwogfQogCiB2b2lk
IFN5c3RlbVByZXZpZXdDb250cm9sbGVyOjp0cmlnZ2VyU3lzdGVtUHJldmlld0FjdGlvbldpdGhU
YXJnZXRGb3JUZXN0aW5nKHVpbnQ2NF90IGVsZW1lbnRJRCwgTlNTdHJpbmcqIGRvY3VtZW50SUQs
IHVpbnQ2NF90IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0ay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlHdGsu
Y3BwCmluZGV4IDk0ZTg2NjAxNTQ5MTYyNWNkM2MyZTBlZmM2YzNiYWMzMTNiMjcwMzUuLjI2NmE3
NzMxYzc4NDllMmFhOTM0YzllYzQ0ZTE4YjM4MDAwMmVhM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eUd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9SZW1vdGVX
ZWJJbnNwZWN0b3JVSVByb3h5R3RrLmNwcApAQCAtNTYsNyArNTYsNyBAQCBXZWJQYWdlUHJveHkq
IFJlbW90ZVdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5k
V2luZG93KCkKIHsKICAgICBBU1NFUlQoIW1fd2ViVmlldyk7CiAKLSAgICBhdXRvIHByZWZlcmVu
Y2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwgIldlYktpdDIuIiwgIldlYktp
dDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3Ry
aW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNpZiBFTkFCTEUoREVWRUxPUEVS
X01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNwZWN0IHRoZSBXZWIgSW5zcGVj
dG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNldHRpbmdzLgogICAgIHByZWZl
cmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwpAQCAtMTE0LDcgKzExNCw3
IEBAIHN0YXRpYyB2b2lkIHJlbW90ZUZpbGVSZXBsYWNlQ29udGVudHNDYWxsYmFjayhHT2JqZWN0
KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3VsCiAKICAgICBhdXRvKiBwYWdlID0gc3RhdGljX2Nh
c3Q8V2ViUGFnZVByb3h5Kj4odXNlckRhdGEpOwogICAgIEdVbmlxdWVQdHI8Y2hhcj4gcGF0aChn
X2ZpbGVfZ2V0X3BhdGgoZmlsZSkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclVJOjpEaWRTYXZlKHBhdGguZ2V0KCkpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShTdHJpbmc6OmZyb21VVEY4KHBhdGgu
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1T
YXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJveHlHdGsu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2d0ay9XZWJJbnNwZWN0b3JV
SVByb3h5R3RrLmNwcAppbmRleCAyODIyZWU4N2VmNDUwMjVjYzk1YzAxOTY0ZTM5NWI0NmYzYjZi
NGIwLi5iNzcxY2FkZTU0YzEwNTVkMmE1ZGE5OTE2MmFiZmM4NmQxYTkxNDhjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ3RrL1dlYkluc3BlY3RvclVJUHJv
eHlHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9ndGsvV2Vi
SW5zcGVjdG9yVUlQcm94eUd0ay5jcHAKQEAgLTE2Myw3ICsxNjMsNyBAQCBXZWJQYWdlUHJveHkq
IFdlYkluc3BlY3RvclVJUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBB
U1NFUlQoaW5zcGVjdGVkUGFnZSgpKTsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yVmlldyk7CiAK
LSAgICBhdXRvIHByZWZlcmVuY2VzID0gV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZShTdHJpbmcoKSwg
IldlYktpdDIuIiwgIldlYktpdDIuIik7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IFdlYlByZWZl
cmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiJfcywgIldlYktpdDIuIl9zKTsKICNp
ZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgLy8gQWxsb3cgZGV2ZWxvcGVycyB0byBpbnNw
ZWN0IHRoZSBXZWIgSW5zcGVjdG9yIGluIGRlYnVnIGJ1aWxkcyB3aXRob3V0IGNoYW5naW5nIHNl
dHRpbmdzLgogICAgIHByZWZlcmVuY2VzLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKHRydWUp
OwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyB2b2lkIGZpbGVSZXBsYWNlQ29udGVudHNDYWxs
YmFjayhHT2JqZWN0KiBzb3VyY2VPYmplY3QsIEdBc3luY1Jlc3VsdCogcmVzCiAKICAgICBhdXRv
KiBwYWdlID0gc3RhdGljX2Nhc3Q8V2ViUGFnZVByb3h5Kj4odXNlckRhdGEpOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcGF0aChnX2ZpbGVfZ2V0X3BhdGgoZmlsZSkpOwotICAgIHBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKHBhdGguZ2V0KCkpKTsKKyAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShTdHJpbmc6OmZyb21VVEY4
KHBhdGguZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1T
YXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvclByb3Rv
Y29sSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvclByb3RvY29sSGFuZGxlci5jcHAKaW5kZXggYTI2MzA4ODU3M2NmMjlh
NzU2M2IyZGIwZGM2NWRjMDA4MjJkMjkwNC4uYjY2NDM3MTNmNTc1Zjg4YTIwMDM4ZTQyMDE3NjIz
OWJiODZhMTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L3NvY2tldC9SZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xI
YW5kbGVyLmNwcApAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2VQcm94eSwKICAg
ICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8UmVtb3RlSW5zcGVjdG9yQ2xpZW50Pihy
ZXF1ZXN0VVJMLCAqdGhpcyk7CiAKICAgICAvLyBTZXR1cCB0YXJnZXQgcG9zdE1lc3NhZ2UgbGlz
dGVuZXIKLSAgICBhdXRvIGhhbmRsZXIgPSBXZWJTY3JpcHRNZXNzYWdlSGFuZGxlcjo6Y3JlYXRl
KG1ha2VVbmlxdWU8U2NyaXB0TWVzc2FnZUNsaWVudD4oKnRoaXMpLCAiaW5zcGVjdG9yIiwgQVBJ
OjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSk7CisgICAgYXV0byBoYW5kbGVyID0g
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXI6OmNyZWF0ZShtYWtlVW5pcXVlPFNjcmlwdE1lc3NhZ2VD
bGllbnQ+KCp0aGlzKSwgImluc3BlY3RvciJfcywgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250
ZW50V29ybGQoKSk7CiAgICAgcGFnZVByb3h5LnBhZ2VHcm91cCgpLnVzZXJDb250ZW50Q29udHJv
bGxlcigpLmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihoYW5kbGVyLmdldCgpKTsKIAogICAg
IC8vIFNldHVwIGxvYWRlciBjbGllbnQgdG8gZ2V0IG5vdGlmaWVkIG9mIHBhZ2UgbG9hZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dpbi9SZW1vdGVXZWJJ
bnNwZWN0b3JVSVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci93aW4vUmVtb3RlV2ViSW5zcGVjdG9yVUlQcm94eVdpbi5jcHAKaW5kZXggN2Q3YjgwNDc3YmRj
N2MyMzY0OTE1ZjllNzQ1YmI2NGVkZTlkZTRhNi4uYTFjNjhlNDIwZTFjNzU3NWFiYTVhYjBlZjgz
NzFlYjcxZTU1YmI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL3dpbi9SZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1JlbW90ZVdlYkluc3BlY3RvclVJUHJveHlXaW4u
Y3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgTFJFU1VMVCBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5
OjpvbkNsb3NlKCkKIAogV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0b3JVSVByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7Ci0gICAgUmVmUHRyPFdlYlBy
ZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyA9IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCks
ICJXZWJLaXQyLiIsICJXZWJLaXQyLiIpOworICAgIFJlZlB0cjxXZWJQcmVmZXJlbmNlcz4gcHJl
ZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygpLCAiV2ViS2l0Mi4iX3Ms
ICJXZWJLaXQyLiJfcyk7CiAgICAgcHJlZmVyZW5jZXMtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMcyh0cnVlKTsKIAogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9yVUlQcm94
eVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivd2luL1dlYkluc3Bl
Y3RvclVJUHJveHlXaW4uY3BwCmluZGV4IGY0MDBkNWU3MzcxOThjZDBkNDgyNjlkZTI1MDc3M2Ez
Y2M0NjAxYWQuLjFhMTkxNTU1ZjllODEzOTBmMWY2MGE2OTEyMGExNGMwZWNmOGY5YTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci93aW4vV2ViSW5zcGVjdG9y
VUlQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3dp
bi9XZWJJbnNwZWN0b3JVSVByb3h5V2luLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBAIFdlYlBhZ2VQ
cm94eSogV2ViSW5zcGVjdG9yVUlQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQog
ewogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKCkpOwogCi0gICAgYXV0byBwcmVmZXJlbmNlcyA9
IFdlYlByZWZlcmVuY2VzOjpjcmVhdGUoU3RyaW5nKCksICJXZWJLaXQyLiIsICJXZWJLaXQyLiIp
OworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlKFN0cmluZygp
LCAiV2ViS2l0Mi4iX3MsICJXZWJLaXQyLiJfcyk7CiAjaWYgRU5BQkxFKERFVkVMT1BFUl9NT0RF
KQogICAgIC8vIEFsbG93IGRldmVsb3BlcnMgdG8gaW5zcGVjdCB0aGUgV2ViIEluc3BlY3RvciBp
biBkZWJ1ZyBidWlsZHMgd2l0aG91dCBjaGFuZ2luZyBzZXR0aW5ncy4KICAgICBwcmVmZXJlbmNl
cy0+c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL2dsaWIvQnViYmxld3JhcExhdW5jaGVyLmNw
cAppbmRleCA5ZDNmOThhMzQ5NDA0MDlmOWNhOGE0MmFjOTQ0ZWE3NmViYjRmNjdiLi5lMmY5NzEz
MjU1MjQzNzcwMjJiNDA1MTlmYjA3ZTg3MzAzMDkzMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9nbGliL0J1YmJsZXdyYXBMYXVuY2hlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvZ2xpYi9CdWJibGV3cmFwTGF1bmNoZXIu
Y3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgZW51bSBjbGFzcyBCaW5kRmxhZ3MgewogCiBzdGF0aWMg
dm9pZCBiaW5kU3ltbGlua3NSZWFsUGF0aChWZWN0b3I8Q1N0cmluZz4mIGFyZ3MsIGNvbnN0IGNo
YXIqIHBhdGgsIGNvbnN0IGNoYXIqIGJpbmRPcHRpb24gPSAiLS1yby1iaW5kIikKIHsKLSAgICBX
VEY6OlN0cmluZyByZWFsUGF0aCA9IEZpbGVTeXN0ZW06OnJlYWxQYXRoKHBhdGgpOworICAgIFdU
Rjo6U3RyaW5nIHJlYWxQYXRoID0gRmlsZVN5c3RlbTo6cmVhbFBhdGgoU3RyaW5nOjpmcm9tVVRG
OChwYXRoKSk7CiAgICAgaWYgKHBhdGggIT0gcmVhbFBhdGgpIHsKICAgICAgICAgQ1N0cmluZyBy
cGF0aCA9IHJlYWxQYXRoLnV0ZjgoKTsKICAgICAgICAgYXJncy5hcHBlbmRWZWN0b3IoVmVjdG9y
PENTdHJpbmc+KHsgYmluZE9wdGlvbiwgcnBhdGguZGF0YSgpLCBycGF0aC5kYXRhKCkgfSkpOwpA
QCAtNzQ2LDcgKzc0Niw3IEBAIEdSZWZQdHI8R1N1YnByb2Nlc3M+IGJ1YmJsZXdyYXBTcGF3bihH
U3VicHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgY29uc3QgUHJvY2VzCiAKICAgICAgICAgYWRk
RXh0cmFQYXRocyhsYXVuY2hPcHRpb25zLmV4dHJhU2FuZGJveFBhdGhzLCBzYW5kYm94QXJncyk7
CiAKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0cmFQYXRocyA9IHsgImFwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3RvcnkiLCAibWVkaWFLZXlzRGlyZWN0b3J5IiwgIndheWxhbmRTb2NrZXQiLCAid2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkiIH07CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dHJhUGF0
aHMgPSB7ICJhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Il9zLCAibWVkaWFLZXlzRGlyZWN0b3J5
Il9zLCAid2F5bGFuZFNvY2tldCJfcywgIndlYlNRTERhdGFiYXNlRGlyZWN0b3J5Il9zIH07CiAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IGV4dHJhUGF0aHMpIHsKICAgICAgICAgICAg
IFN0cmluZyBleHRyYVBhdGggPSBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlhbGl6YXRpb25EYXRh
LmdldChwYXRoKTsKICAgICAgICAgICAgIGlmICghZXh0cmFQYXRoLmlzRW1wdHkoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1Y2FlODE5ZmQyNDQ4NjY0
NWRhYWQzMDViNDM4OTZjODhiMzNhYzhjLi5mZDcxNGEzMDU5MTYyYWI2YzM2ZTAwMmVjOGJmNzE0
MTliZmFjMGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBA
IC01NSw3ICs1NSw3IEBAIFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbihJc1BlcnNpc3RlbnQgaXNQZXJzCiAgICAgICAgIHNldE1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNb2RlbEVsZW1l
bnRDYWNoZURpcmVjdG9yeSgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPUykKLSAgICAgICAg
c2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0LmFkYXR0cmlidXRpb25kLnNl
cnZpY2UiKTsKKyAgICAgICAgc2V0UENNTWFjaFNlcnZpY2VOYW1lKCJjb20uYXBwbGUud2Via2l0
LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiX3MpOwogI2VuZGlmCiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUG9vbEdMaWIuY3BwCmluZGV4
IDBkMWY0MDBlNDQ0MTA4ODdlMjQ2N2Q0MDkyNTM3OWYzODQzZGE2ODcuLmNmZTdhMGViM2JlYzAw
OTc0NTQxNjc0YjVjNDE0ZTUxMjc0YjFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2dsaWIvV2ViUHJvY2Vzc1Bvb2xHTGliLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQb29sR0xpYi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyhjb25zdCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MKIAogICAgIGlmICghcGFyYW1ldGVycy5pc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzKSB7CiAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9y
ID0gd3BlX3JlbmRlcmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwotICAgICAgICBwYXJhbWV0ZXJz
LmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24od3BlX2xvYWRlcl9nZXRfbG9hZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFt
ZSgpKTsKKyAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1lbnRhdGlvbkxpYnJhcnlOYW1lID0gRmls
ZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKFN0cmluZyB7IHdwZV9sb2FkZXJfZ2V0
X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSB9KTsKICAgICB9CiAjZW5kaWYK
IApAQCAtODksNyArODksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogICAgICAgICB3cGVf
bG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zby4xIik7CiAgICAgICAgIGlmIChB
Y2NlbGVyYXRlZEJhY2tpbmdTdG9yZVdheWxhbmQ6OmNoZWNrUmVxdWlyZW1lbnRzKCkpIHsKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMuaG9zdENsaWVudEZpbGVEZXNjcmlwdG9yID0gd3BlX3JlbmRl
cmVyX2hvc3RfY3JlYXRlX2NsaWVudCgpOwotICAgICAgICAgICAgcGFyYW1ldGVycy5pbXBsZW1l
bnRhdGlvbkxpYnJhcnlOYW1lID0gRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9u
KHdwZV9sb2FkZXJfZ2V0X2xvYWRlZF9pbXBsZW1lbnRhdGlvbl9saWJyYXJ5X25hbWUoKSk7Cisg
ICAgICAgICAgICBwYXJhbWV0ZXJzLmltcGxlbWVudGF0aW9uTGlicmFyeU5hbWUgPSBGaWxlU3lz
dGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oU3RyaW5nIHsgd3BlX2xvYWRlcl9nZXRfbG9h
ZGVkX2ltcGxlbWVudGF0aW9uX2xpYnJhcnlfbmFtZSgpIH0pOwogICAgICAgICB9CiAjZWxpZiBV
U0UoRUdMKQogICAgICAgICBwYXJhbWV0ZXJzLndheWxhbmRDb21wb3NpdG9yRGlzcGxheU5hbWUg
PSBXYXlsYW5kQ29tcG9zaXRvcjo6c2luZ2xldG9uKCkuZGlzcGxheU5hbWUoKTsKQEAgLTExNiw4
ICsxMTYsOCBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKGNvbnN0IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcwogCiAgICAgR0FwcGxpY2F0aW9uKiBh
cHAgPSBnX2FwcGxpY2F0aW9uX2dldF9kZWZhdWx0KCk7CiAgICAgaWYgKGFwcCkKLSAgICAgICAg
cGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0gZ19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25f
aWQoYXBwKTsKLSAgICBwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uTmFtZSA9IGdfZ2V0X2FwcGxpY2F0
aW9uX25hbWUoKTsKKyAgICAgICAgcGFyYW1ldGVycy5hcHBsaWNhdGlvbklEID0gU3RyaW5nIHsg
Z19hcHBsaWNhdGlvbl9nZXRfYXBwbGljYXRpb25faWQoYXBwKSB9OworICAgIHBhcmFtZXRlcnMu
YXBwbGljYXRpb25OYW1lID0gU3RyaW5nIHsgZ19nZXRfYXBwbGljYXRpb25fbmFtZSgpIH07CiAK
ICAgICBwYXJhbWV0ZXJzLmluc3BlY3RvclNlcnZlckFkZHJlc3MgPSBJbnNwZWN0b3I6OlJlbW90
ZUluc3BlY3Rvcjo6aW5zcGVjdG9yU2VydmVyQWRkcmVzcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJQcm9jZXNzUHJveHlHTGliLmNwcAppbmRleCA2MzM4
ODRkYWRjYjFmYWE4ZjhiMWEzMWQ5NTU5ODc4ZmVjNjM5NzQwLi44NjRkMGUzNmZiOGRhMjU2ZDUx
MzJlZTM1NjMwNmM1MjhjNmU2NGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9nbGliL1dlYlByb2Nlc3NQcm94eUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2dsaWIvV2ViUHJvY2Vzc1Byb3h5R0xpYi5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUdldExh
dW5jaE9wdGlvbnMoUHJvY2Vzc0xhdW5jaGVyOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hPcHRpb25z
KQogewotICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0KCJlbmFi
bGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0cnVlIiA6
ICJmYWxzZSIpOworICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuc2V0
KCJlbmFibGUtc2FuZGJveCJfcywgbV9wcm9jZXNzUG9vbC0+c2FuZGJveEVuYWJsZWQoKSA/ICJ0
cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIGlmIChtX3Byb2Nlc3NQb29sLT5zYW5kYm94RW5h
YmxlZCgpKSB7CiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUqIGRhdGFTdG9yZSA9IG1fd2Vic2l0
ZURhdGFTdG9yZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2ds
aWIvV2Vic2l0ZURhdGFTdG9yZUdMaWIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xp
Yi9XZWJzaXRlRGF0YVN0b3JlR0xpYi5jcHAKaW5kZXggMDdjMjE3YzdkNmE5ODIzMGY5YTQ0OWQy
YTJlNzRhMjYxODU0MTNiMS4uNjI2OWNjNGQyODk5YjQyMGQwYWRjNjM5MmI0MjhlNTU0NzU2Mjhh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0YVN0
b3JlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ2xpYi9XZWJzaXRlRGF0
YVN0b3JlR0xpYi5jcHAKQEAgLTMwLDkgKzMwLDkgQEAKICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CiAKICNpZiBQTEFURk9STShHVEspCi0jZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3
ZWJraXRndGsiCisjZGVmaW5lIEJBU0VfRElSRUNUT1JZICJ3ZWJraXRndGsiX3MKICNlbGlmIFBM
QVRGT1JNKFdQRSkKLSNkZWZpbmUgQkFTRV9ESVJFQ1RPUlkgIndwZSIKKyNkZWZpbmUgQkFTRV9E
SVJFQ1RPUlkgIndwZSJfcwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBib2FyZEd0azMuY3BwCmluZGV4IGU4YjlhMDQ3ZThm
YmY2M2E3OWI2YTE4OGFmOTcyOWFmZTdmNTgyZjAuLmUzZTBjNDRkNWZiM2FiZmU2YjIzN2E5OGYx
MGIwYTBkYmY3NmJmNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9D
bGlwYm9hcmRHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvQ2xpcGJv
YXJkR3RrMy5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIENsaXBib2FyZDo6d3JpdGUoV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YSYmIHNlbGVjdGlvbkRhdGEpCiAgICAgaWYgKHNlbGVjdGlvbkRh
dGEuY2FuU21hcnRSZXBsYWNlKCkpCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5n
ZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoImFwcGxpY2F0aW9uL3ZuZC53ZWJr
aXRndGsuc21hcnRwYXN0ZSIpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpTbWFydFBhc3RlKTsK
ICAgICBpZiAoc2VsZWN0aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpCi0gICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2Vi
Q29yZTo6UGFzdGVib2FyZEN1c3RvbURhdGE6Omd0a1R5cGUoKSksIDAsIENsaXBib2FyZFRhcmdl
dFR5cGU6OkN1c3RvbSk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwg
Z2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1c3RvbURh
dGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCAwLCBDbGlwYm9hcmRUYXJnZXRUeXBlOjpDdXN0
b20pOwogCiAgICAgaW50IG51bWJlck9mVGFyZ2V0czsKICAgICBHdGtUYXJnZXRFbnRyeSogdGFi
bGUgPSBndGtfdGFyZ2V0X3RhYmxlX25ld19mcm9tX2xpc3QobGlzdC5nZXQoKSwgJm51bWJlck9m
VGFyZ2V0cyk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdlYkNv
cmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogICAgICAgICAgICAgY2FzZSBDbGlw
Ym9hcmRUYXJnZXRUeXBlOjpDdXN0b206CiAgICAgICAgICAgICAgICAgaWYgKGRhdGEuc2VsZWN0
aW9uRGF0YS5oYXNDdXN0b21EYXRhKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXV0byogYnVm
ZmVyID0gZGF0YS5zZWxlY3Rpb25EYXRhLmN1c3RvbURhdGEoKTsKLSAgICAgICAgICAgICAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb24sIGdka19hdG9tX2ludGVybl9zdGF0
aWNfc3RyaW5nKFdlYkNvcmU6OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCkpLCA4LCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5z
aXplKCkpOworICAgICAgICAgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVj
dGlvbiwgZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoV2ViQ29yZTo6UGFzdGVib2FyZEN1
c3RvbURhdGE6Omd0a1R5cGUoKS5jaGFyYWN0ZXJzKCkpLCA4LCByZWludGVycHJldF9jYXN0PGNv
bnN0IGd1Y2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9DbGlwYm9hcmRHdGs0LmNwcAppbmRleCAwN2FiYjcxMzE5
ODg1M2I3ODdjNjMyNGJkNDgwYjFlMDg4YTJhM2QzLi40ZmQ5NjE2YzVmN2Y5NGI3OWM1NGMxNDM5
NTUyODE0OThiNjMwOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
Q2xpcGJvYXJkR3RrNC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0NsaXBi
b2FyZEd0azQuY3BwCkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBDbGlwYm9hcmQ6OndyaXRlKFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmJiBzZWxlY3Rpb25EYXRhKQogCiAgICAgaWYgKHNlbGVjdGlv
bkRhdGEuaGFzQ3VzdG9tRGF0YSgpKSB7CiAgICAgICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9
IHNlbGVjdGlvbkRhdGEuY3VzdG9tRGF0YSgpLT5jcmVhdGVHQnl0ZXMoKTsKLSAgICAgICAgcHJv
dmlkZXJzLmFwcGVuZChnZGtfY29udGVudF9wcm92aWRlcl9uZXdfZm9yX2J5dGVzKFdlYkNvcmU6
OlBhc3RlYm9hcmRDdXN0b21EYXRhOjpndGtUeXBlKCksIGJ5dGVzLmdldCgpKSk7CisgICAgICAg
IHByb3ZpZGVycy5hcHBlbmQoZ2RrX2NvbnRlbnRfcHJvdmlkZXJfbmV3X2Zvcl9ieXRlcyhXZWJD
b3JlOjpQYXN0ZWJvYXJkQ3VzdG9tRGF0YTo6Z3RrVHlwZSgpLmNoYXJhY3RlcnMoKSwgYnl0ZXMu
Z2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAocHJvdmlkZXJzLmlzRW1wdHkoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9LZXlCaW5kaW5nVHJhbnNsYXRvci5jcHAK
aW5kZXggMTU5OTcxYWNjNmYwZDg4YjgyYTZhMWQ1YWNiZjI2ZDlkNmNiN2E2NC4uY2JmMWEyOWZk
YTMzYjljOGRjNjBhZTc3YzEyY2U2MThlYjYyOGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvS2V5QmluZGluZ1RyYW5zbGF0b3IuY3BwCkBAIC0xOTgsMjMgKzE5
OCwyMyBAQCBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6fktleUJpbmRpbmdUcmFuc2xhdG9yKCkKIHN0
cnVjdCBLZXlDb21iaW5hdGlvbkVudHJ5IHsKICAgICB1bnNpZ25lZCBnZGtLZXlDb2RlOwogICAg
IHVuc2lnbmVkIHN0YXRlOwotICAgIGNvbnN0IGNoYXIqIG5hbWU7CisgICAgQVNDSUlMaXRlcmFs
IG5hbWU7CiB9OwogCiBzdGF0aWMgY29uc3QgS2V5Q29tYmluYXRpb25FbnRyeSBjdXN0b21LZXlC
aW5kaW5nc1tdID0gewotICAgIHsgR0RLX0tFWV9iLCAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIlRvZ2dsZUJvbGQiICAgICAgfSwKLSAgICB7IEdES19LRVlfaSwg
ICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJUb2dnbGVJdGFsaWMi
ICAgIH0sCi0gICAgeyBHREtfS0VZX0VzY2FwZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQ2FuY2VsIiAgICAgICAgICB9LAotICAgIHsgR0RLX0tFWV9ncmVhdGVyLCAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkNhbmNlbCIgICAgICAgICAgfSwK
LSAgICB7IEdES19LRVlfVGFiLCAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJJbnNlcnRUYWIiICAgICAgIH0sCi0gICAgeyBHREtfS0VZX1RhYiwgICAgICAgR0RLX1NI
SUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiIgICB9LAotICAgIHsg
R0RLX0tFWV9SZXR1cm4sICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklu
c2VydE5ld0xpbmUiICAgfSwKLSAgICB7IEdES19LRVlfS1BfRW50ZXIsICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJJbnNlcnROZXdMaW5lIiAgIH0sCi0gICAgeyBHREtfS0VZ
X0lTT19FbnRlciwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3
TGluZSIgICB9LAotICAgIHsgR0RLX0tFWV9SZXR1cm4sICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIkluc2VydExpbmVCcmVhayIgfSwKLSAgICB7IEdES19LRVlfS1BfRW50
ZXIsICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJJbnNlcnRMaW5lQnJlYWsi
IH0sCi0gICAgeyBHREtfS0VZX0lTT19FbnRlciwgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAg
ICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIiB9LAotICAgIHsgR0RLX0tFWV9WLCAgICAgICAgIEdE
S19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlBhc3RlQXNQbGFpblRleHQiIH0sCisg
ICAgeyBHREtfS0VZX2IsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAg
ICAiVG9nZ2xlQm9sZCJfcyAgICAgIH0sCisgICAgeyBHREtfS0VZX2ksICAgICAgICAgR0RLX0NP
TlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiVG9nZ2xlSXRhbGljIl9zICAgIH0sCisgICAg
eyBHREtfS0VZX0VzY2FwZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q2FuY2VsIl9zICAgICAgICAgIH0sCisgICAgeyBHREtfS0VZX2dyZWF0ZXIsICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiQ2FuY2VsIl9zICAgICAgICAgIH0sCisgICAgeyBH
REtfS0VZX1RhYiwgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5z
ZXJ0VGFiIl9zICAgICAgIH0sCisgICAgeyBHREtfS0VZX1RhYiwgICAgICAgR0RLX1NISUZUX01B
U0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0QmFja3RhYiJfcyAgIH0sCisgICAgeyBHREtf
S0VZX1JldHVybiwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0
TmV3TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZX0tQX0VudGVyLCAgMCwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZ
X0lTT19FbnRlciwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TmV3
TGluZSJfcyAgIH0sCisgICAgeyBHREtfS0VZX1JldHVybiwgICAgR0RLX1NISUZUX01BU0ssICAg
ICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0VudGVyLCAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJy
ZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX0lTT19FbnRlciwgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiSW5zZXJ0TGluZUJyZWFrIl9zIH0sCisgICAgeyBHREtfS0VZX1YsICAg
ICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiUGFzdGVBc1BsYWluVGV4
dCJfcyB9LAogfTsKIAogc3RhdGljIFZlY3RvcjxTdHJpbmc+IGhhbmRsZUtleUJpbmRpbmdzRm9y
TWFwKGNvbnN0IEtleUNvbWJpbmF0aW9uRW50cnkqIG1hcCwgdW5zaWduZWQgbWFwU2l6ZSwgdW5z
aWduZWQga2V5dmFsLCBHZGtNb2RpZmllclR5cGUgc3RhdGUpCkBAIC0yNjcsNzEgKzI2Nyw3MSBA
QCBWZWN0b3I8U3RyaW5nPiBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXlFdmVu
dChHZGtFdmVudEtleSogZXZlbnQpCiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IEtleUNvbWJpbmF0
aW9uRW50cnkgcHJlZGVmaW5lZEtleUJpbmRpbmdzW10gPSB7Ci0gICAgeyBHREtfS0VZX0xlZnQs
ICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZUxlZnQiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZUxlZnQiIH0sCi0gICAgeyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX1NI
SUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIk1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7
IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAg
ICJNb3ZlV29yZEJhY2t3YXJkIiB9LAotICAgIHsgR0RLX0tFWV9LUF9MZWZ0LCAgICAgIEdES19D
T05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIk1vdmVXb3JkQmFja3dhcmQiIH0sCi0gICAg
eyBHREtfS0VZX0xlZnQsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNL
LCAiTW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlf
S1BfTGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29y
ZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW8iIH0sCi0gICAgeyBHREtfS0VZX1JpZ2h0LCAgICAg
ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVJpZ2h0IiB9LAotICAg
IHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVSaWdodCIgfSwKLSAgICB7IEdES19LRVlfUmlnaHQsICAgICAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIg
fSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19L
RVlfUmlnaHQsICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3Zl
V29yZEZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xf
TUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIiB9LAotICAgIHsgR0RLX0tF
WV9SaWdodCwgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1vdmVX
b3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfUmlnaHQs
ICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlV29yZEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX1VwLCAgICAgICAgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVVwIiB9LAotICAgIHsgR0RLX0tFWV9L
UF9VcCwgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVVcCIg
fSwKLSAgICB7IEdES19LRVlfVXAsICAgICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX0tQ
X1VwLCAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIDAsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiB9LAotICAgIHsgR0RLX0tFWV9L
UF9Eb3duLCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVEb3du
IiB9LAotICAgIHsgR0RLX0tFWV9Eb3duLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAg
ICAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9LUF9Eb3duLCAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9Ib21lLCAgICAgICAgIDAs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZSIg
fSwKLSAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZX0hvbWUs
ICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5u
aW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3Vt
ZW50IiB9LAotICAgIHsgR0RLX0tFWV9LUF9Ib21lLCAgICAgIEdES19DT05UUk9MX01BU0ssICAg
ICAgICAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIH0sCi0gICAgeyBHREtf
S0VZX0hvbWUsICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92
ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19L
RVlfS1BfSG9tZSwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9FbmQsICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVU
b0VuZE9mTGluZSIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkxpbmUiIH0sCi0gICAgeyBHREtfS0VZ
X0VuZCwgICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9LUF9FbmQsICAg
ICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mTGluZUFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfRW5kLCAgICAgICAgICBHREtfQ09O
VFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9FbmRPZkRvY3VtZW50IiB9LAotICAg
IHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAg
ICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiIH0sCi0gICAgeyBHREtfS0VZX0VuZCwgICAgICAgICAg
R0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5kT2ZEb2N1bWVudEFu
ZE1vZGlmeVNlbGVjdGlvbiIgfSwKLSAgICB7IEdES19LRVlfS1BfRW5kLCAgICAgICBHREtfQ09O
VFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3ZlVG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5
U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tFWV9QYWdlX1VwLCAgICAgIDAsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiIH0sCi0gICAgeyBHREtfS0VZX0tQX1Bh
Z2VfVXAsICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcCIg
fSwKLSAgICB7IEdES19LRVlfUGFnZV9VcCwgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsgR0RLX0tF
WV9LUF9QYWdlX1VwLCAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVQ
YWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iIH0sCi0gICAgeyBHREtfS0VZX1BhZ2VfRG93biwgICAg
MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiB9LAotICAg
IHsgR0RLX0tFWV9LUF9QYWdlX0Rvd24sIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vdmVQYWdlRG93biIgfSwKLSAgICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICBHREtfU0hJ
RlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rp
b24iIH0sCi0gICAgeyBHREtfS0VZX0tQX1BhZ2VfRG93biwgR0RLX1NISUZUX01BU0ssICAgICAg
ICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiB9LAotICAgIHsg
R0RLX0tFWV9EZWxldGUsICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkRlbGV0ZUZvcndhcmQiIH0sCi0gICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgMCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsZXRlRm9yd2FyZCIgfSwKLSAgICB7IEdES19L
RVlfRGVsZXRlLCAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkRm9yd2FyZCIgfSwKLSAgICB7IEdES19LRVlfS1BfRGVsZXRlLCAgICBHREtfQ09OVFJP
TF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxldGVXb3JkRm9yd2FyZCIgfSwKLSAgICB7IEdE
S19LRVlfQmFja1NwYWNlLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJE
ZWxldGVCYWNrd2FyZCIgfSwKLSAgICB7IEdES19LRVlfQmFja1NwYWNlLCAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2FyZCIgfSwKLSAgICB7IEdES19L
RVlfQmFja1NwYWNlLCAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJEZWxl
dGVXb3JkQmFja3dhcmQiIH0sCi0gICAgeyBHREtfS0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRS
T0xfTUFTSywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIiB9LAotICAgIHsgR0RLX0tFWV9h
LCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIlVuc2VsZWN0
IiB9LAotICAgIHsgR0RLX0tFWV9zbGFzaCwgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAg
ICAgICAgICAgICAgIlNlbGVjdEFsbCIgfSwKLSAgICB7IEdES19LRVlfYmFja3NsYXNoLCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJVbnNlbGVjdCIgfSwKLSAgICB7IEdE
S19LRVlfeCwgICAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJD
dXQiIH0sCi0gICAgeyBHREtfS0VZX2MsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiQ29weSIgfSwKLSAgICB7IEdES19LRVlfdiwgICAgICAgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJQYXN0ZSIgfSwKLSAgICB7IEdES19LRVlf
S1BfRGVsZXRlLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJDdXQiIH0s
Ci0gICAgeyBHREtfS0VZX0tQX0luc2VydCwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAg
ICAgICAgICAiQ29weSIgfSwKLSAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAgICBHREtfU0hJRlRf
TUFTSywgICAgICAgICAgICAgICAgICAgICJQYXN0ZSIgfQorICAgIHsgR0RLX0tFWV9MZWZ0LCAg
ICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVMZWZ0Il9zIH0s
CisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZUxlZnQiX3MgfSwKKyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtf
U0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfU0hJRlRfTUFTSywg
ICAgICAgICAgICAgICAgICAgICJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwK
KyAgICB7IEdES19LRVlfTGVmdCwgICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAg
ICAgICAgICJNb3ZlV29yZEJhY2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0xlZnQsICAg
ICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRCYWNrd2FyZCJf
cyB9LAorICAgIHsgR0RLX0tFWV9MZWZ0LCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtf
U0hJRlRfTUFTSywgIk1vdmVXb3JkQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAg
ICB7IEdES19LRVlfS1BfTGVmdCwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01B
U0ssICJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW8iX3MgfSwKKyAgICB7IEdES19L
RVlfUmlnaHQsICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3Zl
UmlnaHQiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUmlnaHQsICAgICAwLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJNb3ZlUmlnaHQiX3MgfSwKKyAgICB7IEdES19LRVlfUmlnaHQs
ICAgICAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlRm9yd2FyZEFu
ZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9SaWdodCwgICAgIEdES19T
SElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFTSywg
ICAgICAgICAgICAgICAgICAiTW92ZVdvcmRGb3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVdvcmRG
b3J3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX1JpZ2h0LCAgICAgICAgR0RLX0NPTlRST0xfTUFT
SyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9z
IH0sCisgICAgeyBHREtfS0VZX0tQX1JpZ2h0LCAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19T
SElGVF9NQVNLLCAiTW92ZVdvcmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAg
eyBHREtfS0VZX1VwLCAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTW92ZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1VwLCAgICAgICAgMCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX1VwLCAg
ICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9k
aWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX1VwLCAgICAgICAgR0RLX1NISUZU
X01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0s
CisgICAgeyBHREtfS0VZX0Rvd24sICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiTW92ZURvd24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfRG93biwgICAgICAwLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlRG93biJfcyB9LAorICAgIHsgR0RL
X0tFWV9Eb3duLCAgICAgICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAgIk1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0Rvd24sICAg
ICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlT
ZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICAwLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiX3MgfSwKKyAgICB7
IEdES19LRVlfS1BfSG9tZSwgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmUiX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxp
bmVBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSG9tZSwgICAgICBH
REtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkxpbmVB
bmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfSG9tZSwgICAgICAgICBHREtf
Q09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
Il9zIH0sCisgICAgeyBHREtfS0VZX0tQX0hvbWUsICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAg
ICAgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCJfcyB9LAorICAgIHsgR0RL
X0tFWV9Ib21lLCAgICAgICAgIEdES19DT05UUk9MX01BU0sgfCBHREtfU0hJRlRfTUFTSywgIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdE
S19LRVlfS1BfSG9tZSwgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBH
REtfS0VZX0VuZCwgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TW92ZVRvRW5kT2ZMaW5lIl9zIH0sCisgICAgeyBHREtfS0VZX0tQX0VuZCwgICAgICAgMCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZMaW5lIl9zIH0sCisgICAg
eyBHREtfS0VZX0VuZCwgICAgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAg
ICAiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZ
X0tQX0VuZCwgICAgICAgR0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVRv
RW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0VuZCwgICAg
ICAgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiTW92ZVRvRW5kT2ZEb2N1
bWVudCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9FbmQsICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIk1vdmVUb0VuZE9mRG9jdW1lbnQiX3MgfSwKKyAgICB7IEdES19L
RVlfRW5kLCAgICAgICAgICBHREtfQ09OVFJPTF9NQVNLIHwgR0RLX1NISUZUX01BU0ssICJNb3Zl
VG9FbmRPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uIl9zIH0sCisgICAgeyBHREtfS0VZX0tQ
X0VuZCwgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiTW92ZVRvRW5k
T2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9QYWdlX1Vw
LCAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXAiX3Mg
fSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9VcCwgICAwLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJNb3ZlUGFnZVVwIl9zIH0sCisgICAgeyBHREtfS0VZX1BhZ2VfVXAsICAgICAg
R0RLX1NISUZUX01BU0ssICAgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNl
bGVjdGlvbiJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9QYWdlX1VwLCAgIEdES19TSElGVF9NQVNL
LCAgICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwK
KyAgICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJNb3ZlUGFnZURvd24iX3MgfSwKKyAgICB7IEdES19LRVlfS1BfUGFnZV9Eb3duLCAw
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFnZURvd24iX3MgfSwKKyAg
ICB7IEdES19LRVlfUGFnZV9Eb3duLCAgICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAg
ICAgICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlf
S1BfUGFnZV9Eb3duLCBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJNb3ZlUGFn
ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iX3MgfSwKKyAgICB7IEdES19LRVlfRGVsZXRlLCAgICAg
ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGVGb3J3YXJkIl9zIH0s
CisgICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRGVsZXRlRm9yd2FyZCJfcyB9LAorICAgIHsgR0RLX0tFWV9EZWxldGUsICAgICAg
IEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAgIkRlbGV0ZVdvcmRGb3J3YXJkIl9z
IH0sCisgICAgeyBHREtfS0VZX0tQX0RlbGV0ZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAg
ICAgICAgICAgICAiRGVsZXRlV29yZEZvcndhcmQiX3MgfSwKKyAgICB7IEdES19LRVlfQmFja1Nw
YWNlLCAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZWxldGVCYWNrd2Fy
ZCJfcyB9LAorICAgIHsgR0RLX0tFWV9CYWNrU3BhY2UsICAgIEdES19TSElGVF9NQVNLLCAgICAg
ICAgICAgICAgICAgICAgIkRlbGV0ZUJhY2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX0JhY2tT
cGFjZSwgICAgR0RLX0NPTlRST0xfTUFTSywgICAgICAgICAgICAgICAgICAiRGVsZXRlV29yZEJh
Y2t3YXJkIl9zIH0sCisgICAgeyBHREtfS0VZX2EsICAgICAgICAgICAgR0RLX0NPTlRST0xfTUFT
SywgICAgICAgICAgICAgICAgICAiU2VsZWN0QWxsIl9zIH0sCisgICAgeyBHREtfS0VZX2EsICAg
ICAgICAgICAgR0RLX0NPTlRST0xfTUFTSyB8IEdES19TSElGVF9NQVNLLCAiVW5zZWxlY3QiX3Mg
fSwKKyAgICB7IEdES19LRVlfc2xhc2gsICAgICAgICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAg
ICAgICAgICAgICJTZWxlY3RBbGwiX3MgfSwKKyAgICB7IEdES19LRVlfYmFja3NsYXNoLCAgICBH
REtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJVbnNlbGVjdCJfcyB9LAorICAgIHsg
R0RLX0tFWV94LCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ssICAgICAgICAgICAgICAgICAg
IkN1dCJfcyB9LAorICAgIHsgR0RLX0tFWV9jLCAgICAgICAgICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIkNvcHkiX3MgfSwKKyAgICB7IEdES19LRVlfdiwgICAgICAgICAg
ICBHREtfQ09OVFJPTF9NQVNLLCAgICAgICAgICAgICAgICAgICJQYXN0ZSJfcyB9LAorICAgIHsg
R0RLX0tFWV9LUF9EZWxldGUsICAgIEdES19TSElGVF9NQVNLLCAgICAgICAgICAgICAgICAgICAg
IkN1dCJfcyB9LAorICAgIHsgR0RLX0tFWV9LUF9JbnNlcnQsICAgIEdES19DT05UUk9MX01BU0ss
ICAgICAgICAgICAgICAgICAgIkNvcHkiX3MgfSwKKyAgICB7IEdES19LRVlfS1BfSW5zZXJ0LCAg
ICBHREtfU0hJRlRfTUFTSywgICAgICAgICAgICAgICAgICAgICJQYXN0ZSJfcyB9CiB9OwogCiBW
ZWN0b3I8U3RyaW5nPiBLZXlCaW5kaW5nVHJhbnNsYXRvcjo6Y29tbWFuZHNGb3JLZXl2YWwodW5z
aWduZWQga2V5dmFsLCB1bnNpZ25lZCBtb2RpZmllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCBhODZiMzRkZGFhOGY3MTVl
MWM5NDdiODk0M2NlZmQ5MjEzOWM0MTMwLi5lMzE4ODlmMzQ0YzRhNjNkZjVlNWU2NTllMjQyMWY0
YzkxMDQ4Y2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9j
ZXNzUG9vbFdpbi5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIFN0cmluZyBiYWNrZW5kQ29t
bWFuZHNQYXRoKCkKICAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHVy
bFJlZi5nZXQoKSwgZmFsc2UsIHJlaW50ZXJwcmV0X2Nhc3Q8VUludDgqPihwYXRoKSwgTUFYX1BB
VEgpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIHBhdGg7CisgICAgcmV0dXJu
IFN0cmluZzo6ZnJvbVVURjgocGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVSZW1v
dGVJbnNwZWN0b3JTZXJ2ZXIoU3RyaW5nVmlldyBhZGRyZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNzJhY2QwMWYyYTZhNmYyOGJjYWVj
NTNjYzUxZGMuLjlkN2U3MWMyMjg5MWYyMjMzNDY2Y2E2OTcxMjM5OWEyNzJjY2U5YTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKQEAgLTI0MCw3ICsyNDAsNyBAQCBX
ZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVjdCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbiwgSFdORCBwYQogICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNl
dFNpemUod2luZG93U2l6ZSk7CiAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKLSAgICBt
X3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9j
b2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiKTsKKyAgICBtX3BhZ2UtPnNl
dFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVy
OjpjcmVhdGUoKm1fcGFnZSksICJpbnNwZWN0b3IiX3MpOwogI2VuZGlmCiAKICAgICAvLyBGSVhN
RTogSW5pdGlhbGl6aW5nIHRoZSB0b29sdGlwIHdpbmRvdyBoZXJlIG1hdGNoZXMgV2ViS2l0IHdp
biwgYnV0IHNlZW1zIGxpa2Ugc29tZXRoaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFn
ZS5jcHAKaW5kZXggNTA1ZDIwNWNjNTE1N2I4ZjAwNzczNjU1MGU1NmZhNWE0YWZmNGM2Ny4uNDRj
YmY3M2M2YWQxNTVjZTI2MjllMDFhNDc0OThjMjUyOGNlYzQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtNzMzLDEwICs3MzMsMTAgQEAgdm9pZCB3ZWJraXRXZWJQ
YWdlRGlkUmVjZWl2ZU1lc3NhZ2UoV2ViS2l0V2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmEKIHsKICNpZiBQTEFURk9STShHVEspCiAgICAgaWYgKG1lc3NhZ2VOYW1lID09IFN0
cmluZygiR2V0U25hcHNob3QiKSkgewotICAgICAgICBTbmFwc2hvdE9wdGlvbnMgc25hcHNob3RP
cHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25zPihzdGF0aWNfY2FzdDxBUEk6OlVJ
bnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdE9wdGlvbnMiKSktPnZhbHVlKCkpOwotICAgICAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gc3RhdGljX2Nhc3Q8QVBJOjpVSW50NjQqPihtZXNzYWdl
LmdldCgiQ2FsbGJhY2tJRCIpKS0+dmFsdWUoKTsKLSAgICAgICAgU25hcHNob3RSZWdpb24gcmVn
aW9uID0gc3RhdGljX2Nhc3Q8U25hcHNob3RSZWdpb24+KHN0YXRpY19jYXN0PEFQSTo6VUludDY0
Kj4obWVzc2FnZS5nZXQoIlNuYXBzaG90UmVnaW9uIikpLT52YWx1ZSgpKTsKLSAgICAgICAgYm9v
bCB0cmFuc3BhcmVudEJhY2tncm91bmQgPSBzdGF0aWNfY2FzdDxBUEk6OkJvb2xlYW4qPihtZXNz
YWdlLmdldCgiVHJhbnNwYXJlbnRCYWNrZ3JvdW5kIikpLT52YWx1ZSgpOworICAgICAgICBTbmFw
c2hvdE9wdGlvbnMgc25hcHNob3RPcHRpb25zID0gc3RhdGljX2Nhc3Q8U25hcHNob3RPcHRpb25z
PihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdE9wdGlvbnMi
X3MpKS0+dmFsdWUoKSk7CisgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBzdGF0aWNfY2Fz
dDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJDYWxsYmFja0lEIl9zKSktPnZhbHVlKCk7Cisg
ICAgICAgIFNuYXBzaG90UmVnaW9uIHJlZ2lvbiA9IHN0YXRpY19jYXN0PFNuYXBzaG90UmVnaW9u
PihzdGF0aWNfY2FzdDxBUEk6OlVJbnQ2NCo+KG1lc3NhZ2UuZ2V0KCJTbmFwc2hvdFJlZ2lvbiJf
cykpLT52YWx1ZSgpKTsKKyAgICAgICAgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQgPSBzdGF0
aWNfY2FzdDxBUEk6OkJvb2xlYW4qPihtZXNzYWdlLmdldCgiVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
Il9zKSktPnZhbHVlKCk7CiAKICAgICAgICAgUmVmUHRyPFdlYkltYWdlPiBzbmFwc2hvdEltYWdl
OwogICAgICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gcGFnZS0+cHJpdi0+d2ViUGFnZTsKQEAgLTc2
NSwxMCArNzY1LDEwIEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktp
dFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIH0KIAogICAg
ICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgbWVzc2FnZVJlcGx5OwotICAgICAgICBtZXNz
YWdlUmVwbHkuc2V0KCJQYWdlIiwgd2ViUGFnZSk7Ci0gICAgICAgIG1lc3NhZ2VSZXBseS5zZXQo
IkNhbGxiYWNrSUQiLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKGNhbGxiYWNrSUQpKTsKLSAgICAgICAg
bWVzc2FnZVJlcGx5LnNldCgiU25hcHNob3QiLCBzbmFwc2hvdEltYWdlKTsKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+cG9zdE1lc3NhZ2UoIldlYlBh
Z2UuRGlkR2V0U25hcHNob3QiLCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1lc3Nh
Z2VSZXBseSkpLnB0cigpKTsKKyAgICAgICAgbWVzc2FnZVJlcGx5LnNldCgiUGFnZSJfcywgd2Vi
UGFnZSk7CisgICAgICAgIG1lc3NhZ2VSZXBseS5zZXQoIkNhbGxiYWNrSUQiX3MsIEFQSTo6VUlu
dDY0OjpjcmVhdGUoY2FsbGJhY2tJRCkpOworICAgICAgICBtZXNzYWdlUmVwbHkuc2V0KCJTbmFw
c2hvdCJfcywgc25hcHNob3RJbWFnZSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPnBvc3RNZXNzYWdlKCJXZWJQYWdlLkRpZEdldFNuYXBzaG90Il9z
LCBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1lc3NhZ2VSZXBseSkpLnB0cigpKTsK
ICAgICB9IGVsc2UKICNlbmRpZgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RP
TS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2d0ay9ET00vV2ViS2l0RE9NRG9jdW1lbnRHdGsuY3BwCmluZGV4IGZl
MGQ0MDE4ZTNmODA5YzVmMjdiZTMyZDQ1YWZlZjFiZjkyMDFjODEuLmE5Y2RhYzljMDkxMTRlMmQx
MzYyMjNhOWE3MjVlZmVhYzU3YWE4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL0RPTS9XZWJLaXRET01Eb2N1bWVudEd0ay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvRE9N
L1dlYktpdERPTURvY3VtZW50R3RrLmNwcApAQCAtMTkwOSw5ICsxOTA5LDkgQEAgZ2NoYXIqIHdl
YmtpdF9kb21fZG9jdW1lbnRfZ2V0X3Zpc2liaWxpdHlfc3RhdGUoV2ViS2l0RE9NRG9jdW1lbnQq
IHNlbGYpCiAgICAgV2ViQ29yZTo6RG9jdW1lbnQqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7
CiAgICAgc3dpdGNoIChpdGVtLT52aXNpYmlsaXR5U3RhdGUoKSkgewogICAgIGNhc2UgV2ViQ29y
ZTo6VmlzaWJpbGl0eVN0YXRlOjpIaWRkZW46Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4
U3RyaW5nKCJoaWRkZW4iKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb1VURjhTdHJpbmcoImhp
ZGRlbiJfcyk7CiAgICAgY2FzZSBXZWJDb3JlOjpWaXNpYmlsaXR5U3RhdGU6OlZpc2libGU6Ci0g
ICAgICAgIHJldHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKCJ2aXNpYmxlIik7CisgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9VVEY4U3RyaW5nKCJ2aXNpYmxlIl9zKTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRvckNsaWVudFdQRS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd3BlL1dlYkVkaXRv
ckNsaWVudFdQRS5jcHAKaW5kZXggNDUyY2YwY2M4YzdhNjY1MzA0NWY5YWUxMzVhMDU0ZWUwNzYz
M2RhMy4uMzM4NGZhMjU4YzIwZjQ0NmYyMTJkYWUyYzI0ZGM5ZDgxMjJiYWQwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dwZS9XZWJFZGl0b3JD
bGllbnRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC93cGUvV2ViRWRpdG9yQ2xpZW50V1BFLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyKiBpbnRlcnByZXRLZXlFdmVudChjb25zdCBLZXlib2FyZEV2ZW50JiBldmVudCkK
IAogc3RhdGljIHZvaWQgaGFuZGxlS2V5UHJlc3MoRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50
JiBldmVudCwgY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBwbGF0Zm9ybUV2ZW50KQogewot
ICAgIFN0cmluZyBjb21tYW5kTmFtZSA9IGludGVycHJldEtleUV2ZW50KGV2ZW50KTsKKyAgICBT
dHJpbmcgY29tbWFuZE5hbWUgeyBpbnRlcnByZXRLZXlFdmVudChldmVudCkgfTsKIAogICAgIGlm
ICghY29tbWFuZE5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLmNvbW1h
bmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUoKTsKQEAgLTE5MCw3ICsxOTAsNyBAQCBzdGF0aWMgdm9p
ZCBoYW5kbGVLZXlQcmVzcyhGcmFtZSYgZnJhbWUsIEtleWJvYXJkRXZlbnQmIGV2ZW50LCBjb25z
dCBQbGF0Zm9ybUtleQogCiBzdGF0aWMgdm9pZCBoYW5kbGVLZXlEb3duKEZyYW1lJiBmcmFtZSwg
S2V5Ym9hcmRFdmVudCYgZXZlbnQsIGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpCiB7Ci0g
ICAgU3RyaW5nIGNvbW1hbmROYW1lID0gaW50ZXJwcmV0S2V5RXZlbnQoZXZlbnQpOworICAgIFN0
cmluZyBjb21tYW5kTmFtZSB7IGludGVycHJldEtleUV2ZW50KGV2ZW50KSB9OwogICAgIGlmIChj
b21tYW5kTmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBkNmIzMjJhMDk2MGZjMjQyMDQx
NjRjYTk5Yzc4MzlmNTg3MzkzMjM0Li5hMmUxYzEzMTUwNTI3YTJlMDE2NTA3MTJiNDlkZTdlZTkx
ZTY5NTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzg1Miw3ICszODUyLDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBpZiAo
ZnJhbWUtPnNob3VsZEVuYWJsZUluQXBwQnJvd3NlclByaXZhY3lQcm90ZWN0aW9ucygpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUg
dG8gZXhlY3V0ZSBKYXZhU2NyaXB0IGluIGEgZnJhbWUgdGhhdCBpcyBub3QgaW4gYW4gYXBwLWJv
dW5kIGRvbWFpbiJfcywgMCwgMCwgRXhjZXB0aW9uRGV0YWlsczo6VHlwZTo6QXBwQm91bmREb21h
aW4gfSk7CiAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNl
ciBzY3JpcHQgaW5qZWN0aW9uIGZvciBub24tYXBwIGJvdW5kIGRvbWFpbi4iKTsKKyAgICAgICAg
ICAgIGRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiSWdub3JpbmcgdXNlciBzY3JpcHQgaW5qZWN0aW9uIGZv
ciBub24tYXBwIGJvdW5kIGRvbWFpbi4iX3MpOwogICAgICAgICBXRUJQQUdFX1JFTEVBU0VfTE9H
X0VSUk9SKExvYWRpbmcsICJydW5KYXZhU2NyaXB0OiBJZ25vcmluZyB1c2VyIHNjcmlwdCBpbmpl
Y3Rpb24gZm9yIG5vbiBhcHAtYm91bmQgZG9tYWluIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBh
Z2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFn
ZUdMaWIuY3BwCmluZGV4IDliYWE3Mjg4NGE4OTA1NmY1NzY0ODkyMmYwMmRjNzgyYjA4OTFhZWQu
LjFjOTM2OWRjOGI4ZDgzM2QxYTE1YjA0M2JiZDFkNjAzY2JjNzkxZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBA
IC0xMTQsMjIgKzExNCwyMiBAQCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUo
RnJhbWUmIGZyYW1lLCBFZGl0b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogI2lmIFBMQVRGT1JNKEdU
SykKICAgICBjb25zdCBFZGl0b3ImIGVkaXRvciA9IGZyYW1lLmVkaXRvcigpOwogICAgIGlmIChz
ZWxlY3Rpb24uaXNSYW5nZSgpKSB7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5
bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpID09IFRyaVN0YXRlOjpUcnVlKQorICAg
ICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwg
ImJvbGQiX3MpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEu
dHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAgICAgICBpZiAoZWRpdG9yLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJpU3Rh
dGU6OlRydWUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlGb250U3R5bGUsICJpdGFsaWMiX3MpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAg
cG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVJdGFsaWNzOwotICAg
ICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERl
Y29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKKyAgICAg
ICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNv
cmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIl9zKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAg
ICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJs
aW5lOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSA9PSBUcmlTdGF0ZTo6
VHJ1ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIl9zKSA9PSBUcmlTdGF0
ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0g
QXR0cmlidXRlU3RyaWtlVGhyb3VnaDsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5pc0NhcmV0
KCkpIHsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwgImJvbGQiKSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFy
dEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiX3MpKQogICAgICAgICAgICAg
cG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAgICAg
ICBpZiAoZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUs
ICJpdGFsaWMiKSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIl9zKSkKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLSAgICAgICAgaWYgKGVk
aXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25T
dGFydEhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1
bmRlcmxpbmUiX3MpKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRl
cyB8PSBBdHRyaWJ1dGVVbmRlcmxpbmU7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3Rh
cnRIYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGlu
ZS10aHJvdWdoIikpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIl9z
KSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmli
dXRlU3RyaWtlVGhyb3VnaDsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUHJpbnRPcGVyYXRpb25HdGsuY3Bw
CmluZGV4IDJmMjFmMmJlZjNjOWJiZjYzMTIzNTIwY2RmOWY4Nzk2NzE4NWNhMDEuLmMyZmJjYmM5
MDY5YzYyNDcxNzc5YjdlYmNkMGU5ZGVmNzhkZGQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQcmludE9wZXJhdGlvbkd0ay5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlByaW50T3BlcmF0aW9uR3Rr
LmNwcApAQCAtODUsNyArODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vy
cm9yPiBlcnJvcjsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gZ3RrX3ByaW50
X2pvYl9nZXRfc3VyZmFjZShtX3ByaW50Sm9iLmdldCgpLCAmZXJyb3Iub3V0UHRyKCkpOwogICAg
ICAgICBpZiAoIXN1cmZhY2UpIHsKLSAgICAgICAgICAgIHByaW50RG9uZShwcmludEVycm9yKGZy
YW1lVVJMKCksIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgICAgICBwcmludERvbmUocHJpbnRF
cnJvcihmcmFtZVVSTCgpLCBTdHJpbmc6OmZyb21VVEY4KGVycm9yLT5tZXNzYWdlKSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCBwcmludEpvYkNvbXBsZXRlKEd0a1ByaW50Sm9iKiwgV2ViUHJp
bnRPcGVyYXRpb25HdGtVbml4KiBwcmludE9wZXJhdGlvbiwgY29uc3QgR0Vycm9yKiBlcnJvcikK
ICAgICB7Ci0gICAgICAgIHByaW50T3BlcmF0aW9uLT5wcmludERvbmUoZXJyb3IgPyBwcmludEVy
cm9yKHByaW50T3BlcmF0aW9uLT5mcmFtZVVSTCgpLCBlcnJvci0+bWVzc2FnZSkgOiBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yKCkpOworICAgICAgICBwcmludE9wZXJhdGlvbi0+cHJpbnREb25lKGVy
cm9yID8gcHJpbnRFcnJvcihwcmludE9wZXJhdGlvbi0+ZnJhbWVVUkwoKSwgU3RyaW5nOjpmcm9t
VVRGOChlcnJvci0+bWVzc2FnZSkpIDogV2ViQ29yZTo6UmVzb3VyY2VFcnJvcigpKTsKICAgICAg
ICAgcHJpbnRPcGVyYXRpb24tPm1fcHJpbnRKb2IgPSAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCBhNGNj
NWU3ZDQyY2I2MDdhZjljMjMxMDg5N2ZiZmVhMDdhZDRlYTI3Li4wYzk0NmI2MmM2ZjM5NzY0MmI2
NjQ1NTk2MWNmOTUxMTNiNTJlNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNzEzLDI5ICs3MTMsMjkgQEAgdm9pZCBX
ZWJQYWdlOjpnZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKFN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kVHlwZSBjb21tYW4KICAgICAKICAgICBzd2l0Y2ggKGNvbW1hbmQpIHsKICAgICBjYXNl
IFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZTo6VW5kbzoKLSAgICAgICAga2V5RXZlbnQgPSBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiLCAieiIsCi0g
ICAgICAgICJ6IiwgIktleVoiX3MsCi0gICAgICAgIEAiVSswMDVBIiwgOTAsIGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAgICAga2V5RXZlbnQg
PSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwgInoiX3MsICJ6
Il9zLAorICAgICAgICAieiJfcywgIktleVoiX3MsCisgICAgICAgICJVKzAwNUEiX3MsIDkwLCBm
YWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlOjpSZWRvOgotICAg
ICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlE
b3duLCAieSIsICJ5IiwKLSAgICAgICAgInkiLCAiS2V5WSJfcywKLSAgICAgICAgQCJVKzAwNTki
LCA4OSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwor
ICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpL
ZXlEb3duLCAieSJfcywgInkiX3MsCisgICAgICAgICJ5Il9zLCAiS2V5WSJfcywKKyAgICAgICAg
IlUrMDA1OSJfcywgODksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6
Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGU6OlRvZ2dsZUJvbGRmYWNlOgotICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5Ym9h
cmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiIsICJiIiwKLSAgICAgICAgImIiLCAi
S2V5QiJfcywKLSAgICAgICAgQCJVKzAwNDIiLCA2NiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgbW9k
aWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOworICAgICAgICBrZXlFdmVudCA9IFBsYXRmb3JtS2V5
Ym9hcmRFdmVudChQbGF0Zm9ybUV2ZW50OjpLZXlEb3duLCAiYiJfcywgImIiX3MsCisgICAgICAg
ICJiIl9zLCAiS2V5QiJfcywKKyAgICAgICAgIlUrMDA0MiJfcywgNjYsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGU6OlRvZ2dsZUl0YWxpYzoKLSAgICAgICAg
a2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93biwg
ImkiLCAiaSIsCi0gICAgICAgICJpIiwgIktleUkiX3MsCi0gICAgICAgIEAiVSswMDQ5IiwgNzMs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIG1vZGlmaWVycywgV2FsbFRpbWU6Om5vdygpKTsKKyAgICAg
ICAga2V5RXZlbnQgPSBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoUGxhdGZvcm1FdmVudDo6S2V5RG93
biwgImkiX3MsICJpIl9zLAorICAgICAgICAiaSJfcywgIktleUkiX3MsCisgICAgICAgICJVKzAw
NDkiX3MsIDczLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3co
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
OjpUb2dnbGVVbmRlcmxpbmU6Ci0gICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2FyZEV2
ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1IiwgInUiLAotICAgICAgICAidSIsICJLZXlV
Il9zLAotICAgICAgICBAIlUrMDA1NSIsIDg1LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBtb2RpZmll
cnMsIFdhbGxUaW1lOjpub3coKSk7CisgICAgICAgIGtleUV2ZW50ID0gUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KFBsYXRmb3JtRXZlbnQ6OktleURvd24sICJ1Il9zLCAidSJfcywKKyAgICAgICAgInUi
X3MsICJLZXlVIl9zLAorICAgICAgICAiVSswMDU1Il9zLCA4NSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgbW9kaWZpZXJzLCBXYWxsVGltZTo6bm93KCkpOwogICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKQEAgLTQzMjYsNyArNDMyNiw3IEBAIFN0cmluZyBXZWJQYWdl
OjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmKSBjb25zdAogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAKICAgICBpZiAoZG9jdW1lbnQtPnF1aXJrcygpLnNob3VsZEF2b2lkVXNpbmdJT1Mx
M0ZvckdtYWlsKCkgJiYgb3NOYW1lRm9yVXNlckFnZW50KCkgPT0gImlQaG9uZSBPUyIpCi0gICAg
ICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoeyB9LCAiMTJf
MV8zIik7CisgICAgICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5h
bWUoeyB9LCAiMTJfMV8zIl9zKTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAppbmRl
eCBiYjUxMmFlYzM0NTA2YWE1ODhhNzM2YjZkY2Y2YjZmM2I2NjllMzQyLi43NjQ0M2E5NDI1NGFl
NGZlOGU1OGY4MDdiYWE1MjE1NmMzNjdkMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCkBAIC0yNjgsNyArMjY4LDcgQEAg
Ym9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5Ym9hcmRFdmVudChXZWJDb3JlOjpLZXlib2Fy
ZEV2ZW50JiBldmVudCkKICAgICBpZiAoZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlk
b3duRXZlbnQgJiYgZXZlbnQudHlwZSgpICE9IGV2ZW50TmFtZXMoKS5rZXlwcmVzc0V2ZW50KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9y
KCkuY29tbWFuZChpbnRlcnByZXRLZXlFdmVudCgmZXZlbnQpKTsKKyAgICBhdXRvIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZChTdHJpbmcgeyBpbnRlcnByZXRLZXlFdmVudCgmZXZl
bnQpIH0pOwogCiAgICAgaWYgKGtleUV2ZW50LT50eXBlKCkgPT0gUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bikgewogICAgICAgICAvLyBXZWJLaXQgZG9lc24ndCBoYXZlIGVub3VnaCBpbmZvcm1h
dGlvbiBhYm91dCBtb2RlIHRvIGRlY2lkZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVz
aENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggZTAxMDQ1NzQ3Zjc0YzgzMzE5ZDRhMzkxMDZjNDNh
NmNlNTAyNWFiMi4uYjdmZTgwMDRlNDhmZjZlODk3Y2E5MjI2Y2Q4NWJiNjUwYTZmZDE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCkBAIC04
Niw3ICs4Niw3IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVT
aWduaW5nSWRlbnRpZmllcigpCiAgICAgaWYgKCFtX2hvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZp
ZXIpIHsKICNpZiBQTEFURk9STShNQUMpICYmICFVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAg
ICAgICAvLyBUaGlzIGlzbid0IGdyZWF0LCBidXQgY3VycmVudGx5IHRoZSBvbmx5IHVzZXIgb2Yg
d2VicHVzaGQgaW4gb3BlbiBzb3VyY2UgYnVpbGRzIGlzIFRlc3RXZWJLaXRBUEkgYW5kIGNvZGVT
aWduaW5nSWRlbnRpZmllciByZXR1cm5zIHRoZSBudWxsIFN0cmluZyBvbiB4ODZfNjQgTWFjcy4K
LSAgICAgICAgbV9ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSI7CisgICAgICAgIG1faG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmll
ciA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiX3M7CiAjZWxzZQogICAgICAgICBp
ZiAoIW1faG9zdEFwcEF1ZGl0VG9rZW4pCiAgICAgICAgICAgICBtX2hvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIgPSBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0RPTS9ET00ubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCmluZGV4
IDM5ZDg2MGMyOTVhN2MwOGYwYTdmOTY4MzkzYTM4MzU1YjQwZjg0NDYuLmEyNjJiZmMxNDAyOWY0
NzZkNDRhYTc5YjdmYTBhN2JmMjY4NDEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET00ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5t
bQpAQCAtNzE2LDcgKzcxNiw3IEBAIC0gKEJPT0wpX21lZGlhUXVlcnlNYXRjaGVzCiAKICAgICBE
b2N1bWVudCYgZG9jdW1lbnQgPSBsaW5rLmRvY3VtZW50KCk7CiAgICAgYXV0byBtZWRpYVF1ZXJ5
U2V0ID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKG1lZGlhLCBNZWRpYVF1ZXJ5UGFyc2VyQ29udGV4
dChkb2N1bWVudCkpOwotICAgIHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiIs
IGRvY3VtZW50LCBkb2N1bWVudC5yZW5kZXJWaWV3KCkgPyAmZG9jdW1lbnQucmVuZGVyVmlldygp
LT5zdHlsZSgpIDogbnVsbHB0ciB9LmV2YWx1YXRlKG1lZGlhUXVlcnlTZXQuZ2V0KCkpOworICAg
IHJldHVybiBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHsgInNjcmVlbiJfcywgZG9jdW1lbnQsIGRvY3Vt
ZW50LnJlbmRlclZpZXcoKSA/ICZkb2N1bWVudC5yZW5kZXJWaWV3KCktPnN0eWxlKCkgOiBudWxs
cHRyIH0uZXZhbHVhdGUobWVkaWFRdWVyeVNldC5nZXQoKSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50LmgKaW5kZXggNDIwMTA3ZGE2NWI3NmI2ZDEyYzRjNDU4MTM5ZjMwODI1OGQ5M2ZmMy4uMDk4
ZjhlYzI5NjA2YzBjYzRhMzc5YjZjNjExZDBkZjJjZDA5ZDU5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmgK
QEAgLTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OmNoZWNrU3Bl
bGxpbmdPZlN0cmluZyhTdHJpbmdWaWV3LCBpbnQqIG1pc3NwZWxsaW5nTAogCiBpbmxpbmUgU3Ry
aW5nIFdlYkVkaXRvckNsaWVudDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxl
ZFdvcmQoY29uc3QgU3RyaW5nJikKIHsKLSAgICByZXR1cm4gIiI7CisgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CiB9CiAKIGlubGluZSB2b2lkIFdlYkVkaXRvckNsaWVudDo6Y2hlY2tHcmFtbWFy
T2ZTdHJpbmcoU3RyaW5nVmlldywgVmVjdG9yPFdlYkNvcmU6OkdyYW1tYXJEZXRhaWw+JiwgaW50
KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3JhbW1hckxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRGF0YVNvdXJjZS5tbQppbmRleCA1ZWI1ZDZh
MTllNmQ5MWZjYjNiZmM4MWNjYTkxZWM3ZTBlNTZjNDI4Li5iYzJhMzJlYTMzOTRhYTM4M2Q3ZTZk
ZmMyMjRlNmYwY2Y5YmI2YmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkRhdGFTb3VyY2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJEYXRhU291cmNlLm1tCkBAIC0yMDgsNyArMjA4LDcgQEAgLSAodm9pZClfc2V0RGVm
ZXJNYWluUmVzb3VyY2VEYXRhTG9hZDooQk9PTClmbGFnCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIC0gKHZvaWQpX3NldE92ZXJyaWRlVGV4dEVuY29kaW5nTmFtZTooTlNTdHJpbmcgKillbmNv
ZGluZwogewotICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxvYWRlci0+c2V0T3ZlcnJpZGVFbmNv
ZGluZyhbZW5jb2RpbmcgVVRGOFN0cmluZ10pOworICAgIHRvUHJpdmF0ZShfcHJpdmF0ZSktPmxv
YWRlci0+c2V0T3ZlcnJpZGVFbmNvZGluZyhlbmNvZGluZyk7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGI3YWQwZDY4NDc1YmEx
NzQ0YzQxZDk2MjgzMDcxOGQ5MTE5MGExZDguLmYxNGZhMzk5NGY0YWZhYmJjZTViMDFiOTk0NTc1
MmRhOTlhODExZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTE4NzYsNyArMTg3Niw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRo
U3R5bGU6KE5TU3RyaW5nICopc3R5bGUgZnJhbWU6KENHUmVjdClmcmFtZSBwcmVmCiAgICAgX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZChbcHJl
ZmVyZW5jZXMgZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZF0pOwogCiAgICAgX3ByaXZhdGUtPnBh
Z2UtPnNldHRpbmdzKCkuc2V0Rm9udEZhbGxiYWNrUHJlZmVyc1BpY3RvZ3JhcGhzKHRydWUpOwot
ICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFBpY3RvZ3JhcGhGb250RmFtaWx5KCJB
cHBsZUNvbG9yRW1vamkiKTsKKyAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRQaWN0
b2dyYXBoRm9udEZhbWlseSgiQXBwbGVDb2xvckVtb2ppIl9zKTsKIAogICAgIF9wcml2YXRlLT5w
YWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdE1hcmt1cEVuYWJsZWQoZmFsc2UpOwogICAgIF9wcml2
YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9BY2Nlc3NpYmxlQmFzZS5jcHAKaW5kZXggNWQ2MzBhN2Q5YTExYzY5MGVm
ZDFkYzQyNjUwOWZlZGYzNGRjYTY3NC4uYzI5MGRhZTM3OTQzOWVlZTMxMjhiZTNkMjM1NzYwYzdj
NzAzMTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQWNjZXNzaWJsZUJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0FjY2Vzc2libGVCYXNlLmNwcApA
QCAtNjIsMTMgKzYyLDEzIEBAIEFjY2Vzc2libGVCYXNlOjpBY2Nlc3NpYmxlQmFzZShBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2luZG93KQogICAgIEFTU0VSVF9BUkcob2JqLCBvYmop
OwogICAgIG1fb2JqZWN0LT5zZXRXcmFwcGVyKHRoaXMpOwogICAgICsrZ0NsYXNzQ291bnQ7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJBY2Nlc3NpYmxlQmFzZSIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLmFkZCgiQWNjZXNzaWJsZUJhc2UiX3MpOwogfQogCiBBY2Nlc3NpYmxlQmFzZTo6
fkFjY2Vzc2libGVCYXNlKCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiQWNjZXNzaWJsZUJhc2UiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5y
ZW1vdmUoIkFjY2Vzc2libGVCYXNlIl9zKTsKIH0KIAogQWNjZXNzaWJsZUJhc2UqIEFjY2Vzc2li
bGVCYXNlOjpjcmVhdGVJbnN0YW5jZShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEhXTkQgd2lu
ZG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWcuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWcuY3BwCmluZGV4IDlhMWYwMTEyMjFiYzIxNDAwYmVlODg3ZWQxMTE5YjM2OWZmZTYwMDMu
LmE1YzA3ZWI5MTJmYmJmMTE3MTRiNmU5ODY3NjliMjk2ZjczZjk3MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL0NGRGljdGlvbmFyeVByb3BlcnR5QmFnLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZy5jcHAKQEAgLTM0
LDEzICszNCwxMyBAQAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OkNGRGljdGlvbmFyeVByb3Bl
cnR5QmFnKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFk
ZCgiQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQo
IkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIl9zKTsKIH0KIAogQ0ZEaWN0aW9uYXJ5UHJvcGVydHlC
YWc6On5DRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkNGRGljdGlvbmFyeVByb3BlcnR5QmFnIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZyJfcyk7
CiB9CiAKIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gQ0ZEaWN0aW9uYXJ5UHJvcGVy
dHlCYWc6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0RlZmF1bHREb3dubG9hZERlbGVnYXRlLmNwcAppbmRleCAxYTgwYzRkNmU4ZTIyMmNmMDU2YTk3
YjcxOTY1MDRkOTY3YWUwZmMyLi4zMDJmNjM3YWJjMDI0MTI3NGNiZTIwNTEwNjljMjg5NWU3ZjZl
MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0RG93bmxvYWRE
ZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vRGVmYXVsdERvd25sb2Fk
RGVsZWdhdGUuY3BwCkBAIC00NSwxMyArNDUsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6RGVmYXVsdERvd25sb2FkRGVsZWdhdGUoKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0RG93
bmxvYWREZWxlZ2F0ZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdERvd25s
b2FkRGVsZWdhdGUiX3MpOwogfQogCiBEZWZhdWx0RG93bmxvYWREZWxlZ2F0ZTo6fkRlZmF1bHRE
b3dubG9hZERlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLnJlbW92ZSgiRGVmYXVsdERvd25sb2FkRGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIkRlZmF1bHREb3dubG9hZERlbGVnYXRlIl9zKTsKICAgICBIYXNoU2V0
PElXZWJEb3dubG9hZCo+OjppdGVyYXRvciBpID0gbV9kb3dubG9hZHMuYmVnaW4oKTsKICAgICBm
b3IgKDtpICE9IG1fZG93bmxvYWRzLmVuZCgpOyArK2kpCiAgICAgICAgICgqaSktPlJlbGVhc2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxl
Z2F0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9EZWZhdWx0UG9saWN5RGVsZWdhdGUu
Y3BwCmluZGV4IGU4ZTVmNWM0Y2MxMWExMjA4M2JiZTRiNTE4YjJjNDg2ZWQ1NjhjODkuLjFmYThj
MzU0ZGZiYTExNzliZDczZTM0ZGVkMmE4OWRiM2Q0YWU1MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vRGVmYXVsdFBvbGljeURlbGVnYXRlLmNwcApAQCAtNDMsMTMgKzQzLDEz
IEBAIHR5cGVkZWYgZW51bSBXZWJFeHRyYU5hdmlnYXRpb25UeXBlIHsKIERlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZTo6RGVmYXVsdFBvbGljeURlbGVnYXRlKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiRGVmYXVsdFBvbGljeURlbGVnYXRlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkuYWRkKCJEZWZhdWx0UG9saWN5RGVsZWdhdGUiX3MpOwogfQogCiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGU6On5EZWZhdWx0UG9saWN5RGVsZWdhdGUoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJEZWZhdWx0UG9saWN5
RGVsZWdhdGUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIkRlZmF1bHRQb2xpY3lE
ZWxlZ2F0ZSJfcyk7CiB9CiAKIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSogRGVmYXVsdFBvbGljeURl
bGVnYXRlOjpzaGFyZWRJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9NZW1vcnlTdHJlYW0uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vTWVtb3J5U3Ry
ZWFtLmNwcAppbmRleCAzNjBhZWRjZWFjY2IxZmJkZDFkNDRhZDQyZDhjMDRjNmYwNGI2MTllLi45
ZGE1OTYwNTY0YTViMjZiNjU3Y2Q2ZGFlNDBmNjYzMGI2MWFkYmU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9NZW1vcnlTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL01lbW9yeVN0cmVhbS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQCBNZW1vcnlTdHJl
YW06Ok1lbW9yeVN0cmVhbShSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICA6IG1f
YnVmZmVyKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiTWVtb3J5U3RyZWFtIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJNZW1vcnlTdHJlYW0iX3MpOwogfQogCiBNZW1vcnlTdHJlYW06On5NZW1vcnlTdHJlYW0o
KQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJN
ZW1vcnlTdHJlYW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIk1lbW9yeVN0cmVh
bSJfcyk7CiB9CiAKIENPTVB0cjxNZW1vcnlTdHJlYW0+IE1lbW9yeVN0cmVhbTo6Y3JlYXRlSW5z
dGFuY2UoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJBY3Rpb25Qcm9wZXJ0eUJhZy5jcHAKaW5kZXggNmY3NTdiMzg2ZDE1Zjkx
ZjI5NmM0ZTRkODA1MjRmM2EyZTNjYjE2NC4uZTk3YzQxMzI0NzE2OTdjOWNmMTljYzE5YTU2NDQ5
OWUyOWEwMjVjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQWN0aW9u
UHJvcGVydHlCYWcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFjdGlvblBy
b3BlcnR5QmFnLmNwcApAQCAtNDUsMTMgKzQ1LDEzIEBAIFdlYkFjdGlvblByb3BlcnR5QmFnOjpX
ZWJBY3Rpb25Qcm9wZXJ0eUJhZyhjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0
CiAgICAgLCBtX2ZyYW1lKFdURk1vdmUoZnJhbWUpKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBY3Rpb25Qcm9wZXJ0eUJhZyIpOworICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQWN0aW9uUHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJB
Y3Rpb25Qcm9wZXJ0eUJhZzo6fldlYkFjdGlvblByb3BlcnR5QmFnKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQWN0aW9uUHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkFjdGlvblByb3BlcnR5QmFn
Il9zKTsKIH0KIAogV2ViQWN0aW9uUHJvcGVydHlCYWcqIFdlYkFjdGlvblByb3BlcnR5QmFnOjpj
cmVhdGVJbnN0YW5jZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFJlZlB0cjxIVE1M
Rm9ybUVsZW1lbnQ+JiYgZm9ybSwgUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA4ZjI3MTYyYmJh
ZjE4ZWUxYzExOGI5NTExZjUxYjQ3ZTQ0ODU3NzRjLi5mMzEwMmU1MjY4N2U5YzJkNTViYjY2YTg3
OGIwNGExY2Q2M2FlNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJB
cHBsaWNhdGlvbkNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcHBs
aWNhdGlvbkNhY2hlLmNwcApAQCAtNTAsMTMgKzUwLDEzIEBAIFdlYkFwcGxpY2F0aW9uQ2FjaGU6
OldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogICAgIDogbV9yZWZDb3VudCgwKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcHBsaWNhdGlvbkNhY2hlIl9zKTsK
IH0KIAogV2ViQXBwbGljYXRpb25DYWNoZTo6fldlYkFwcGxpY2F0aW9uQ2FjaGUoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNh
dGlvbkNhY2hlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcHBsaWNhdGlv
bkNhY2hlIl9zKTsKIH0KIAogV2ViQXBwbGljYXRpb25DYWNoZSogV2ViQXBwbGljYXRpb25DYWNo
ZTo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgU3RyaW5nIGFwcGxp
Y2F0aW9uQ2FjaGVQYXRoKCkKIAogV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UmIFdl
YkFwcGxpY2F0aW9uQ2FjaGU6OnN0b3JhZ2UoKQogewotICAgIHN0YXRpYyBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZSYgc3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpjcmVhdGUoYXBw
bGljYXRpb25DYWNoZVBhdGgoKSwgIkFwcGxpY2F0aW9uQ2FjaGUiKS5sZWFrUmVmKCk7CisgICAg
c3RhdGljIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlJiBzdG9yYWdlID0gQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2U6OmNyZWF0ZShhcHBsaWNhdGlvbkNhY2hlUGF0aCgpLCAiQXBwbGljYXRpb25DYWNo
ZSJfcykubGVha1JlZigpOwogCiAgICAgcmV0dXJuIHN0b3JhZ2U7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJBcmNoaXZlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkFyY2hpdmUuY3BwCmluZGV4IDgxNTc5OTYxMDc2N2UwYmI5YWQyMjQ1NjdkNzI1
Y2QzY2RjZGIxZmYuLjE3ZGViYzQ4N2U1NDJmY2UzYjcyZjZjMzE1NWM5MDk2ZTQwMjY5YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkFyY2hpdmUuY3BwCkBAIC02MiwxMyArNjIsMTMgQEAg
V2ViQXJjaGl2ZTo6V2ViQXJjaGl2ZShSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4mJiBjb3JlQXJj
aGl2ZSkKICNlbmRpZgogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJBcmNoaXZlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJBcmNo
aXZlIl9zKTsKIH0KIAogV2ViQXJjaGl2ZTo6fldlYkFyY2hpdmUoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJBcmNoaXZlIl9zKTsKIH0KIAogSFJFU1VMVCBX
ZWJBcmNoaXZlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8g
dm9pZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJCYWNrRm9y
d2FyZExpc3QuY3BwCmluZGV4IDkwNGFjMmQyODEwNDc4MmRiZTIzZTY5YzQ3YTBhNDFjZWFhZmFh
NTIuLjExNmFhNDIwMTc2OGQ4MjU0NTk3ZDZhNTExYzViOTgyMzUwN2Y2YjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmNwcApAQCAtNTQsNyArNTQs
NyBAQCBXZWJCYWNrRm9yd2FyZExpc3Q6OldlYkJhY2tGb3J3YXJkTGlzdChSZWZQdHI8QmFja0Zv
cndhcmRMaXN0PiYmIGJhY2tGb3J3YXJkTGlzdAogICAgIGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJz
KCkuc2V0KG1fYmFja0ZvcndhcmRMaXN0LmdldCgpLCB0aGlzKTsKIAogICAgIGdDbGFzc0NvdW50
Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJCYWNrRm9yd2FyZExpc3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkJhY2tGb3J3YXJkTGlzdCJfcyk7CiB9CiAKIFdl
YkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCkBAIC02NSw3ICs2NSw3IEBA
IFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgYmFja0Zvcndh
cmRMaXN0V3JhcHBlcnMoKS5yZW1vdmUobV9iYWNrRm9yd2FyZExpc3QuZ2V0KCkpOwogCiAgICAg
Z0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkJhY2tGb3J3
YXJkTGlzdCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQmFja0ZvcndhcmRM
aXN0Il9zKTsKIH0KIAogV2ViQmFja0ZvcndhcmRMaXN0KiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZUluc3RhbmNlKFJlZlB0cjxCYWNrRm9yd2FyZExpc3Q+JiYgYmFja0ZvcndhcmRMaXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ2FjaGUuY3BwCmluZGV4IGRlODUwZTcxM2IwMzQ4OTBjNTU3
MzYxNGIzMzY4MmRlMjg5NGFjOGMuLjhiMTZiNDNkNDFmOWYzMzg0ZTgwYzI4YWE1YTI4MTJjMTVk
ZWIzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDYWNoZS5jcHAKQEAgLTQ3LDEzICs0Nywx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIFdlYkNhY2hlOjpXZWJDYWNoZSgpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkNhY2hlIik7
CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDYWNoZSJfcyk7CiB9CiAKIFdlYkNhY2hl
Ojp+V2ViQ2FjaGUoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJDYWNoZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2Vi
Q2FjaGUiX3MpOwogfQogCiBXZWJDYWNoZSogV2ViQ2FjaGU6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdGF0aXN0aWNzLmNwcAppbmRleCAzNTY5
ODNjNTJiMzc0OGE0Y2RiY2E1YWQ5MWY5NTM1MTJhODg5YmUwLi5mMTMxNmRlNDZjMjEzNWE2ZDI2
ZmFiOWQxNDRkZWIzZjgxZjA4OTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN0YXRpc3RpY3MuY3BwCkBAIC00OCwxMyArNDgsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiBXZWJDb3JlU3RhdGlzdGljczo6V2ViQ29yZVN0YXRpc3RpY3MoKQogewogICAgIGdD
bGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJDb3JlU3RhdGlzdGlj
cyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViQ29yZVN0YXRpc3RpY3MiX3MpOwog
fQogCiBXZWJDb3JlU3RhdGlzdGljczo6fldlYkNvcmVTdGF0aXN0aWNzKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViQ29yZVN0YXRpc3Rp
Y3MiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkNvcmVTdGF0aXN0aWNzIl9z
KTsKIH0KIAogV2ViQ29yZVN0YXRpc3RpY3MqIFdlYkNvcmVTdGF0aXN0aWNzOjpjcmVhdGVJbnN0
YW5jZSgpCkBAIC0xNDksNyArMTQ5LDcgQEAgSFJFU1VMVCBXZWJDb3JlU3RhdGlzdGljczo6amF2
YVNjcmlwdFByb3RlY3RlZE9iamVjdFR5cGVDb3VudHMoX0NPTV9PdXRwdHJfb3B0XwogICAgIEl0
ZXJhdG9yIGVuZCA9IGpzT2JqZWN0VHlwZU5hbWVzLT5lbmQoKTsKICAgICBIYXNoTWFwPFN0cmlu
ZywgaW50PiB0eXBlQ291bnRNYXA7CiAgICAgZm9yIChJdGVyYXRvciBjdXJyZW50ID0ganNPYmpl
Y3RUeXBlTmFtZXMtPmJlZ2luKCk7IGN1cnJlbnQgIT0gZW5kOyArK2N1cnJlbnQpCi0gICAgICAg
IHR5cGVDb3VudE1hcC5zZXQoY3VycmVudC0+a2V5LCBjdXJyZW50LT52YWx1ZSk7CisgICAgICAg
IHR5cGVDb3VudE1hcC5zZXQoU3RyaW5nIHsgY3VycmVudC0+a2V5IH0sIGN1cnJlbnQtPnZhbHVl
KTsKIAogICAgIENPTVB0cjxJUHJvcGVydHlCYWcyPiByZXN1bHRzKEFkb3B0Q09NLCBDT01Qcm9w
ZXJ0eUJhZzxpbnQ+OjpjcmVhdGVJbnN0YW5jZSh0eXBlQ291bnRNYXApKTsKICAgICByZXN1bHRz
LmNvcHlSZWZUbyh0eXBlTmFtZXNBbmRDb3VudHMpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIEhSRVNV
TFQgV2ViQ29yZVN0YXRpc3RpY3M6OmphdmFTY3JpcHRPYmplY3RUeXBlQ291bnRzKF9DT01fT3V0
cHRyX29wdF8gSVByb3BlcnR5CiAgICAgSXRlcmF0b3IgZW5kID0ganNPYmplY3RUeXBlTmFtZXMt
PmVuZCgpOwogICAgIEhhc2hNYXA8U3RyaW5nLCBpbnQ+IHR5cGVDb3VudE1hcDsKICAgICBmb3Ig
KEl0ZXJhdG9yIGN1cnJlbnQgPSBqc09iamVjdFR5cGVOYW1lcy0+YmVnaW4oKTsgY3VycmVudCAh
PSBlbmQ7ICsrY3VycmVudCkKLSAgICAgICAgdHlwZUNvdW50TWFwLnNldChjdXJyZW50LT5rZXks
IGN1cnJlbnQtPnZhbHVlKTsKKyAgICAgICAgdHlwZUNvdW50TWFwLnNldChTdHJpbmcgeyBjdXJy
ZW50LT5rZXkgfSwgY3VycmVudC0+dmFsdWUpOwogCiAgICAgQ09NUHRyPElQcm9wZXJ0eUJhZzI+
IHJlc3VsdHMoQWRvcHRDT00sIENPTVByb3BlcnR5QmFnPGludD46OmNyZWF0ZUluc3RhbmNlKHR5
cGVDb3VudE1hcCkpOwogICAgIHJlc3VsdHMuY29weVJlZlRvKHR5cGVOYW1lc0FuZENvdW50cyk7
CkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBIUkVTVUxUIFdlYkNvcmVTdGF0aXN0aWNzOjptZW1vcnlT
dGF0aXN0aWNzKF9DT01fT3V0cHRyX29wdF8gSVByb3BlcnR5QmFnKiogc3RhdAogICAgIEdsb2Jh
bE1lbW9yeVN0YXRpc3RpY3MgZ2xvYmFsTWVtb3J5U3RhdHMgPSBnbG9iYWxNZW1vcnlTdGF0aXN0
aWNzKCk7CiAKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQgbG9uZyBsb25nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+IGZpZWxkczsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jUmVz
ZXJ2ZWRWTUJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9j
U3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKLSAgICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9j
Q29tbWl0dGVkVk1CeXRlcyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1h
bGxvY1N0YXRpc3RpY3MuY29tbWl0dGVkVk1CeXRlcykpOwotICAgIGZpZWxkcy5hZGQoIkZhc3RN
YWxsb2NGcmVlTGlzdEJ5dGVzIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihmYXN0
TWFsbG9jU3RhdGlzdGljcy5mcmVlTGlzdEJ5dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNj
cmlwdEhlYXBTaXplIiwgaGVhcFNpemUpOwotICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVl
U2l6ZSIsIGhlYXBGcmVlKTsKLSAgICBmaWVsZHMuYWRkKCJKYXZhU2NyaXB0U3RhY2tTaXplIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPihnbG9iYWxNZW1vcnlTdGF0cy5zdGFja0J5
dGVzKSk7Ci0gICAgZmllbGRzLmFkZCgiSmF2YVNjcmlwdEpJVFNpemUiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nIGxvbmc+KGdsb2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CisgICAgZmll
bGRzLmFkZCgiRmFzdE1hbGxvY1Jlc2VydmVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5yZXNlcnZlZFZNQnl0ZXMpKTsKKyAg
ICBmaWVsZHMuYWRkKCJGYXN0TWFsbG9jQ29tbWl0dGVkVk1CeXRlcyJfcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZyBsb25nPihmYXN0TWFsbG9jU3RhdGlzdGljcy5jb21taXR0ZWRWTUJ5dGVz
KSk7CisgICAgZmllbGRzLmFkZCgiRmFzdE1hbGxvY0ZyZWVMaXN0Qnl0ZXMiX3MsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oZmFzdE1hbGxvY1N0YXRpc3RpY3MuZnJlZUxpc3RCeXRl
cykpOworICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRIZWFwU2l6ZSJfcywgaGVhcFNpemUpOwor
ICAgIGZpZWxkcy5hZGQoIkphdmFTY3JpcHRGcmVlU2l6ZSJfcywgaGVhcEZyZWUpOworICAgIGZp
ZWxkcy5hZGQoIkphdmFTY3JpcHRTdGFja1NpemUiX3MsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmcgbG9uZz4oZ2xvYmFsTWVtb3J5U3RhdHMuc3RhY2tCeXRlcykpOworICAgIGZpZWxkcy5hZGQo
IkphdmFTY3JpcHRKSVRTaXplIl9zLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KGds
b2JhbE1lbW9yeVN0YXRzLkpJVEJ5dGVzKSk7CiAKICAgICAqc3RhdGlzdGljcyA9IENPTVByb3Bl
cnR5QmFnPHVuc2lnbmVkIGxvbmcgbG9uZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhh
c2g+OjphZG9wdChmaWVsZHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCAyMTE1OThkMzlh
NmFmMzYxY2MyZTQwNjc5MDZlMmI4Njg1N2VlZmMxLi5iOWY0MTA5MzU5YjM2ZDUxY2FjYTQzMzM4
ZDkyOTFkMjVmY2Q4NjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBA
QCBib29sIFdlYkVkaXRvckNsaWVudDo6ZG9UZXh0RmllbGRDb21tYW5kRnJvbUV2ZW50KEVsZW1l
bnQqIGUsIEtleWJvYXJkRXZlbnQqIGtlKQogICAgICAgICBpZiAoZG9tRWxlbWVudCkgewogICAg
ICAgICAgICAgSURPTUhUTUxJbnB1dEVsZW1lbnQqIGRvbUlucHV0RWxlbWVudDsKICAgICAgICAg
ICAgIGlmIChTVUNDRUVERUQoZG9tRWxlbWVudC0+UXVlcnlJbnRlcmZhY2UoSUlEX0lET01IVE1M
SW5wdXRFbGVtZW50LCAodm9pZCoqKSZkb21JbnB1dEVsZW1lbnQpKSkgewotICAgICAgICAgICAg
ICAgIFN0cmluZyBjb21tYW5kID0gbV93ZWJWaWV3LT5pbnRlcnByZXRLZXlFdmVudChrZSk7Cisg
ICAgICAgICAgICAgICAgU3RyaW5nIGNvbW1hbmQgeyBtX3dlYlZpZXctPmludGVycHJldEtleUV2
ZW50KGtlKSB9OwogICAgICAgICAgICAgICAgIC8vIFdlIGFsbG93IGVtcHR5IGNvbW1hbmRzIGhl
cmUgYmVjYXVzZSB0aGUgYXBwIGNvZGUgYWN0dWFsbHkgZGVwZW5kcyBvbiB0aGlzIGJlaW5nIGNh
bGxlZCBmb3IgYWxsIGtleSBwcmVzc2VzLgogICAgICAgICAgICAgICAgIC8vIFdlIG1heSB3YW50
IHRvIHJldmlzaXQgdGhpcyBsYXRlciBiZWNhdXNlIGl0IGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vu
c2UgdG8gc2VuZCBhbiBlbXB0eSBjb21tYW5kLgogICAgICAgICAgICAgICAgIGZvcm1EZWxlZ2F0
ZS0+ZG9QbGF0Zm9ybUNvbW1hbmQoZG9tSW5wdXRFbGVtZW50LCBCU3RyaW5nKGNvbW1hbmQpLCBr
aXQoZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSwgJnJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJEYXRhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkRhdGFTb3VyY2UuY3BwCmluZGV4IDllMDMxZDllZmI3OWQ5NGE5ZDM1NjJiMDZkYmRl
ZjI3MWU1ZDhjNzMuLmY3OGMxYmQyYTg1MmI3NGYxNmQ4MjAzNTdmYTYyNzlmMjE2Y2Y1ZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFTb3VyY2UuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIFdlYkRhdGFTb3VyY2U6OldlYkRhdGFTb3VyY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRl
cikKIHsKICAgICBXZWJEYXRhU291cmNlQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRGF0YVNvdXJjZSJfcyk7CiB9CiAKIFdlYkRhdGFTb3VyY2U6On5XZWJE
YXRhU291cmNlKCkKQEAgLTY2LDcgKzY2LDcgQEAgV2ViRGF0YVNvdXJjZTo6fldlYkRhdGFTb3Vy
Y2UoKQogICAgICAgICBtX2xvYWRlci0+ZGV0YWNoRGF0YVNvdXJjZSgpOwogICAgIFdlYkRhdGFT
b3VyY2VDb3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJEYXRhU291cmNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJEYXRhU291cmNlIl9zKTsKIH0KIAogV2ViRGF0YVNvdXJjZSogV2ViRGF0YVNvdXJjZTo6Y3Jl
YXRlSW5zdGFuY2UoV2ViRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDY3Njc3MjAzMTVjMzkzM2Nk
YzIyZTQyNTJlM2VhMzM4ZmY4OTI1NDYuLjhmMzc2NTQxMjU2ZGM2YWVkMTA3ZTA1MTMxMzhmMGVm
MzMxNDNlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRhdGFiYXNl
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMTYwLDEzICsxNjAsMTMgQEAgV2ViRGF0YWJhc2VNYW5hZ2VyKiBXZWJEYXRh
YmFzZU1hbmFnZXI6OmNyZWF0ZUluc3RhbmNlKCkKIFdlYkRhdGFiYXNlTWFuYWdlcjo6V2ViRGF0
YWJhc2VNYW5hZ2VyKCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViRGF0YWJhc2VNYW5hZ2VyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJEYXRhYmFzZU1hbmFnZXIiX3MpOwogfQogCiBXZWJEYXRhYmFzZU1hbmFnZXI6On5XZWJE
YXRhYmFzZU1hbmFnZXIoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNv
dW50KCkucmVtb3ZlKCJXZWJEYXRhYmFzZU1hbmFnZXIiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQo
KS5yZW1vdmUoIldlYkRhdGFiYXNlTWFuYWdlciJfcyk7CiB9CiAKIC8vIElVbmtub3duIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1l
bnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG9jdW1lbnRMb2FkZXIu
Y3BwCmluZGV4IDkyZDBmYTcyY2Q2ZjQyOGE1MmExYzEwOGE4OGU3ZTNhMTkxZDY3ZjMuLjI1NmEz
NTg4MDdkN2VhMjU4MmM2NmI2MjhlZWMzYzkxOTAxMjgzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkRvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJEb2N1bWVudExvYWRlci5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgV2ViRG9j
dW1lbnRMb2FkZXI6OldlYkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3Vic3QKICAgICAsIG1fZGV0YWNoZWREYXRhU291cmNlKDApCiB7CiAgICAg
Z0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvY3VtZW50TG9h
ZGVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb2N1bWVudExvYWRlciJfcyk7
CiB9CiAKIFJlZjxXZWJEb2N1bWVudExvYWRlcj4gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBkYXRh
KQpAQCAtNDYsNyArNDYsNyBAQCBSZWY8V2ViRG9jdW1lbnRMb2FkZXI+IFdlYkRvY3VtZW50TG9h
ZGVyOjpjcmVhdGUoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LAogV2ViRG9jdW1lbnRM
b2FkZXI6On5XZWJEb2N1bWVudExvYWRlcigpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkRvY3VtZW50TG9hZGVyIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb2N1bWVudExvYWRlciJfcyk7CiAgICAgaWYgKG1fZGF0
YVNvdXJjZSkgewogICAgICAgICBBU1NFUlQoIW1fZGV0YWNoZWREYXRhU291cmNlKTsKICAgICAg
ICAgbV9kYXRhU291cmNlLT5SZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJEb3du
bG9hZC5jcHAKaW5kZXggYWY3OTUyYTdlNzU2YWIxNmNlZWM2ZWIxZTRhZGQzZmFkYzJmZDczOS4u
OTk0NjkwNDU1MWMwY2M2ZDFjZTFjYmU5Mjg4Y2E3M2E4YmI2OGYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYkRvd25sb2FkLmNwcApAQCAtNTMsNyArNTMsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIFdlYkRvd25sb2FkOjpXZWJEb3dubG9hZCgpCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkRvd25sb2FkIik7CisgICAgZ0Ns
YXNzTmFtZUNvdW50KCkuYWRkKCJXZWJEb3dubG9hZCJfcyk7CiB9CiAKIFdlYkRvd25sb2FkOjp+
V2ViRG93bmxvYWQoKQpAQCAtNjEsNyArNjEsNyBAQCBXZWJEb3dubG9hZDo6fldlYkRvd25sb2Fk
KCkKICAgICBMT0coRG93bmxvYWQsICJXZWJEb3dubG9hZCAtIERlc3Ryb3lpbmcgZG93bmxvYWQg
KCVwKSIsIHRoaXMpOwogICAgIGNhbmNlbCgpOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJEb3dubG9hZCIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRG93bmxvYWQiX3MpOwogfQogCiBXZWJEb3dubG9hZCogV2ViRG93bmxv
YWQ6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkRvd25sb2FkQ0ZOZXQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxv
YWRDRk5ldC5jcHAKaW5kZXggMTgxMGE2Njg1ODE4MTEwZTc3YzY5OWQ2MDBiZmM4YWI3ZDE0NmNm
NC4uZmM2NGI5YmM5OTk3ZDg0MjBhYjVjMTcwOWMzMTlmOTI1MmMxODc1OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViRG93bmxvYWRDRk5ldC5jcHAKQEAgLTMwNiw3ICszMDYsNyBA
QCBIUkVTVUxUIFdlYkRvd25sb2FkOjpjYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShfSW5f
b3B0XyBJV2ViVVJMQXV0aGVudGljYXRpbwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBu
ZWVkIGEgVVJMIG9yIGRlc2NyaXB0aW9uIGZvciB0aGlzIGVycm9yIGNvZGU/Ci0gICAgUmVzb3Vy
Y2VFcnJvciBlcnJvcihTdHJpbmcoV2ViVVJMRXJyb3JEb21haW4pLCBXZWJVUkxFcnJvclVzZXJD
YW5jZWxsZWRBdXRoZW50aWNhdGlvbiwgVVJMKCksICIiKTsKKyAgICBSZXNvdXJjZUVycm9yIGVy
cm9yKFN0cmluZyhXZWJVUkxFcnJvckRvbWFpbiksIFdlYlVSTEVycm9yVXNlckNhbmNlbGxlZEF1
dGhlbnRpY2F0aW9uLCBVUkwoKSwgZW1wdHlTdHJpbmcoKSk7CiAgICAgQ09NUHRyPFdlYkVycm9y
PiB3ZWJFcnJvcihBZG9wdENPTSwgV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGVycm9yKSk7CiAg
ICAgbV9kZWxlZ2F0ZS0+ZGlkRmFpbFdpdGhFcnJvcih0aGlzLCB3ZWJFcnJvci5nZXQoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkRyb3BTb3VyY2UuY3BwIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJjZS5jcHAKaW5kZXggNmJhYmY5MGI4
OWZhM2M5ZDY5OTVjZGM3YjliNzhjZTc1MjdlNjY5MC4uNWIxYzVkZmM3ZTg3MWJiMGQ4OGVmMjdi
ZjZmNGM0YWZlNjQyNjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
RHJvcFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRHJvcFNvdXJj
ZS5jcHAKQEAgLTUzLDEzICs1MywxMyBAQCBXZWJEcm9wU291cmNlOjpXZWJEcm9wU291cmNlKFdl
YlZpZXcqIHdlYlZpZXcpCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKICAgICBnQ2xhc3ND
b3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJvcFNvdXJjZSIpOworICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRHJvcFNvdXJjZSJfcyk7CiB9CiAKIFdlYkRyb3BT
b3VyY2U6On5XZWJEcm9wU291cmNlKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFz
c05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViRHJvcFNvdXJjZSJfcyk7CiB9CiAKIFNURE1FVEhPRElNUCBXZWJEcm9w
U291cmNlOjpRdWVyeUludGVyZmFjZShfSW5fIFJFRklJRCByaWlkLCBfQ09NX091dHB0cl8gdm9p
ZCoqIHBwdk9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVs
ZW1lbnRQcm9wZXJ0eUJhZy5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFbGVtZW50
UHJvcGVydHlCYWcuY3BwCmluZGV4IDhhZmJhMGY2ZDUzYWZkNTU1ODQ1YzE5NTM2YzJhOWMxZWM1
ZjM3ZDAuLmM2MWYxNzJkNDdmYjMxNzhiOWUwNzRjMjc5ODNkYWVjMjFhMGU1NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVsZW1lbnRQcm9wZXJ0eUJhZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRWxlbWVudFByb3BlcnR5QmFnLmNwcApAQCAt
NDYsMTMgKzQ2LDEzIEBAIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZzo6V2ViRWxlbWVudFByb3BlcnR5
QmFnKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCkKICAgICA6IG1fcmVzdWx0KG1ha2VVbmlx
dWU8SGl0VGVzdFJlc3VsdD4ocmVzdWx0KSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRWxlbWVudFByb3BlcnR5QmFnIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJFbGVtZW50UHJvcGVydHlCYWciX3MpOwogfQogCiBXZWJFbGVt
ZW50UHJvcGVydHlCYWc6On5XZWJFbGVtZW50UHJvcGVydHlCYWcoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFbGVtZW50UHJvcGVydHlC
YWciKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkVsZW1lbnRQcm9wZXJ0eUJh
ZyJfcyk7CiB9CiAKIFdlYkVsZW1lbnRQcm9wZXJ0eUJhZyogV2ViRWxlbWVudFByb3BlcnR5QmFn
OjpjcmVhdGVJbnN0YW5jZShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJFcnJvci5jcHAKaW5kZXggMTlkZTM3MWJlYTFjMTE2ZmQ3NjZkNmEzOTRkYjRl
YTgwZmJkYmZjMi4uNzE2MTIxOTIzM2ViYzEwYWMyODIzMjU2ZGZkZjM3MzZmZjk3ODEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRXJyb3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkVycm9yLmNwcApAQCAtNDYsMTMgKzQ2LDEzIEBAIFdlYkVy
cm9yOjpXZWJFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgSVByb3BlcnR5QmFnKiB1
c2VySW5mbykKICAgICAsIG1fZXJyb3IoZXJyb3IpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkVycm9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJFcnJvciJfcyk7CiB9CiAKIFdlYkVycm9yOjp+V2ViRXJyb3IoKQogewogICAg
IGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJFcnJvciIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRXJyb3IiX3MpOwogfQogCiBXZWJF
cnJvciogV2ViRXJyb3I6OmNyZWF0ZUluc3RhbmNlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
LCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViRnJhbWUuY3Bw
CmluZGV4IDU5NDhiMGVjNWI4MGQyNzliMjY0MzRmNDJmNDVjZmExN2JmN2ZiY2EuLjA3YmQ0NmZj
OTk4ZTE4ZTM2NzgzMmM2MGFjZmE3NDZiZWI4ZTY2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJGcmFtZS5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCBXZWJGcmFtZTo6V2ViRnJhbWUoKQogewog
ICAgIFdlYkZyYW1lQ291bnQrKzsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViRnJhbWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkZy
YW1lIl9zKTsKIH0KIAogV2ViRnJhbWU6On5XZWJGcmFtZSgpCkBAIC0yNTEsNyArMjUxLDcgQEAg
V2ViRnJhbWU6On5XZWJGcmFtZSgpCiAgICAgZGVsZXRlIGQ7CiAgICAgV2ViRnJhbWVDb3VudC0t
OwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJG
cmFtZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWUiX3MpOwogfQog
CiBXZWJGcmFtZSogV2ViRnJhbWU6OmNyZWF0ZUluc3RhbmNlKCkKQEAgLTU2Myw3ICs1NjMsNyBA
QCB2b2lkIFdlYkZyYW1lOjpsb2FkRGF0YShSZWY8V2ViQ29yZTo6RnJhZ21lbnRlZFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBCU1RSIG1pbWVUeQogewogICAgIFN0cmluZyBtaW1lVHlwZVN0cmluZyht
aW1lVHlwZSwgU3lzU3RyaW5nTGVuKG1pbWVUeXBlKSk7CiAgICAgaWYgKCFtaW1lVHlwZSkKLSAg
ICAgICAgbWltZVR5cGVTdHJpbmcgPSAidGV4dC9odG1sIjsKKyAgICAgICAgbWltZVR5cGVTdHJp
bmcgPSAidGV4dC9odG1sIl9zOwogCiAgICAgU3RyaW5nIGVuY29kaW5nU3RyaW5nKHRleHRFbmNv
ZGluZ05hbWUsIFN5c1N0cmluZ0xlbih0ZXh0RW5jb2RpbmdOYW1lKSk7CiAKQEAgLTEwNTYsNyAr
MTA1Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBFX1VORVhQRUNURUQ7CiAKLSAgICBpZiAoIWNvcmVGcmFtZS0+
ZWRpdG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpKQorICAgIGlmICghY29yZUZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJTZWxlY3RBbGwiX3MpLmV4ZWN1dGUoKSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAogICAgIHJldHVybiBTX09LOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJGcmFtZVBvbGljeUxpc3RlbmVyLmNwcAppbmRleCBhZmVkMmI0ZTZhNDJi
OTgyOGEyZTQ0Nzc3NDFjZDU0NzYyNzM5MDc3Li45NDQ2OGJiNzNkMDY1MjY2MDBiNGU4ZTVhZGNk
NmI5MGRmOTY4ZTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcApAQCAtMzksMTMgKzM5LDEzIEBAIFdlYkZyYW1lUG9saWN5TGlz
dGVuZXI6OldlYkZyYW1lUG9saWN5TGlzdGVuZXIoUmVmUHRyPEZyYW1lPiYmIGZyYW1lKQogICAg
IDogbV9mcmFtZShXVEZNb3ZlKGZyYW1lKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFz
c05hbWVDb3VudCgpLmFkZCgiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZy
YW1lUG9saWN5TGlzdGVuZXI6On5XZWJGcmFtZVBvbGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xh
c3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lciJfcyk7CiB9CiAKIFdlYkZyYW1lUG9saWN5TGlzdGVuZXIqIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXI6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxGcmFtZT4mJiBmcmFtZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIu
Y3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ci5jcHAKaW5kZXggZGE0YzIyNzc5NmI3NDA2YzI1Y2YyMTg5MDlkNWJlMGExYTc1YzA5OS4uNjg5
MmY3NzFhZGRkMWE5MzhlYTE0NDM0MDNjOTdmMzQ5YjBiODNlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci5jcHAK
QEAgLTQyLDEzICs0MiwxMyBAQCBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyKFJlZlB0cjxHZW9sb2NhdGlvbj4mJgogICAgICwgbV9nZW9s
b2NhdGlvbihXVEZNb3ZlKGdlb2xvY2F0aW9uKSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAg
IGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJf
cyk7CiB9CiAKIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI6On5XZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciIpOworICAgIGdDbGFzc05h
bWVDb3VudCgpLnJlbW92ZSgiV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciJfcyk7CiB9CiAK
IC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYkdlb2xvY2F0aW9uUG9zaXRpb24uY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViR2VvbG9jYXRpb25Qb3NpdGlvbi5jcHAKaW5kZXggOTI0YzQ4YjEzYzQxNjVmZmU4ZjA4OGM4
N2QwNmRmNDljNjAzNDZiNS4uZmYxZmQ5MGM0Mzc5MzAzZGUzNWMwNGUwNzgyMWUxOTAzNTRmYzEx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViR2VvbG9jYXRpb25Qb3Np
dGlvbi5jcHAKQEAgLTM2LDEzICszNiwxMyBAQCBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb3NpdGlv
bj4gV2ViR2VvbG9jYXRpb25Qb3NpdGlvbjo6Y3JlYXRlSW5zdGFuY2UoKQogV2ViR2VvbG9jYXRp
b25Qb3NpdGlvbjo6V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7CiAgICAgZ0NsYXNzQ291bnQr
KzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkdlb2xvY2F0aW9uUG9zaXRpb24iX3MpOwog
fQogCiBXZWJHZW9sb2NhdGlvblBvc2l0aW9uOjp+V2ViR2VvbG9jYXRpb25Qb3NpdGlvbigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdl
b2xvY2F0aW9uUG9zaXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkdl
b2xvY2F0aW9uUG9zaXRpb24iX3MpOwogfQogCiBIUkVTVUxUIFdlYkdlb2xvY2F0aW9uUG9zaXRp
b246OlF1ZXJ5SW50ZXJmYWNlKF9Jbl8gUkVGSUlEIHJpaWQsIF9DT01fT3V0cHRyXyB2b2lkKiog
cHB2T2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJl
cHJlc2VudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhUTUxSZXByZXNl
bnRhdGlvbi5jcHAKaW5kZXggNDZhYWFlOTdkN2JiYmQ2ZWNkMzY3MGJhOTRhM2JhM2NjZmZmODli
ZS4uODZhM2NiNmRhYTI5ZTIyNTBjMzE1NzkxMzVkM2QzNzdlMmFmZGQ4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSFRNTFJlcHJlc2VudGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIVE1MUmVwcmVzZW50YXRpb24uY3BwCkBAIC00Miw3
ICs0Miw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6V2ViSFRNTFJlcHJlc2VudGF0aW9uKCkK
IHsKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3VudCsrOwogICAgIGdDbGFzc0NvdW50Kys7
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7CiB9CiAK
IFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigpCkBAIC01NCw3
ICs1NCw3IEBAIFdlYkhUTUxSZXByZXNlbnRhdGlvbjo6fldlYkhUTUxSZXByZXNlbnRhdGlvbigp
CiAKICAgICBXZWJIVE1MUmVwcmVzZW50YXRpb25Db3VudC0tOwogICAgIGdDbGFzc0NvdW50LS07
Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJIVE1MUmVwcmVzZW50YXRpb24iKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhUTUxSZXByZXNlbnRhdGlvbiJfcyk7
CiB9CiAKIFdlYkhUTUxSZXByZXNlbnRhdGlvbiogV2ViSFRNTFJlcHJlc2VudGF0aW9uOjpjcmVh
dGVJbnN0YW5jZShXZWJGcmFtZSogZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3Rv
cnkuY3BwCmluZGV4IDNmMWViNmQ3MzhiZDNhMjQ1YTFjZjRlYmI4NjBlZjQ5NDkyMWY1NWYuLjUw
YThlNWY2YmNmMzBhYTQ4NDU0YmUwZDllMTJiOWM4ZDEzYTNiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHN0YXRpYyBpbmxpbmUgQ09N
UHRyPElQcm9wZXJ0eUJhZz4gY3JlYXRlVXNlckluZm9Gcm9tSGlzdG9yeUl0ZW0oQlNUUiBub3Rp
ZmljYXRpCiBXZWJIaXN0b3J5OjpXZWJIaXN0b3J5KCkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwot
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeSIpOworICAgIGdDbGFzc05hbWVD
b3VudCgpLmFkZCgiV2ViSGlzdG9yeSJfcyk7CiAKICAgICBtX3ByZWZlcmVuY2VzID0gV2ViUHJl
ZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJlZmVyZW5jZXMoKTsKIH0KQEAgLTk3LDcgKzk3LDcg
QEAgV2ViSGlzdG9yeTo6V2ViSGlzdG9yeSgpCiBXZWJIaXN0b3J5Ojp+V2ViSGlzdG9yeSgpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnkiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhpc3RvcnkiX3MpOwog
fQogCiBXZWJIaXN0b3J5KiBXZWJIaXN0b3J5OjpjcmVhdGVJbnN0YW5jZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggZmI4OGUzOWU3YjU2YWMzMmRj
ZjVjZjUwMTFjMzU0ODE3MWE2YzNiZS4uOGRkOWJkYWFhMjg4NzBjMGNmMzQyYzI0ODI3MTI1ZTZh
YTUzMDUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApA
QCAtNTMsNyArNTMsNyBAQCBXZWJIaXN0b3J5SXRlbTo6V2ViSGlzdG9yeUl0ZW0oUmVmUHRyPEhp
c3RvcnlJdGVtPiYmIGhpc3RvcnlJdGVtKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5zZXQo
bV9oaXN0b3J5SXRlbS5nZXQoKSwgdGhpcyk7CiAKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdD
bGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291
bnQoKS5hZGQoIldlYkhpc3RvcnlJdGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW06On5XZWJI
aXN0b3J5SXRlbSgpCkBAIC02Miw3ICs2Miw3IEBAIFdlYkhpc3RvcnlJdGVtOjp+V2ViSGlzdG9y
eUl0ZW0oKQogICAgIGhpc3RvcnlJdGVtV3JhcHBlcnMoKS5yZW1vdmUobV9oaXN0b3J5SXRlbS5n
ZXQoKSk7CiAKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViSGlzdG9yeUl0ZW0iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYkhp
c3RvcnlJdGVtIl9zKTsKIH0KIAogV2ViSGlzdG9yeUl0ZW0qIFdlYkhpc3RvcnlJdGVtOjpjcmVh
dGVJbnN0YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJJbnNw
ZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSW5zcGVjdG9yLmNwcAppbmRl
eCBmNjIxOWE2NmRhYTk1ZGM1NjIyNDE1YjNmOTkwMzc1ZTdiN2ZiNzJjLi40NDdkOTJhM2EzY2Nk
YTU2YTIyNTJiODI2NGM2NTQ1NThhYzYyZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJJbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
Ykluc3BlY3Rvci5jcHAKQEAgLTUxLDEzICs1MSwxMyBAQCBXZWJJbnNwZWN0b3I6OldlYkluc3Bl
Y3RvcihXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JDbGllbnQqIGluc3Bl
YwogICAgIEFTU0VSVF9BUkcoaW5zcGVjdGVkV2ViVmlldywgaW5zcGVjdGVkV2ViVmlldyk7CiAK
ICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViSW5zcGVj
dG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJJbnNwZWN0b3IiX3MpOwogfQog
CiBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0g
ICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJJbnNwZWN0b3IiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYkluc3BlY3RvciJfcyk7CiB9CiAKIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50KiBXZWJJbnNwZWN0b3I6OmZyb250ZW5kQ2xpZW50KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkphdmFTY3JpcHRDb2xsZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKaW5kZXggYzhl
NGJlOGFjMjFiZGI2NjE4ZDViY2IxMmIxOTk2NWM5MjkxN2M5Yy4uNzU4NjYyNzJkNWY3ZGNiM2E1
YTA4NjJlYmM5YTQxN2ZlYjcyYjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViSmF2YVNjcmlwdENvbGxlY3Rvci5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIFdlYkphdmFTY3JpcHRDb2xsZWN0b3I6OldlYkphdmFTY3JpcHRD
b2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0KIAogV2ViSmF2YVNjcmlwdENvbGxlY3Rv
cjo6fldlYkphdmFTY3JpcHRDb2xsZWN0b3IoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIik7CisgICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJKYXZhU2NyaXB0Q29sbGVjdG9yIl9zKTsKIH0K
IAogV2ViSmF2YVNjcmlwdENvbGxlY3RvciogV2ViSmF2YVNjcmlwdENvbGxlY3Rvcjo6Y3JlYXRl
SW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xh
c3NGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdENsYXNzRmFjdG9y
eS5jcHAKaW5kZXggY2U4NjIwZmQ0YmQ3N2M3ZWVmOGRiOGQ3NDY0M2Y5NTJhM2FmMWE1Ni4uNmVl
MDcyNTMyZWU0MDkxYWFjYTIwZjQ4MWJhMzNkZDEwM2I0ZGM1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0Q2xhc3NGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJLaXRDbGFzc0ZhY3RvcnkuY3BwCkBAIC02OSwxMyArNjksMTMgQEAg
V2ViS2l0Q2xhc3NGYWN0b3J5OjpXZWJLaXRDbGFzc0ZhY3RvcnkoQ0xTSUQgdGFyZ2V0Q2xhc3Mp
CiAgICAgV2ViQ29yZTo6cG9wdWxhdGVKSVRPcGVyYXRpb25zKCk7CiAKICAgICBnQ2xhc3NDb3Vu
dCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0Q2xhc3NGYWN0b3J5Iik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRDbGFzc0ZhY3RvcnkiX3MpOwogfQogCiBX
ZWJLaXRDbGFzc0ZhY3Rvcnk6On5XZWJLaXRDbGFzc0ZhY3RvcnkoKQogewogICAgIGdDbGFzc0Nv
dW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRDbGFzc0ZhY3Rvcnki
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYktpdENsYXNzRmFjdG9yeSJfcyk7
CiB9CiAKIC8vIElVbmtub3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYktpdE1lc3NhZ2VMb29wLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYktpdE1lc3NhZ2VMb29wLmNwcAppbmRleCA5MzdhNjY2OWU5MDhmZWU2MDdiYzQxZDViOTI3
N2M3YTYwMWRlZDY5Li5lNjljMGM4MDg5OGJmNzE1MDhiMDMyZDk5MjE4YmQxMmY3NTk1YWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJLaXRNZXNzYWdlTG9vcC5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0TWVzc2FnZUxvb3AuY3BwCkBAIC0z
NCwxMyArMzQsMTMgQEAKIFdlYktpdE1lc3NhZ2VMb29wOjpXZWJLaXRNZXNzYWdlTG9vcCgpCiB7
CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYktpdE1l
c3NhZ2VMb29wIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJLaXRNZXNzYWdlTG9v
cCJfcyk7CiB9CiAKIFdlYktpdE1lc3NhZ2VMb29wOjp+V2ViS2l0TWVzc2FnZUxvb3AoKQogewog
ICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJLaXRN
ZXNzYWdlTG9vcCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0TWVzc2Fn
ZUxvb3AiX3MpOwogfQogCiBXZWJLaXRNZXNzYWdlTG9vcCogV2ViS2l0TWVzc2FnZUxvb3A6OmNy
ZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktp
dFN0YXRpc3RpY3MuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGlj
cy5jcHAKaW5kZXggMTI2M2JjMGMxMWY5OGYxZGZlYzdlZjhkZjc4ZTliZGY4YmFjOTBjZC4uZjUx
NTFjYmUwYmI2ZjZkMDYyMzM5YTQ5MGJkZmNiNDc3YThmNGU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViS2l0U3RhdGlzdGljcy5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBpbnQg
V2ViRnJhbWVWaWV3Q291bnQ7CiBXZWJLaXRTdGF0aXN0aWNzOjpXZWJLaXRTdGF0aXN0aWNzKCkK
IHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0
U3RhdGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViS2l0U3RhdGlzdGlj
cyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3M6On5XZWJLaXRTdGF0aXN0aWNzKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3Rh
dGlzdGljcyIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViS2l0U3RhdGlzdGlj
cyJfcyk7CiB9CiAKIFdlYktpdFN0YXRpc3RpY3MqIFdlYktpdFN0YXRpc3RpY3M6OmNyZWF0ZUlu
c3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVV
UkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk11dGFibGVVUkxSZXF1
ZXN0LmNwcAppbmRleCA1YzkxMjU3NzI1MjY5ZWJiMzQyNTAzY2M3MTAzMTk0YzMxMTVlNWU3Li4y
NDQxMDY2ODg2NzZmNTcyYjk2ZDkyNWJmZjFhYjA1NjhlNmFkYTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJNdXRhYmxlVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViTXV0YWJsZVVSTFJlcXVlc3QuY3BwCkBAIC00OSw3ICs0OSw3
IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpXZWJNdXRhYmxlVVJMUmVxdWVzdChib29sIGlzTXV0
YWJsZSkKICAgICA6IG1faXNNdXRhYmxlKGlzTXV0YWJsZSkKIHsKICAgICBnQ2xhc3NDb3VudCsr
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsKKyAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsKIH0KIAog
V2ViTXV0YWJsZVVSTFJlcXVlc3QqIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5j
ZSgpCkBAIC05Myw3ICs5Myw3IEBAIFdlYk11dGFibGVVUkxSZXF1ZXN0KiBXZWJNdXRhYmxlVVJM
UmVxdWVzdDo6Y3JlYXRlSW1tdXRhYmxlSW5zdGFuY2UoY29uc3QgUmVzb3VyCiBXZWJNdXRhYmxl
VVJMUmVxdWVzdDo6fldlYk11dGFibGVVUkxSZXF1ZXN0KCkKIHsKICAgICBnQ2xhc3NDb3VudC0t
OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTXV0YWJsZVVSTFJlcXVlc3QiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk11dGFibGVVUkxSZXF1ZXN0Il9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTmF2aWdhdGlvbkRhdGEuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViTmF2aWdhdGlvbkRhdGEuY3BwCmluZGV4IGJjNGYyNjg0YWQxNmM5NDg1YWZhNzUwM2EyMzMz
MWE4Mjc2ZjI2NzAuLjZhOTMzYWJiNWY4NzI2YWFlMmYxZjE5MmJmODA1YzRiYzJjZGM1MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5hdmlnYXRpb25EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTcy
LDEzICs3MiwxMyBAQCBXZWJOYXZpZ2F0aW9uRGF0YTo6V2ViTmF2aWdhdGlvbkRhdGEoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIElXZQogCiB7CiAgICAgZ0NsYXNzQ291
bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5hdmlnYXRpb25EYXRhIik7Cisg
ICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOYXZpZ2F0aW9uRGF0YSJfcyk7CiB9CiAKIFdl
Yk5hdmlnYXRpb25EYXRhOjp+V2ViTmF2aWdhdGlvbkRhdGEoKQogewogICAgIGdDbGFzc0NvdW50
LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOYXZpZ2F0aW9uRGF0YSIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTmF2aWdhdGlvbkRhdGEiX3MpOwogfQog
CiBXZWJOYXZpZ2F0aW9uRGF0YSogV2ViTmF2aWdhdGlvbkRhdGE6OmNyZWF0ZUluc3RhbmNlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBJV2ViVVJMUmVxdWVzdCogcmVx
dWVzdCwgSVdlYlVSTFJlc3BvbnNlKiByZXNwb25zZSwgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSwg
Y29uc3QgU3RyaW5nJiBjbGllbnRSZWRpcmVjdFNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJOb3RpZmljYXRpb24uY3BwCmluZGV4IGY1M2JiNzI2MzUzZjc2YWNhMDY4YThkZmRj
N2Y4YjE0OTFkZDYzMzguLjk0OTI1NmVlODAyMmZjNGEzZDcxN2YxYTM5YThjNTlhMWYwNWM3YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViTm90aWZpY2F0aW9uLmNwcApAQCAtNDMs
NyArNDMsNyBAQCBXZWJOb3RpZmljYXRpb246OldlYk5vdGlmaWNhdGlvbihCU1RSIG5hbWUsIElV
bmtub3duKiBhbk9iamVjdCwgSVByb3BlcnR5QmFnKiB1cwogICAgICAgICBtX3VzZXJJbmZvLT5B
ZGRSZWYoKTsKIAogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRk
KCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlm
aWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCkBA
IC01Niw3ICs1Niw3IEBAIFdlYk5vdGlmaWNhdGlvbjo6fldlYk5vdGlmaWNhdGlvbigpCiAgICAg
ICAgIG1fdXNlckluZm8tPlJlbGVhc2UoKTsKIAogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJOb3RpZmljYXRpb24iKTsKKyAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYk5vdGlmaWNhdGlvbiJfcyk7CiB9CiAKIFdlYk5vdGlmaWNhdGlv
biogV2ViTm90aWZpY2F0aW9uOjpjcmVhdGVJbnN0YW5jZShCU1RSIG5hbWUgLyo9MCovLCBJVW5r
bm93biogYW5PYmplY3QgLyo9MCovLCBJUHJvcGVydHlCYWcqIHVzZXJJbmZvIC8qPTAqLykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJOb3RpZmljYXRpb25DZW50ZXIuY3BwCmlu
ZGV4IDkyNTMyZGJkY2E0MWI4NTMxZTkxNjhjZGRkZTMxYjU3YTdmNDU2YjUuLjZjZDg4NDJlN2Ew
Njc1ZWFhMGFmY2EzMGYwZDg2ZmU4YmNkN2FlOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL1dlYk5vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtNTcsMTMgKzU3LDEzIEBAIFdl
Yk5vdGlmaWNhdGlvbkNlbnRlcjo6V2ViTm90aWZpY2F0aW9uQ2VudGVyKCkKICAgICA6IGQobWFr
ZVVuaXF1ZTxXZWJOb3RpZmljYXRpb25DZW50ZXJQcml2YXRlPigpKQogewogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJOb3RpZmljYXRpb25DZW50ZXIi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYk5vdGlmaWNhdGlvbkNlbnRlciJfcyk7
CiB9CiAKIFdlYk5vdGlmaWNhdGlvbkNlbnRlcjo6fldlYk5vdGlmaWNhdGlvbkNlbnRlcigpCiB7
CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYk5v
dGlmaWNhdGlvbkNlbnRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViTm90
aWZpY2F0aW9uQ2VudGVyIl9zKTsKIH0KIAogV2ViTm90aWZpY2F0aW9uQ2VudGVyKiBXZWJOb3Rp
ZmljYXRpb25DZW50ZXI6OmNyZWF0ZUluc3RhbmNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA5Y2Y4Y2MwMmEyMWNkZGViYjBlZDg0OTlmZmU5NDBm
NmU0ZjE4NDM0Li5mYjE3M2RkNWMxZTUwNjUxZWMzOTQ5MTdkZDdiMjcyOGZkMGE3N2VhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xNDcsMTMgKzE0
NywxMyBAQCBXZWJQcmVmZXJlbmNlcyogV2ViUHJlZmVyZW5jZXM6OnNoYXJlZFN0YW5kYXJkUHJl
ZmVyZW5jZXMoKQogV2ViUHJlZmVyZW5jZXM6OldlYlByZWZlcmVuY2VzKCkKIHsKICAgICBnQ2xh
c3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViUHJlZmVyZW5jZXMiKTsK
KyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlByZWZlcmVuY2VzIl9zKTsKIH0KIAogV2Vi
UHJlZmVyZW5jZXM6On5XZWJQcmVmZXJlbmNlcygpCiB7CiAgICAgZ0NsYXNzQ291bnQtLTsKLSAg
ICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlByZWZlcmVuY2VzIik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkucmVtb3ZlKCJXZWJQcmVmZXJlbmNlcyJfcyk7CiB9CiAKIFdlYlByZWZlcmVu
Y2VzKiBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlSW5zdGFuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViUmVzb3VyY2UuY3BwCmluZGV4IDk0M2ZhN2FiNDVjOGIwZDM1ZDY3YTMwYzBmZGFiNDM0
OWEzZTY0YTkuLjNiYmEzMWUzOWQ5NTY5NjhiYzJlNzZkYjE5ZGJkNGRmZWNhMmI5MjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJSZXNvdXJjZS5jcHAKQEAgLTQyLDEzICs0MiwxMyBAQCBX
ZWJSZXNvdXJjZTo6V2ViUmVzb3VyY2UoSVN0cmVhbSogZGF0YSwgY29uc3QgV1RGOjpVUkwmIHVy
bCwgY29uc3QgV1RGOjpTdHJpbmcmCiAgICAgLCBtX2ZyYW1lTmFtZShmcmFtZU5hbWUpCiB7CiAg
ICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlJlc291cmNl
Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJSZXNvdXJjZSJfcyk7CiB9CiAKIFdl
YlJlc291cmNlOjp+V2ViUmVzb3VyY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0Ns
YXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJSZXNvdXJjZSIpOworICAgIGdDbGFzc05hbWVDb3Vu
dCgpLnJlbW92ZSgiV2ViUmVzb3VyY2UiX3MpOwogfQogCiBXZWJSZXNvdXJjZSogV2ViUmVzb3Vy
Y2U6OmNyZWF0ZUluc3RhbmNlKFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViU2NyaXB0T2JqZWN0LmNwcAppbmRleCBiOGZlMzA3Y2I4NmIwMTJjMWY1
MzkxYTI4YjQ2YTA1OWM5YjBlOGRjLi5kZjA3ODFmNDEyMzliNzA0NWI0NzA3YzViYTliNjNmZjA5
OTNkZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdE9iamVjdC5jcHAK
QEAgLTM0LDEzICszNCwxMyBAQAogV2ViU2NyaXB0T2JqZWN0OjpXZWJTY3JpcHRPYmplY3QoKQog
ewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3Jp
cHRPYmplY3QiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNjcmlwdE9iamVjdCJf
cyk7CiB9CiAKIFdlYlNjcmlwdE9iamVjdDo6fldlYlNjcmlwdE9iamVjdCgpCiB7CiAgICAgZ0Ns
YXNzQ291bnQtLTsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNjcmlwdE9iamVj
dCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViU2NyaXB0T2JqZWN0Il9zKTsK
IH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViU2NyaXB0V29ybGQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
U2NyaXB0V29ybGQuY3BwCmluZGV4IDI2ODEwMWE2YzBmMDZiM2IwZjE3MjBkZjk1MDU1ZWI0MDM3
MzM2NDguLjdlZjhhNDUzNDYxMWJkOGQyMTY3MjNmZWVhYWYwMTdlMjM5ZDYwZmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNjcmlwdFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTY3JpcHRXb3JsZC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
aW5saW5lIFdlYlNjcmlwdFdvcmxkOjpXZWJTY3JpcHRXb3JsZChSZWZQdHI8RE9NV3JhcHBlcldv
cmxkPiYmIHdvcmxkKQogICAgIGFsbFdvcmxkcygpLmFkZChtX3dvcmxkLmdldCgpLCB0aGlzKTsK
IAogICAgICsrZ0NsYXNzQ291bnQ7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJTY3Jp
cHRXb3JsZCIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2NyaXB0V29ybGQiX3Mp
OwogfQogCiBXZWJTY3JpcHRXb3JsZDo6fldlYlNjcmlwdFdvcmxkKCkKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViU2NyaXB0V29ybGQ6On5XZWJTY3JpcHRXb3JsZCgpCiAgICAgYWxsV29ybGRzKCkucmVt
b3ZlKG1fd29ybGQuZ2V0KCkpOwogCiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1l
Q291bnQoKS5yZW1vdmUoIldlYlNjcmlwdFdvcmxkIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
cmVtb3ZlKCJXZWJTY3JpcHRXb3JsZCJfcyk7CiB9CiAKIFdlYlNjcmlwdFdvcmxkKiBXZWJTY3Jp
cHRXb3JsZDo6c3RhbmRhcmRXb3JsZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJTZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggOTQ1Yjg2OTIzZjZiMWZjYTdkMGI0Nzc3ZjBjZDA2MDAy
NDZhMTAwMC4uZWVmMTY0M2I2MTdjMjRkMzA0M2ExYmYwMDZiNmQxMjE3YzhlMTg5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViU2VjdXJpdHlPcmlnaW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlNlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDksMTMg
KzQ5LDEzIEBAIFdlYlNlY3VyaXR5T3JpZ2luOjpXZWJTZWN1cml0eU9yaWdpbihTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4pCiAgICAgOiBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3Jp
Z2luKQogewogICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJX
ZWJTZWN1cml0eU9yaWdpbiIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViU2VjdXJp
dHlPcmlnaW4iX3MpOwogfQogCiBXZWJTZWN1cml0eU9yaWdpbjo6fldlYlNlY3VyaXR5T3JpZ2lu
KCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViU2VjdXJpdHlPcmlnaW4iKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlNl
Y3VyaXR5T3JpZ2luIl9zKTsKIH0KIAogLy8gSVVua25vd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJTZXJpYWxpemVkSlNWYWx1ZS5jcHAKaW5kZXgg
OGJiODBhMmZjYTI5MjdlMjRjZmQwMGY4NjE2Y2I2MTc1NzYxNWVlZC4uN2YxMWRmNWZmZTE2NTEx
MWFmMTU5NTM0NDZiZjcxMmNmZGQ2ZDJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViU2VyaWFsaXplZEpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlNlcmlhbGl6ZWRKU1ZhbHVlLmNwcApAQCAtMzIsMTMgKzMyLDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogV2ViU2VyaWFsaXplZEpTVmFsdWU6OldlYlNlcmlhbGl6ZWRKU1Zh
bHVlKCkKIHsKICAgICArK2dDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViU2VyaWFsaXplZEpTVmFsdWUiKTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlNl
cmlhbGl6ZWRKU1ZhbHVlIl9zKTsKIH0KIAogV2ViU2VyaWFsaXplZEpTVmFsdWU6On5XZWJTZXJp
YWxpemVkSlNWYWx1ZSgpCiB7CiAgICAgLS1nQ2xhc3NDb3VudDsKLSAgICBnQ2xhc3NOYW1lQ291
bnQoKS5yZW1vdmUoIldlYlNlcmlhbGl6ZWRKU1ZhbHVlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJTZXJpYWxpemVkSlNWYWx1ZSJfcyk7CiB9CiAKIENPTVB0cjxXZWJTZXJp
YWxpemVkSlNWYWx1ZT4gV2ViU2VyaWFsaXplZEpTVmFsdWU6OmNyZWF0ZUluc3RhbmNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlRleHRSZW5kZXJlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJUZXh0UmVuZGVyZXIuY3BwCmluZGV4IDYyMDdiNTZh
N2Y2Nzg5Yzg3YTM3MzI3N2ZjZGQ1OWJlZjgyMzU4ZWQuLjA0NTM1ZjNmNzIzMTZmNDJhMzEwOTdj
ZjYwMzg1ZWVlMGMxZTg0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlRleHRSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVGV4dFJl
bmRlcmVyLmNwcApAQCAtNDAsMTMgKzQwLDEzIEBAIFdlYlRleHRSZW5kZXJlciogV2ViVGV4dFJl
bmRlcmVyOjpjcmVhdGVJbnN0YW5jZSgpCiBXZWJUZXh0UmVuZGVyZXI6OldlYlRleHRSZW5kZXJl
cigpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldl
YlRleHRSZW5kZXJlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVGV4dFJlbmRl
cmVyIl9zKTsKIH0KIAogV2ViVGV4dFJlbmRlcmVyOjp+V2ViVGV4dFJlbmRlcmVyKCkKIHsKICAg
ICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViVGV4dFJl
bmRlcmVyIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJUZXh0UmVuZGVyZXIi
X3MpOwogfQogCiBIUkVTVUxUIFdlYlRleHRSZW5kZXJlcjo6UXVlcnlJbnRlcmZhY2UoX0luXyBS
RUZJSUQgcmlpZCwgX0NPTV9PdXRwdHJfIHZvaWQqKiBwcHZPYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5j
cHAKaW5kZXggNTk3ODhjNGY1ZTI0Zjg5NWJmYWU0M2M2MDU5MWE0NWFmZTNkNjY1MS4uNDBiN2I2
NmZhN2FhZDFiYWVlMjY3ZjYxZDFkNzEzNzE0YjNmNDEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmNwcApA
QCAtNDYsMTMgKzQ2LDEzIEBAIFdlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjpXZWJVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvCiAgICAgLCBtX3NlbmRl
cihzZW5kZXIpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBnQ2xhc3NOYW1lQ291bnQoKS5h
ZGQoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50
KCkuYWRkKCJXZWJVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSJfcyk7CiB9CiAKIFdlYlVSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOjp+V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQog
ewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UiX3MpOwogfQogCiBXZWJVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6OmNyZWF0ZUlu
c3RhbmNlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyLmNwcAppbmRleCAzNWE4NDVlZDY5M2NhMDVk
Yzc2ZGU2MzU2N2JjZTZmZTlkZGNhNmYxLi41MDk5YmEwYWYxN2JlM2MzN2M3OTlmZjA1N2JmMDBh
MWY5YmM2Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIuY3BwCkBAIC00MiwxMyArNDIs
MTMgQEAgV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXI6OldlYlVSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlU2VuZGVyKFJlZlB0cjwKIHsKICAgICBBU1NFUlQobV9jbGllbnQpOwog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlciIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgi
V2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiX3MpOwogfQogCiBXZWJVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVNlbmRlcjo6fldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VuZGVyKCkKIHsKICAgICBnQ2xhc3NDb3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJl
bW92ZSgiV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIiKTsKKyAgICBnQ2xhc3NO
YW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyIl9z
KTsKIH0KIAogV2ViVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZW5kZXIqIFdlYlVSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2VuZGVyOjpjcmVhdGVJbnN0YW5jZShSZWZQdHI8V2ViQ29yZTo6
QXV0aGVudGljYXRpb25DbGllbnQ+JiYgY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS93aW4vV2ViVVJMQ3JlZGVudGlhbC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJVUkxDcmVkZW50aWFsLmNwcAppbmRleCBlNzU5NDZiMjg0MjU0NzJlODFiY2Y3YjM4Zjli
MGMzMTg5NjE2MTlmLi5hNTMxZDEwNjk5NTJlOWQ1NjJiMTRkMjZlYWVjODUzZjY0NjJmZThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxDcmVkZW50aWFsLmNwcApAQCAtMzcs
MTMgKzM3LDEzIEBAIFdlYlVSTENyZWRlbnRpYWw6OldlYlVSTENyZWRlbnRpYWwoY29uc3QgQ3Jl
ZGVudGlhbCYgY3JlZGVudGlhbCkKICAgICA6IG1fY3JlZGVudGlhbChjcmVkZW50aWFsKQogewog
ICAgIGdDbGFzc0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVk
ZW50aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJVUkxDcmVkZW50aWFsIl9z
KTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbDo6fldlYlVSTENyZWRlbnRpYWwoKQogewogICAgIGdD
bGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50
aWFsIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxDcmVkZW50aWFsIl9z
KTsKIH0KIAogV2ViVVJMQ3JlZGVudGlhbCogV2ViVVJMQ3JlZGVudGlhbDo6Y3JlYXRlSW5zdGFu
Y2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlv
blNwYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlVSTFByb3RlY3Rpb25TcGFj
ZS5jcHAKaW5kZXggMTllZDk2ZjgyMTBkODkzOWE5ZWVjYTJjNTFhMmQ4MzRiZTgwMGU1MC4uMzFi
MDlhYzRjYjQ0NDBmZGU5MTdmNDY1MGVlMTZlNmEzNDVjYzg0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVVJMUHJvdGVjdGlvblNwYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxQcm90ZWN0aW9uU3BhY2UuY3BwCkBAIC0zNywxMyArMzcs
MTMgQEAgV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpXZWJVUkxQcm90ZWN0aW9uU3BhY2UoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3AKICAgICA6IG1fcHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSkKIHsKICAgICBnQ2xhc3NDb3VudCsrOwotICAgIGdDbGFzc05hbWVDb3Vu
dCgpLmFkZCgiV2ViVVJMUHJvdGVjdGlvblNwYWNlIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCku
YWRkKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiX3MpOwogfQogCiBXZWJVUkxQcm90ZWN0aW9uU3Bh
Y2U6On5XZWJVUkxQcm90ZWN0aW9uU3BhY2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAg
Z0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJVUkxQcm90ZWN0aW9uU3BhY2UiKTsKKyAgICBn
Q2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYlVSTFByb3RlY3Rpb25TcGFjZSJfcyk7CiB9CiAK
IFdlYlVSTFByb3RlY3Rpb25TcGFjZSogV2ViVVJMUHJvdGVjdGlvblNwYWNlOjpjcmVhdGVJbnN0
YW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25z
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVUkxSZXNwb25zZS5jcHAKaW5kZXgg
YTViMjNkYmZhNTQ5NGMzZTA4MzJlYWQ2ODRlNGZiYmU3MDhiYjUwOC4uNjEyMjk2Y2I1NTAwZDZh
NGU2ZDVhNGI3Y2E0NzkyNzVhNGRjYTlhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vV2ViVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlVSTFJlc3BvbnNlLmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgc3RhdGljIFN0cmluZyBsb2Nh
bGl6ZWRTaG9ydERlc2NyaXB0aW9uRm9yU3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKIFdlYlVS
TFJlc3BvbnNlOjpXZWJVUkxSZXNwb25zZSgpCiB7CiAgICAgZ0NsYXNzQ291bnQrKzsKLSAgICBn
Q2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVSTFJlc3BvbnNlIik7CisgICAgZ0NsYXNzTmFtZUNv
dW50KCkuYWRkKCJXZWJVUkxSZXNwb25zZSJfcyk7CiB9CiAKIFdlYlVSTFJlc3BvbnNlOjp+V2Vi
VVJMUmVzcG9uc2UoKQogewogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50
KCkucmVtb3ZlKCJXZWJVUkxSZXNwb25zZSIpOworICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92
ZSgiV2ViVVJMUmVzcG9uc2UiX3MpOwogfQogCiBXZWJVUkxSZXNwb25zZSogV2ViVVJMUmVzcG9u
c2U6OmNyZWF0ZUluc3RhbmNlKCkKIHsKICAgICBXZWJVUkxSZXNwb25zZSogaW5zdGFuY2UgPSBu
ZXcgV2ViVVJMUmVzcG9uc2UoKTsKICAgICAvLyBmYWtlIGFuIGh0dHAgcmVzcG9uc2UgLSBzbyBp
dCBoYXMgdGhlIElXZWJIVFRQVVJMUmVzcG9uc2UgaW50ZXJmYWNlCi0gICAgaW5zdGFuY2UtPm1f
cmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKFdURjo6VVJMKHsgfSwgImh0dHA6Ly8iKSwgU3Ry
aW5nKCksIDAsIFN0cmluZygpKTsKKyAgICBpbnN0YW5jZS0+bV9yZXNwb25zZSA9IFJlc291cmNl
UmVzcG9uc2UoV1RGOjpVUkwoImh0dHA6Ly8iX3MpLCBTdHJpbmcoKSwgMCwgU3RyaW5nKCkpOwog
ICAgIGluc3RhbmNlLT5BZGRSZWYoKTsKICAgICByZXR1cm4gaW5zdGFuY2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApp
bmRleCA0ODEyMzg0NzEzYzhiOTlkYTVjYmE1YjYzZjI1NDQ0OWZlNTBjNjQyLi5lZGYzMzU4NmIx
YTAxM2FiMThmYjA1NzgyM2ZhOTE4ZjVjZGYxZjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L3dpbi9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYlVzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKQEAgLTM1LDEzICszNSwx
MyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIGlubGluZSBXZWJVc2VyQ29udGVudFVSTFBh
dHRlcm46OldlYlVzZXJDb250ZW50VVJMUGF0dGVybigpCiB7CiAgICAgKytnQ2xhc3NDb3VudDsK
LSAgICBnQ2xhc3NOYW1lQ291bnQoKS5hZGQoIldlYlVzZXJDb250ZW50VVJMUGF0dGVybiIpOwor
ICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIl9zKTsK
IH0KIAogV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuOjp+V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJu
KCkKIHsKICAgICAtLWdDbGFzc0NvdW50OwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgi
V2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuIik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3Zl
KCJXZWJVc2VyQ29udGVudFVSTFBhdHRlcm4iX3MpOwogfQogCiBDT01QdHI8V2ViVXNlckNvbnRl
bnRVUkxQYXR0ZXJuPiBXZWJVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZUluc3RhbmNlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKaW5kZXggZGI2MmRjNjU1OTM0ZjY2MWUwMDdl
ZTEyZDBkMTk0NWQzYjc4ZmM5Yi4uZTU1YTI0MmRjZWIyYzU2Nzk0ZTQyOTg4MDM3ZGJlODg5MjU2
MzVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKQEAgLTQ0Niw3ICs0NDYsNyBA
QCBXZWJWaWV3OjpXZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3VudCsrOwogICAgIGdDbGFzc0Nv
dW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Iik7CisgICAgZ0NsYXNz
TmFtZUNvdW50KCkuYWRkKCJXZWJWaWV3Il9zKTsKIH0KIAogV2ViVmlldzo6fldlYlZpZXcoKQpA
QCAtNDY5LDcgKzQ2OSw3IEBAIFdlYlZpZXc6On5XZWJWaWV3KCkKIAogICAgIFdlYlZpZXdDb3Vu
dC0tOwogICAgIGdDbGFzc0NvdW50LS07Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJX
ZWJWaWV3Iik7CisgICAgZ0NsYXNzTmFtZUNvdW50KCkucmVtb3ZlKCJXZWJWaWV3Il9zKTsKIH0K
IAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKQpAQCAtMTk5NSwxMSArMTk5NSwx
MSBAQCBib29sIFdlYlZpZXc6OmV4ZWNDb21tYW5kKFdQQVJBTSB3UGFyYW0sIExQQVJBTSAvKmxQ
YXJhbSovKQogICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9j
dXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAg
ICBjYXNlIFNlbGVjdEFsbDoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21t
YW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUuZWRp
dG9yKCkuY29tbWFuZCgiU2VsZWN0QWxsIl9zKS5leGVjdXRlKCk7CiAgICAgICAgIGNhc2UgVW5k
bzoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKCJVbmRvIikuZXhl
Y3V0ZSgpOworICAgICAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLmNvbW1hbmQoIlVuZG8i
X3MpLmV4ZWN1dGUoKTsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgcmV0dXJuIGZy
YW1lLmVkaXRvcigpLmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CisgICAgICAgICAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuY29tbWFuZCgiUmVkbyJfcykuZXhlY3V0ZSgpOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CkBAIC0yMTQ3LDcgKzIxNDcsNyBAQCBib29sIFdlYlZpZXc6Omhh
bmRsZUVkaXRpbmdLZXlib2FyZEV2ZW50KEtleWJvYXJkRXZlbnQmIGV2ZW50KQogICAgIGlmIChl
dmVudC50eXBlKCkgIT0gZXZlbnROYW1lcygpLmtleWRvd25FdmVudCAmJiBldmVudC50eXBlKCkg
IT0gZXZlbnROYW1lcygpLmtleXByZXNzRXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKGludGVycHJldEtleUV2
ZW50KCZldmVudCkpOworICAgIGF1dG8gY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5k
KFN0cmluZyB7IGludGVycHJldEtleUV2ZW50KCZldmVudCkgfSk7CiAKICAgICBpZiAoa2V5RXZl
bnQtPnR5cGUoKSA9PSBQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKSB7CiAgICAgICAgIC8vIFdl
YktpdCBkb2Vzbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uIGFib3V0IG1vZGUgdG8gZGVjaWRl
IGhvdyBjb21tYW5kcyB0aGF0IGp1c3QgaW5zZXJ0IHRleHQgaWYgZXhlY3V0ZWQgdmlhIEVkaXRv
ciBzaG91bGQgYmUgdHJlYXRlZCwKQEAgLTQ3MjUsNyArNDcyNSw3IEBAIEhSRVNVTFQgV2ViVmll
dzo6Y29weShfSW5fb3B0XyBJVW5rbm93biogLypzZW5kZXIqLykKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCku
Zm9jdXNlZE9yTWFpbkZyYW1lKCkuZWRpdG9yKCkuY29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsK
KyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRv
cigpLmNvbW1hbmQoIkNvcHkiX3MpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApA
QCAtNDczNCw3ICs0NzM0LDcgQEAgSFJFU1VMVCBXZWJWaWV3OjpjdXQoX0luX29wdF8gSVVua25v
d24qIC8qc2VuZGVyKi8pCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7
CiAKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVk
aXRvcigpLmNvbW1hbmQoIkN1dCIpLmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIkN1dCJfcykuZXhl
Y3V0ZSgpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC00NzQzLDcgKzQ3NDMsNyBAQCBIUkVT
VUxUIFdlYlZpZXc6OnBhc3RlKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJQYXN0ZSIp
LmV4ZWN1dGUoKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmVkaXRvcigpLmNvbW1hbmQoIlBhc3RlIl9zKS5leGVjdXRlKCk7CiAgICAgcmV0dXJu
IFNfT0s7CiB9CiAKQEAgLTQ3NTIsNyArNDc1Miw3IEBAIEhSRVNVTFQgV2ViVmlldzo6Y29weVVS
TChfSW5fIEJTVFIgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlM
OwogCi0gICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCAiIik7
CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0
b3IoKS5jb3B5VVJMKE1hcnNoYWxsaW5nSGVscGVyczo6QlNUUlRvS1VSTCh1cmwpLCBlbXB0eVN0
cmluZygpKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtNDc3Myw3ICs0NzczLDcgQEAgSFJF
U1VMVCBXZWJWaWV3OjpkZWxldGVfKF9Jbl9vcHRfIElVbmtub3duKiAvKnNlbmRlciovKQogICAg
IGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgbV9wYWdlLT5mb2N1
c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxl
dGUiKS5leGVjdXRlKCk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKS5lZGl0b3IoKS5jb21tYW5kKCJEZWxldGUiX3MpLmV4ZWN1dGUoKTsKICAgICBy
ZXR1cm4gU19PSzsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYldvcmtlcnNQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYldvcmtl
cnNQcml2YXRlLmNwcAppbmRleCAwNDUxOGZhZDFhNzYyYmU2Y2M3MGQ2OGMzNWJmOTBhZmExODU5
ODY4Li4yZTkzMWUwOGU3NzI2N2IyMjMxMDdhNTgzODgxYTU0OWQ3ZWYxODIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJXb3JrZXJzUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViV29ya2Vyc1ByaXZhdGUuY3BwCkBAIC05MCwxMSArOTAs
MTEgQEAgV2ViV29ya2Vyc1ByaXZhdGUqIFdlYldvcmtlcnNQcml2YXRlOjpjcmVhdGVJbnN0YW5j
ZSgpCiBXZWJXb3JrZXJzUHJpdmF0ZTo6V2ViV29ya2Vyc1ByaXZhdGUoKQogewogICAgIGdDbGFz
c0NvdW50Kys7Ci0gICAgZ0NsYXNzTmFtZUNvdW50KCkuYWRkKCJXZWJXb3JrZXJzUHJpdmF0ZSIp
OworICAgIGdDbGFzc05hbWVDb3VudCgpLmFkZCgiV2ViV29ya2Vyc1ByaXZhdGUiX3MpOwogfQog
CiBXZWJXb3JrZXJzUHJpdmF0ZTo6fldlYldvcmtlcnNQcml2YXRlKCkKIHsKICAgICBnQ2xhc3ND
b3VudC0tOwotICAgIGdDbGFzc05hbWVDb3VudCgpLnJlbW92ZSgiV2ViV29ya2Vyc1ByaXZhdGUi
KTsKKyAgICBnQ2xhc3NOYW1lQ291bnQoKS5yZW1vdmUoIldlYldvcmtlcnNQcml2YXRlIl9zKTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBi
NjExNjlmMTI1NDNlMmQyMGQ0NGNhYzFhYmI1MGQwNjZjNmM4ZTI3Li5hOWQ2ZTMzY2ZhYzRkNTI1
MTAyYjgzYzA2MThmMTM1NzY2NGZhYWZiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMjItMDQtMDUgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBNYXJrIFN0cmluZyhjb25zdCBjaGFy
KikgY29uc3RydWN0b3IgYXMgZXhwbGljaXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODY5MworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5
IEdhcmVuLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpyZWFkQWxsQ2h1bmtzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VzZXJBZ2VudFF1aXJrcy5jcHA6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNDaHJvbWVC
cm93c2VyUXVpcmspOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6YXNzZXJ0VXNlckFnZW50Rm9y
VVJMSGFzRmlyZWZveEJyb3dzZXJRdWlyayk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjphc3Nl
cnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0VtcHR5UXVpcmspOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L2N1cmwvQ29va2llcy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpDdXJsOjpURVNUX0Yp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJl
cG9ydC5tbToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rldmlj
ZU9yaWVudGF0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbToKKyAgICAgICAgKGNsZWFuVXBJbkFwcEJyb3dzZXJQ
cml2YWN5VGVzdFNldHRpbmdzKToKKyAgICAgICAgKGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKHRlc3RXZWJWaWV3
V2luZG93UHJvcGVydGllcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRH
TGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25QYWdl
SUQpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdFNlcnZlcjo6YWRkV2ViU29ja2V0SGFuZGxl
cik6CisgICAgICAgIChXZWJLaXRUZXN0U2VydmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdFRlc3RTZXJ2ZXI6OmdldFVSSUZvclBhdGggY29uc3QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6c2V0VXBXZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVU
ZXN0aW5nV2l0aG91dE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpzZXRVcFdlYlZpZXdGb3JQcmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmcpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUg
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmli
dXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJp
YnV0ZVNldHRhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNB
dHRyaWJ1dGVTdXBwb3J0ZWQpOgorICAgICAgICAoV1RSOjp4bWxSb2xlVmFsdWVTdHJpbmcpOgor
ICAgICAgICAoV1RSOjpyb2xlVmFsdWVUb1N0cmluZyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpyb2xlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb21wdXRlZFJvbGVTdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjppbnRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChXVFI6
OnRvSlNPTk9iamVjdCk6CisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
OgorICAgICAgICAodGVzdFN1bW1hcnlQcm92aWRlcnMpOgorCiAyMDIyLTA0LTA1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQU5HTEUgY2hhbmdlcy5k
aWZmIGNvbnRhaW5zIGRpZmZlcmVuY2VzIHRoYXQgYXJlIGZyb20gc3RhbGUgZmlsZXMgb3IgdW5u
ZWVkZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IGNmN2I3ODliMzVlYTFlZjcyYmQ2YzhlNjRlMzk2OTA4ZGM4YzE3NmEuLmUxOTY2OGNjZDc0OWJi
ZTlhNjg4ZTA2ODQzNzA4OGZkMzY1OGFmODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgc3RhdGljIHZvaWQgc2l6
ZVdlYlZpZXdGb3JDdXJyZW50VGVzdCgpCiAKIHN0YXRpYyBTdHJpbmcgZmluZEZvbnRGYWxsYmFj
ayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiB7Ci0gICAgU3RyaW5nIHBhdGhUb0ZvbnRGYWxsYmFj
ayA9IEZpbGVTeXN0ZW06OnBhcmVudFBhdGgocGF0aE9yVXJsKTsKKyAgICBTdHJpbmcgcGF0aFRv
Rm9udEZhbGxiYWNrID0gRmlsZVN5c3RlbTo6cGFyZW50UGF0aChTdHJpbmc6OmZyb21VVEY4KHBh
dGhPclVybCkpOwogCiAgICAgd2NoYXJfdCBmdWxsUGF0aFtfTUFYX1BBVEhdOwogICAgIGlmICgh
X3dmdWxscGF0aChmdWxsUGF0aCwgcGF0aFRvRm9udEZhbGxiYWNrLndpZGVDaGFyYWN0ZXJzKCku
ZGF0YSgpLCBfTUFYX1BBVEgpKQpAQCAtMTExNSw3ICsxMTE1LDcgQEAgc3RhdGljIFN0cmluZyBm
aW5kRm9udEZhbGxiYWNrKGNvbnN0IGNoYXIqIHBhdGhPclVybCkKIAogICAgIFN0cmluZyBwYXRo
VG9DaGVjayA9IGZ1bGxQYXRoOwogCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0
cyA9ICJMYXlvdXRUZXN0cyI7CisgICAgc3RhdGljIGNvbnN0IFN0cmluZyBsYXlvdXRUZXN0cyA9
ICJMYXlvdXRUZXN0cyJfczsKIAogICAgIC8vIEZpbmQgdGhlIGxheW91dCB0ZXN0IHJvb3Qgb24g
dGhlIGN1cnJlbnQgcGF0aDoKICAgICBzaXplX3QgbG9jYXRpb24gPSBwYXRoVG9DaGVjay5maW5k
KGxheW91dFRlc3RzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0Nyb3NzVGhyZWFkVGFzay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9Dcm9z
c1RocmVhZFRhc2suY3BwCmluZGV4IDUyYzBiY2Q0MTk2OTk4YTYwYzgzOTJiNGY4MjJhNzhiNTI2
MTQ3ZjguLmZhNjE4YmIxYjc5YjcwZDc1NzFlNWE1N2IxNTMwNDU2YzViYWUyNGYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0Nyb3NzVGhyZWFkVGFzay5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvQ3Jvc3NUaHJlYWRUYXNrLmNwcApAQCAt
MTEzLDE1ICsxMTMsMTUgQEAgVEVTVChXVEZfQ3Jvc3NUaHJlYWRUYXNrLCBCYXNpYykKICAgICB9
CiAKICAgICBBU1NFUlRfRVEoMXUsIGRlZmF1bHRDb25zdHJ1Y3RvclNldC5zaXplKCkpOwotICAg
IEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMC0w
IikpOworICAgIEFTU0VSVF9FUSgxdSwgZGVmYXVsdENvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVm
YXVsdD4tMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoMXUsIG5hbWVDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMC0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgbmFtZUNvbnN0cnVjdG9yU2V0LmNvdW50KCJs
b2dnZXItMC0wIl9zKSk7CiAKICAgICBBU1NFUlRfRVEoM3UsIGNvcHlDb25zdHJ1Y3RvclNldC5z
aXplKCkpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCJsb2dn
ZXItMS0wIikpOwotICAgIEFTU0VSVF9FUSgydSwgY29weUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMS0wIikpOwotICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9yU2V0LmNv
dW50KCI8ZGVmYXVsdD4tMi0wIikpOworICAgIEFTU0VSVF9FUSgxdSwgY29weUNvbnN0cnVjdG9y
U2V0LmNvdW50KCJsb2dnZXItMS0wIl9zKSk7CisgICAgQVNTRVJUX0VRKDJ1LCBjb3B5Q29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTAiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUsIGNv
cHlDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+LTItMCJfcykpOwogCiAjaWYgIUNPTVBJ
TEVSKE1TVkMpCiAgICAgQVNTRVJUX0VRKDZ1LCBtb3ZlQ29uc3RydWN0b3JTZXQuc2l6ZSgpKTsK
QEAgLTEzMCwxMiArMTMwLDEyIEBAIFRFU1QoV1RGX0Nyb3NzVGhyZWFkVGFzaywgQmFzaWMpCiAg
ICAgLy8gVGhpcyBzZWVtcyB0byBiZSBjYXVzZWQgYnkgZGlmZmVyZW5jZXMgaW4gTVNWQydzIGlt
cGxlbWVudGF0aW9uIG9mIGxhbWJkYXMgb3Igc3RkIGZ1bmN0aW9ucyBsaWtlIHN0ZDo6bWFrZV90
dXBsZS4KICAgICBBU1NFUlRfRVEoOXUsIG1vdmVDb25zdHJ1Y3RvclNldC5zaXplKCkpOwogI2Vu
ZGlmCi0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0x
LTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dl
ci0xLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxk
ZWZhdWx0Pi0yLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291
bnQoIjxkZWZhdWx0Pi0yLTIiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JT
ZXQuY291bnQoIjxkZWZhdWx0Pi0xLTEiKSk7Ci0gICAgQVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3Ry
dWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0xLTIiKSk7CisgICAgQVNTRVJUX0VRKDF1LCBtb3Zl
Q29uc3RydWN0b3JTZXQuY291bnQoImxvZ2dlci0xLTEiX3MpKTsKKyAgICBBU1NFUlRfRVEoMXUs
IG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgibG9nZ2VyLTEtMiJfcykpOworICAgIEFTU0VSVF9F
USgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8ZGVmYXVsdD4tMi0xIl9zKSk7CisgICAg
QVNTRVJUX0VRKDF1LCBtb3ZlQ29uc3RydWN0b3JTZXQuY291bnQoIjxkZWZhdWx0Pi0yLTIiX3Mp
KTsKKyAgICBBU1NFUlRfRVEoMXUsIG1vdmVDb25zdHJ1Y3RvclNldC5jb3VudCgiPGRlZmF1bHQ+
LTEtMSJfcykpOworICAgIEFTU0VSVF9FUSgxdSwgbW92ZUNvbnN0cnVjdG9yU2V0LmNvdW50KCI8
ZGVmYXVsdD4tMS0yIl9zKSk7CiAKICNpZiAhQ09NUElMRVIoTVNWQykKICAgICBBU1NFUlRfRVEo
MTJ1LCB0b3RhbERlc3RydWN0b3JDYWxscyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBhcnNlcnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0hUVFBQYXJzZXJzLmNwcAppbmRleCBmZmJhMDBiODAyMWE1YTQ2YjgzMWEz
Yjk3YzQ1ZGI0YmYzYjQ1OGViLi5lODA3MDc0ZjRjYzVkZGM5Mzk1ZjEzZjhiODMxNzI0YzU5OWEy
OWU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUFBh
cnNlcnMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQUGFy
c2Vycy5jcHAKQEAgLTU5LDMyICs1OSwzMiBAQCBURVNUKEhUVFBQYXJzZXJzLCBQYXJzZUNyb3Nz
T3JpZ2luUmVzb3VyY2VQb2xpY3lIZWFkZXIpCiAjaWYgVVNFKEdMSUIpCiBURVNUKEhUVFBQYXJz
ZXJzLCBWYWxpZGF0ZVVzZXJBZ2VudFZhbHVlcykKIHsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQiKSk7Ci0gICAgRVhQRUNUX1RSVUUo
aXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCIpKTsKLSAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSBXZWJLaXQvMTYzIikpOwot
ICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEwLjAg
V2ViS2l0IikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgi
U2FmYXJpLzEwLjAgV2ViS2l0LzE2MyIpKTsKLSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFn
ZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdC8xNjMgKE1vemlsbGE7IGxpa2UgR2Vj
a28pIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2Fm
YXJpIChjb21tZW50IChuZXN0ZWQgY29tbWVudCkpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFs
aWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSIpKTsK
LSAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAobGVm
dCBwYXJlbiBcXCggYXMgcXVvdGVkIHBhaXIpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiISMkJSYnKistLl5fYHx+IChub24tYWxwaGFudW1lcmljIHRv
a2VuIGNoYXJhY3RlcnMpIikpOwotICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSIpKTsKLSAgICBF
WFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoImEgKHNpbmdsZSBjaGFyYWN0
ZXIgdG9rZW4pIikpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1
ZSgiU2FmYXJpIl9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJTYWZhcmkgV2ViS2l0Il9zKSk7CisgICAgRVhQRUNUX1RSVUUoaXNWYWxpZFVzZXJBZ2Vu
dEhlYWRlclZhbHVlKCJTYWZhcmkvMTAuMCJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIFdlYktpdC8xNjMiX3MpKTsKKyAgICBFWFBFQ1Rf
VFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8xMC4wIFdlYktpdCJfcykp
OworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLzEw
LjAgV2ViS2l0LzE2MyJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiU2FmYXJpLzEwLjAgV2ViS2l0LzE2MyAoTW96aWxsYTsgbGlrZSBHZWNrbykiX3Mp
KTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSAo
Y29tbWVudCAobmVzdGVkIGNvbW1lbnQpKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICgpICg8LSBFbXB0eSBjb21tZW50KSJfcykpOwor
ICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpIChsZWZ0
IHBhcmVuIFxcKCBhcyBxdW90ZWQgcGFpcikiX3MpKTsKKyAgICBFWFBFQ1RfVFJVRShpc1ZhbGlk
VXNlckFnZW50SGVhZGVyVmFsdWUoIiEjJCUmJyorLS5eX2B8fiAobm9uLWFscGhhbnVtZXJpYyB0
b2tlbiBjaGFyYWN0ZXJzKSJfcykpOworICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRI
ZWFkZXJWYWx1ZSgiMDEyMzQ1Njc4OSAobnVtZXJpYyB0b2tlbiBjaGFyYWN0ZXJzKSJfcykpOwor
ICAgIEVYUEVDVF9UUlVFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiYSAoc2luZ2xlIGNo
YXJhY3RlciB0b2tlbikiX3MpKTsKIAotICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIiAiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFk
ZXJWYWx1ZSgiIFNhZmFyaSAobGVhZGluZyB3aGl0ZXNwYWNlKSIpKTsKLSAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIHdoaXRlc3Bh
Y2UpICIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJc
blNhZmFyaSAobGVhZGluZyBuZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVz
ZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgKHRyYWlsaW5nIG5ld2xpbmUpXG4iKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpLyAobm8gdmVy
c2lvbiB0b2tlbiBhZnRlciBzbGFzaCkiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2Vy
QWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCIpKTsKLSAgICBF
WFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJTYWZhcmkgdW5vcGVuZWQg
Y29tbWFuZW50KSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZh
bHVlKCJceDFCIChjb250YWlucyBjb250cm9sIGNoYXJhY3RlcikiKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRlZCBu
ZXdsaW5lKSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVl
KCJXUEVcXCBXZWJLaXQgKHF1b3RlZCBwYWlyIGluIHRva2VuKSIpKTsKLSAgICBFWFBFQ1RfRkFM
U0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIvMTIzIChtaXNzaW5nIHByb2R1Y3QgdG9r
ZW4pIikpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIiAi
X3MpKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCIgU2Fm
YXJpIChsZWFkaW5nIHdoaXRlc3BhY2UpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRV
c2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh0cmFpbGluZyB3aGl0ZXNwYWNlKSAiX3MpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXNWYWxpZFVzZXJBZ2VudEhlYWRlclZhbHVlKCJcblNhZmFyaSAo
bGVhZGluZyBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50
SGVhZGVyVmFsdWUoIlNhZmFyaSAodHJhaWxpbmcgbmV3bGluZSlcbiJfcykpOworICAgIEVYUEVD
VF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaS8gKG5vIHZlcnNpb24g
dG9rZW4gYWZ0ZXIgc2xhc2gpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdl
bnRIZWFkZXJWYWx1ZSgiU2FmYXJpICh1bnRlcm1pbmF0ZWQgY29tbWVudCJfcykpOworICAgIEVY
UEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVyVmFsdWUoIlNhZmFyaSB1bm9wZW5lZCBj
b21tYW5lbnQpIl9zKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJW
YWx1ZSgiXHgxQiAoY29udGFpbnMgY29udHJvbCBjaGFyYWN0ZXIpIl9zKSk7CisgICAgRVhQRUNU
X0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiU2FmYXJpL1xuMTAuMCAoZW1iZWRl
ZCBuZXdsaW5lKSJfcykpOworICAgIEVYUEVDVF9GQUxTRShpc1ZhbGlkVXNlckFnZW50SGVhZGVy
VmFsdWUoIldQRVxcIFdlYktpdCAocXVvdGVkIHBhaXIgaW4gdG9rZW4pIl9zKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzVmFsaWRVc2VyQWdlbnRIZWFkZXJWYWx1ZSgiLzEyMyAobWlzc2luZyBwcm9k
dWN0IHRva2VuKSJfcykpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9TaGFyZWRCdWZmZXIuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggYjAxMTI4YjI2YjFjYzBhMjA1
YzY1NDFhNDg1NmI3ZjAyZjQ4YmM3Ni4uMDdhNDVlMGVmNDE0YmY3NDk3MTI5MmZjMWNjMmFhODc0
OGFkZDUxNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1No
YXJlZEJ1ZmZlci5jcHAKQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUX0YoRnJhZ21lbnRlZFNoYXJl
ZEJ1ZmZlclRlc3QsIGNvcHlJc0NvbnRpZ3VvdXMpCiB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc2l6
ZV90IE4gPgogY29uc3RleHByIHNpemVfdCBhcnJheXNpemUoIGNvbnN0IFQgKCYpW05dICkgeyBy
ZXR1cm4gTjsgfQogCi1zdGF0aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmlu
Zz4qIGNodW5rcywgRnJhZ21lbnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHNlcGFyYXRvciA9ICJcclxuIiwgYm9vbCBpbmNsdWRlU2VwYXJhdG9yID0gZmFsc2UpCitzdGF0
aWMgdm9pZCByZWFkQWxsQ2h1bmtzKHN0ZDo6dmVjdG9yPFN0cmluZz4qIGNodW5rcywgRnJhZ21l
bnRlZFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHNlcGFyYXRvciA9ICJcclxu
Il9zLCBib29sIGluY2x1ZGVTZXBhcmF0b3IgPSBmYWxzZSkKIHsKICAgICBTaGFyZWRCdWZmZXJD
aHVua1JlYWRlciBjaHVua1JlYWRlcigmYnVmZmVyLCBzZXBhcmF0b3IudXRmOCgpLmRhdGEoKSk7
CiAgICAgU3RyaW5nIGNodW5rID0gY2h1bmtSZWFkZXIubmV4dENodW5rQXNVVEY4U3RyaW5nV2l0
aExhdGluMUZhbGxiYWNrKGluY2x1ZGVTZXBhcmF0b3IpOwpAQCAtNDc3LDMyICs0NzcsMzIgQEAg
VEVTVF9GKFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyVGVzdCwgcmVhZEFsbENodW5rc0luTXVsdGlT
ZWdtZW50KQogICAgIGF1dG8gY2hlY2sgPSBbXShGcmFnbWVudGVkU2hhcmVkQnVmZmVyJiBzaGFy
ZWRCdWZmZXIpIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8U3RyaW5nPiBjaHVua3M7CiAgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBhcmF0b3JbXSA9IHsg
IlRoIiwgInMgIiwgInMgdGhlIG1vc3QgciIsICJkIiwgImN1bG91cyBoIiwgInN0b3J5IHRoZXJl
ICIsICJzLiIgfTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJpIik7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSJf
cyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVu
a3MxV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdpdGhvdXRTZXBh
cmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaSIsICJzIGkiLCAi
cyB0aGUgbW9zdCByaSIsICJkaSIsICJjdWxvdXMgaGkiLCAic3RvcnkgdGhlcmUgaSIsICJzLiIg
fTsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJpIiwgdHJ1
ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaSJfcywg
dHJ1ZSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRD
aHVua3MxV2l0aFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzMVdpdGhTZXBhcmF0
b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGNv
bnN0IGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3JbXSA9IHsgIlRoIiwgIiAiLCAiIHRo
ZSBtb3N0IHJpZGljdWxvdXMgaCIsICJ0b3J5IHRoZXJlICIsICIuIiB9OwotICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzIik7CisgICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiX3MpOwogICAgICAgICBFWFBFQ1RfVFJV
RShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhvdXRTZXBhcmF0b3IsIGFy
cmF5c2l6ZShleHBlY3RlZENodW5rczJXaXRob3V0U2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNo
dW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczJX
aXRoU2VwYXJhdG9yW10gPSB7ICJUaGlzIiwgIiBpcyIsICIgdGhlIG1vc3QgcmlkaWN1bG91cyBo
aXMiLCAidG9yeSB0aGVyZSBpcyIsICIuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVu
a3MsIHNoYXJlZEJ1ZmZlciwgImlzIiwgdHJ1ZSk7CisgICAgICAgIHJlYWRBbGxDaHVua3MoJmNo
dW5rcywgc2hhcmVkQnVmZmVyLCAiaXMiX3MsIHRydWUpOwogICAgICAgICBFWFBFQ1RfVFJVRShj
aGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzMldpdGhTZXBhcmF0b3IsIGFycmF5c2l6
ZShleHBlY3RlZENodW5rczJXaXRoU2VwYXJhdG9yKSkpOwogCiAgICAgICAgIGNodW5rcy5jbGVh
cigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBleHBlY3RlZENodW5rczNXaXRob3V0U2Vw
YXJhdG9yW10gPSB7ICJUaGlzIGlzIHRoZSBtb3N0IHJpZGljdWxvdXMgaCIsICJvcnkgdGhlcmUg
aXMuIiB9OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlz
dCIpOworICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImlzdCJf
cyk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVu
a3MzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzM1dpdGhvdXRTZXBh
cmF0b3IpKSk7CiAKICAgICAgICAgY2h1bmtzLmNsZWFyKCk7CiAgICAgICAgIGNvbnN0IGNoYXIq
IGNvbnN0IGV4cGVjdGVkQ2h1bmtzM1dpdGhTZXBhcmF0b3JbXSA9IHsgIlRoaXMgaXMgdGhlIG1v
c3QgcmlkaWN1bG91cyBoaXN0IiwgIm9yeSB0aGVyZSBpcy4iIH07Ci0gICAgICAgIHJlYWRBbGxD
aHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0IiwgdHJ1ZSk7CisgICAgICAgIHJlYWRB
bGxDaHVua3MoJmNodW5rcywgc2hhcmVkQnVmZmVyLCAiaXN0Il9zLCB0cnVlKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoY2hlY2tDaHVua3MoY2h1bmtzLCBleHBlY3RlZENodW5rczNXaXRoU2VwYXJh
dG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3MzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9Owog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwg
c3RybGVuKHNpbXBsZVRleHQpKTsKQEAgLTU1NywxMiArNTU3LDEyIEBAIFRFU1RfRihTaGFyZWRC
dWZmZXJDaHVua1JlYWRlclRlc3QsIGNoYW5naW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hh
cmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBs
ZVRleHQpKTsKICAgICAgICAgY29uc3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0
U2VwYXJhdG9yW10gPSB7ICIiIH07CiAgICAgICAgIHN0ZDo6dmVjdG9yPFN0cmluZz4gY2h1bmtz
OwotICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyIpOwor
ICAgICAgICByZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImRvZyJfcyk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRo
b3V0U2VwYXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yKSkp
OwogCiAgICAgICAgIGNodW5rcy5jbGVhcigpOwogICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBl
eHBlY3RlZENodW5rc1dpdGhTZXBhcmF0b3JbXSA9IHsgImRvZyIgfTsKLSAgICAgICAgcmVhZEFs
bENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciLCB0cnVlKTsKKyAgICAgICAgcmVh
ZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIsICJkb2ciX3MsIHRydWUpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFy
YXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aFNlcGFyYXRvcikpKTsKICAgICB9CiAK
QEAgLTU3MiwxMiArNTcyLDEyIEBAIFRFU1RfRihTaGFyZWRCdWZmZXJDaHVua1JlYWRlclRlc3Qs
IGNoYW5naW5nSXRlcmF0b3IpCiAgICAgICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc2ltcGxlVGV4dCwgc3RybGVuKHNpbXBsZVRleHQpKTsKICAgICAgICAgY29u
c3QgY2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRob3V0U2VwYXJhdG9yW10gPSB7ICJCZWF1
Y291cCBkZSBjaGF0cyAiLCAiIiwgIiIsICIiLCAiIiB9OwogICAgICAgICBzdGQ6OnZlY3RvcjxT
dHJpbmc+IGNodW5rczsKLSAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZm
ZXIsICJjYXQiKTsKKyAgICAgICAgcmVhZEFsbENodW5rcygmY2h1bmtzLCBzaGFyZWRCdWZmZXIs
ICJjYXQiX3MpOwogICAgICAgICBFWFBFQ1RfVFJVRShjaGVja0NodW5rcyhjaHVua3MsIGV4cGVj
dGVkQ2h1bmtzV2l0aG91dFNlcGFyYXRvciwgYXJyYXlzaXplKGV4cGVjdGVkQ2h1bmtzV2l0aG91
dFNlcGFyYXRvcikpKTsKIAogICAgICAgICBjaHVua3MuY2xlYXIoKTsKICAgICAgICAgY29uc3Qg
Y2hhciogY29uc3QgZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yW10gPSB7ICJCZWF1Y291cCBk
ZSBjaGF0cyBjYXQiLCAiY2F0IiwgImNhdCIsICJjYXQiLCAiY2F0IiB9OwotICAgICAgICByZWFk
QWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCIsIHRydWUpOworICAgICAgICBy
ZWFkQWxsQ2h1bmtzKCZjaHVua3MsIHNoYXJlZEJ1ZmZlciwgImNhdCJfcywgdHJ1ZSk7CiAgICAg
ICAgIEVYUEVDVF9UUlVFKGNoZWNrQ2h1bmtzKGNodW5rcywgZXhwZWN0ZWRDaHVua3NXaXRoU2Vw
YXJhdG9yLCBhcnJheXNpemUoZXhwZWN0ZWRDaHVua3NXaXRoU2VwYXJhdG9yKSkpOwogICAgIH0K
ICAgICB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVXNl
ckFnZW50UXVpcmtzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2Vy
QWdlbnRRdWlya3MuY3BwCmluZGV4IDVmOTI1MzI3OTFhNDBlODM1MjMzZDBhYzE1ODI1NTE3YTlk
ZDViMDAuLjJkZDdlNGFlN2EwMWMyOWVmMTRiZTg5ZmVkYWIyODVkOTc2Zjk4MDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3MuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Vc2VyQWdlbnRRdWlya3Mu
Y3BwCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGlj
IHZvaWQgYXNzZXJ0VXNlckFnZW50Rm9yVVJMSGFzQ2hyb21lQnJvd3NlclF1aXJrKGNvbnN0IGNo
YXIqIHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVS
TChVUkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2Vu
dEZvclVSTChVUkwoIFN0cmluZyB7IHVybCB9KSk7CiAKICAgICBFWFBFQ1RfVFJVRSh1YVN0cmlu
Zy5jb250YWlucygiQ2hyb21lIikpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNvbnRhaW5z
KCJTYWZhcmkiKSk7CkBAIC00NSw3ICs0NSw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2Vu
dEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyayhjb25zdCBjaGFyKiB1cmwpCiAKIHN0YXRpYyB2
b2lkIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmsoY29uc3QgY2hh
ciogdXJsKQogewotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJM
KFVSTCh7IH0sIHVybCkpOworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50
Rm9yVVJMKFVSTChTdHJpbmcgeyB1cmwgfSkpOwogCiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5n
LmNvbnRhaW5zKCJDaHJvbWUiKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHVhU3RyaW5nLmNvbnRhaW5z
KCJTYWZhcmkiKSk7CkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJBZ2Vu
dEZvclVSTEhhc0ZpcmVmb3hCcm93c2VyUXVpcmsoY29uc3QgY2hhciogdXJsKQogCiBzdGF0aWMg
dm9pZCBhc3NlcnRVc2VyQWdlbnRGb3JVUkxIYXNNYWNQbGF0Zm9ybVF1aXJrKGNvbnN0IGNoYXIq
IHVybCkKIHsKLSAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChV
UkwoeyB9LCB1cmwpKTsKKyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZv
clVSTChVUkwoU3RyaW5nIHsgdXJsIH0pKTsKIAogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmNv
bnRhaW5zKCJNYWNpbnRvc2giKSk7CiAgICAgRVhQRUNUX1RSVUUodWFTdHJpbmcuY29udGFpbnMo
Ik1hYyBPUyBYIikpOwpAQCAtNzIsMTQgKzcyLDE0IEBAIHN0YXRpYyB2b2lkIGFzc2VydFVzZXJB
Z2VudEZvclVSTEhhc01hY1BsYXRmb3JtUXVpcmsoY29uc3QgY2hhciogdXJsKQogLy8gdGhhdCB0
aGUgc3RhbmRhcmQgdXNlciBhZ2VudCBzaG91bGQgYmUgdXNlZC4pCiBzdGF0aWMgdm9pZCBhc3Nl
cnRVc2VyQWdlbnRGb3JVUkxIYXNFbXB0eVF1aXJrKGNvbnN0IGNoYXIqIHVybCkKIHsKLSAgICBT
dHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoeyB9LCB1cmwpKTsK
KyAgICBTdHJpbmcgdWFTdHJpbmcgPSBzdGFuZGFyZFVzZXJBZ2VudEZvclVSTChVUkwoU3RyaW5n
IHsgdXJsIH0pKTsKICAgICBFWFBFQ1RfRkFMU0UodWFTdHJpbmcuaXNOdWxsKCkpOwogfQogCiBU
RVNUKFVzZXJBZ2VudFRlc3QsIFF1aXJrcykKIHsKICAgICAvLyBBIHNpdGUgd2l0aCBubyBxdWly
a3Mgc2hvdWxkIHJldHVybiBhIG51bGwgU3RyaW5nLgotICAgIFN0cmluZyB1YVN0cmluZyA9IHN0
YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCh7IH0sICJodHRwOi8vd3d3LndlYmtpdC5vcmcvIikp
OworICAgIFN0cmluZyB1YVN0cmluZyA9IHN0YW5kYXJkVXNlckFnZW50Rm9yVVJMKFVSTCgiaHR0
cDovL3d3dy53ZWJraXQub3JnLyJfcykpOwogICAgIEVYUEVDVF9UUlVFKHVhU3RyaW5nLmlzTnVs
bCgpKTsKIAogICAgIGFzc2VydFVzZXJBZ2VudEZvclVSTEhhc0Nocm9tZUJyb3dzZXJRdWlyaygi
aHR0cDovL3R5cGVraXQuY29tLyIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL2N1cmwvQ29va2llcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvY3VybC9Db29raWVzLmNwcAppbmRleCAwZDBiMDA3ZjY0ZWRlNWM0M2QzYWRkYjBi
Mzg3MjdlMmE4MzdjM2YwLi42NDM4ZjFjYTZhYjE2YWM3M2ZhYjRhN2JkNGZiZjczZGNjOGM2ODJm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvY3VybC9Db29r
aWVzLmNwcApAQCAtNjQsMzAgKzY0LDMwIEBAIHByb3RlY3RlZDoKIAogVEVTVF9GKEN1cmxDb29r
aWVzLCBSZWplY3RUYWlsbWF0Y2hGYWlsdXJlRG9tYWluKQogewotICAgIFVSTCB1cmwgeyAiaHR0
cDovL2V4YW1wbGUuY29tIiB9OworICAgIFVSTCB1cmwgeyAiaHR0cDovL2V4YW1wbGUuY29tIl9z
IH07CiAKICAgICAvLyBzdWNjZXNzOiBkb21haW4gbWF0Y2gKLSAgICBFWFBFQ1RfVFJVRShtX2Nv
b2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPWV4YW1wbGUuY29t
IiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9UUlVFKG1fY29v
a2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBEb21haW49ZXhhbXBsZS5jb20i
X3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBzdWNjZXNzOiB3aWxk
Y2FyZCBvZiBkb21haW5zCi0gICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1
cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj0uZXhhbXBsZS5jb20iLCBDb29raWVKYXJEQjo6U291
cmNlOjpOZXR3b3JrKSk7CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tpZSh1
cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj0uZXhhbXBsZS5jb20iX3MsIENvb2tpZUphckRCOjpT
b3VyY2U6Ok5ldHdvcmspKTsKICAgICAvLyBmYWlsdXJlOiBzcGVjaWZpYyBzdWIgZG9tYWluCi0g
ICAgRVhQRUNUX0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFy
OyBEb21haW49d3d3LmV4YW1wbGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykp
OworICAgIEVYUEVDVF9GQUxTRShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9v
PWJhcjsgRG9tYWluPXd3dy5leGFtcGxlLmNvbSJfcywgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0
d29yaykpOwogICAgIC8vIGZhaWx1cmU6IGRpZmZlcmVudCBkb21haW4KLSAgICBFWFBFQ1RfRkFM
U0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IERvbWFpbj1zYW1w
bGUuY29tIiwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yaykpOworICAgIEVYUEVDVF9GQUxT
RShtX2Nvb2tpZUphci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgRG9tYWluPXNhbXBs
ZS5jb20iX3MsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmspKTsKIH0KIAogVEVTVF9GKEN1
cmxDb29raWVzLCBUZXN0SHR0cE9ubHlDYXNlKQogewotICAgIFVSTCB1cmwgeyAiaHR0cDovL2V4
YW1wbGUuY29tIiB9OworICAgIFVSTCB1cmwgeyAiaHR0cDovL2V4YW1wbGUuY29tIl9zIH07CiAK
ICAgICAvLyBzdWNjZXNzOiBmcm9tIG5ldHdvcmsKLSAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUph
ci0+c2V0Q29va2llKHVybCwgdXJsLCAiZm9vPWJhcjsgSHR0cE9ubHkiLCBDb29raWVKYXJEQjo6
U291cmNlOjpOZXR3b3JrKSk7CisgICAgRVhQRUNUX1RSVUUobV9jb29raWVKYXItPnNldENvb2tp
ZSh1cmwsIHVybCwgImZvbz1iYXI7IEh0dHBPbmx5Il9zLCBDb29raWVKYXJEQjo6U291cmNlOjpO
ZXR3b3JrKSk7CiAgICAgLy8gc3VjY2Vzczogd2lsZGNhcmQgb2YgZG9tYWlucwotICAgIEVYUEVD
VF9UUlVFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJiaW5nbz1ib25nbzsiLCBD
b29raWVKYXJEQjo6U291cmNlOjpTY3JpcHQpKTsKKyAgICBFWFBFQ1RfVFJVRShtX2Nvb2tpZUph
ci0+c2V0Q29va2llKHVybCwgdXJsLCAiYmluZ289Ym9uZ287Il9zLCBDb29raWVKYXJEQjo6U291
cmNlOjpTY3JpcHQpKTsKICAgICAvLyBmYWlsdXJlOiBmb28gaXMgYWxyZWFkeSBzdG9yZWQgYXMg
SHR0cE9ubHkKLSAgICBFWFBFQ1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVy
bCwgImZvbz1iYXI7IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CisgICAgRVhQRUNU
X0ZBTFNFKG1fY29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyJfcywgQ29v
a2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiAgICAgLy8gZmFpbHVyZTogaW5jb25zaXN0ZW50
LiBTb3VyY2UgaXMgU2NyaXB0LCBidXQgYXR0cmlidXRlIHNheXMgSHR0cE9ubHkKLSAgICBFWFBF
Q1RfRkFMU0UobV9jb29raWVKYXItPnNldENvb2tpZSh1cmwsIHVybCwgImZvbz1iYXI7IEh0dHBP
bmx5IiwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CisgICAgRVhQRUNUX0ZBTFNFKG1f
Y29va2llSmFyLT5zZXRDb29raWUodXJsLCB1cmwsICJmb289YmFyOyBIdHRwT25seSJfcywgQ29v
a2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXBwUHJpdmFjeVJlcG9ydC5tbQppbmRl
eCA4MDhiMzBjMjM4YzM4OGU5NTk3NGQxZWRjNTMzOTEyMTU3MjA3ZmUzLi5kZGMxODVkOTZiYzZl
YjQ4MmQ3Nzg0ZDM5MGYwOWM5ODRjYzY1NmZmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0FwcFByaXZhY3lSZXBvcnQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9BcHBQcml2YWN5UmVwb3J0Lm1tCkBAIC0yNDQs
NyArMjQ0LDcgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBOb25BcHBJbml0aWF0ZWRSZXF1ZXN0
V2l0aFN1YkZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0K
IAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorc3RhdGlj
IGNvbnN0ZXhwciBhdXRvIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAogPHNjcmlwdD4KIHRy
eSB7CiAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4o
ZnVuY3Rpb24ocmVnKSB7CkBAIC0yNjQsNyArMjY0LDcgQEAgdHJ5IHsKICAgICBhbGVydCgnRXhj
ZXB0aW9uOiAnICsgZSk7CiB9CiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNF
Il9zOwogCiBlbnVtIGNsYXNzIFJlc3BvbnNlVHlwZSB7IFN5bnRoZXRpYywgRmV0Y2hlZCB9Owog
ZW51bSBjbGFzcyBJc0FwcEluaXRpYXRlZCA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0yNzYsMjQg
KzI3NiwyNCBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KFJlc3BvbnNlVHlwZSByZXNwb25zZVR5cGUs
IElzQXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIAotICAgIGNvbnN0IGNoYXIqIGpzID0gbnVsbHB0cjsK
KyAgICBBU0NJSUxpdGVyYWwganM7CiAgICAgY29uc3QgY2hhciogZXhwZWN0ZWRBbGVydCA9IG51
bGxwdHI7CiAKICAgICBzd2l0Y2ggKHJlc3BvbnNlVHlwZSkgewogICAgIGNhc2UgUmVzcG9uc2VU
eXBlOjpTeW50aGV0aWM6Ci0gICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcignZmV0
Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNlKG5ldyBCbG9i
KFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0PiddLCB7dHlw
ZTogJ3RleHQvaHRtbCd9KSkpOyB9KSI7CisgICAgICAgIGpzID0gInNlbGYuYWRkRXZlbnRMaXN0
ZW5lcignZmV0Y2gnLCAoZXZlbnQpID0+IHsgZXZlbnQucmVzcG9uZFdpdGgobmV3IFJlc3BvbnNl
KG5ldyBCbG9iKFsnPHNjcmlwdD5hbGVydChcInN5bnRoZXRpYyByZXNwb25zZVwiKTwvc2NyaXB0
PiddLCB7dHlwZTogJ3RleHQvaHRtbCd9KSkpOyB9KSJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVy
dCA9ICJzeW50aGV0aWMgcmVzcG9uc2UiOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlc3Bv
bnNlVHlwZTo6RmV0Y2hlZDoKLSAgICAgICAganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdm
ZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgnL2ZldGNoZWQuaHRt
bCcpKSB9KTsiOworICAgICAgICBqcyA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ2ZldGNoJywg
KGV2ZW50KSA9PiB7IGV2ZW50LnJlc3BvbmRXaXRoKGZldGNoKCcvZmV0Y2hlZC5odG1sJykpIH0p
OyJfczsKICAgICAgICAgZXhwZWN0ZWRBbGVydCA9ICJmZXRjaGVkIGZyb20gc2VydmVyIjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2
ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5q
cyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwganMg
fSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hl
ZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsgbWFpblNX
Qnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAiL2ZldGNo
ZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3Jp
cHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwpA
QCAtMzY5LDEzICszNjksMTMgQEAgVEVTVChBcHBQcml2YWN5UmVwb3J0LCBNdWx0aXBsZVdlYlZp
ZXdzV2l0aFNoYXJlZFNlcnZpY2VXb3JrZXIpCiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwogCi0gICAgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRjaCgn
L2ZldGNoZWQuaHRtbCcpKSB9KSI7CisgICAgY29uc3RleHByIGF1dG8ganMgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChmZXRj
aCgnL2ZldGNoZWQuaHRtbCcpKSB9KSJfczsKICAgICBjb25zdCBjaGFyKiBleHBlY3RlZEFsZXJ0
ID0gImZldGNoZWQgZnJvbSBzZXJ2ZXIiOwogCiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzZXJ2ZXIoewotICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgIHsg
Ii9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
fSwganMgfSB9LAotICAgICAgICB7ICIvZmV0Y2hlZC5odG1sIiwgeyAiPHNjcmlwdD5hbGVydCgn
ZmV0Y2hlZCBmcm9tIHNlcnZlcicpPC9zY3JpcHQ+IiB9IH0sCisgICAgICAgIHsgIi8iX3MsIHsg
bWFpblNXQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiX3MsIHsge3sgIkNvbnRlbnQtVHlw
ZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0sIGpzIH0gfSwKKyAgICAgICAgeyAi
L2ZldGNoZWQuaHRtbCJfcywgeyAiPHNjcmlwdD5hbGVydCgnZmV0Y2hlZCBmcm9tIHNlcnZlcicp
PC9zY3JpcHQ+Il9zIH0gfSwKICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90
b2NvbDo6SHR0cHMpOwogCiAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKQEAgLTQ1MiwxMiArNDUyLDEyIEBAIHN0YXRpYyB2b2lkIHNvZnRVcGRhdGVUZXN0KElz
QXBwSW5pdGlhdGVkIGlzQXBwSW5pdGlhdGVkKQogICAgIHdlYlZpZXcyLmdldCgpLm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwogCiAgICAgdWludDE2X3Qgc2VydmVyUG9ydDsK
LSAgICBzdGF0aWMgY29uc3QgY2hhcioganMgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRj
aCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2Io
Wyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJlc3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBl
OiAndGV4dC9odG1sJ30pKSk7IH0pIjsKKyAgICBzdGF0aWMgY29uc3RleHByIGF1dG8ganMgPSAi
c2VsZi5hZGRFdmVudExpc3RlbmVyKCdmZXRjaCcsIChldmVudCkgPT4geyBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UobmV3IEJsb2IoWyc8c2NyaXB0PmFsZXJ0KFwic3ludGhldGljIHJl
c3BvbnNlXCIpPC9zY3JpcHQ+J10sIHt0eXBlOiAndGV4dC9odG1sJ30pKSk7IH0pIl9zOwogCiAg
ICAgewogICAgICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcjEoewotICAgICAg
ICAgICAgeyAiLyIsIHsgbWFpblNXQnl0ZXMgfSB9LAotICAgICAgICAgICAgeyAiL3N3LmpzIiwg
eyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBqcyB9IH0s
CisgICAgICAgICAgICB7ICIvIl9zLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgICAgIHsg
Ii9zdy5qcyJfcywgeyB7eyAiQ29udGVudC1UeXBlIl9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlw
dCJfcyB9fSwganMgfSB9LAogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eSgpKTsKICAgICAgICAgc2VydmVy
UG9ydCA9IHNlcnZlcjEucG9ydCgpOwogCkBAIC00NzYsOCArNDc2LDggQEAgc3RhdGljIHZvaWQg
c29mdFVwZGF0ZVRlc3QoSXNBcHBJbml0aWF0ZWQgaXNBcHBJbml0aWF0ZWQpCiAKICAgICB7CiAg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyMih7Ci0gICAgICAgICAgICB7
ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCi0gICAgICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJD
b250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIGpzIH0gfQorICAgICAg
ICAgICAgeyAiLyJfcywgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgICAgICB7ICIvc3cuanMi
X3MsIHsge3sgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfX0s
IGpzIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6
SHR0cHMsIG51bGxwdHIsIHRlc3RJZGVudGl0eTIoKSwgc2VydmVyUG9ydCk7CiAKICAgICAgICAg
TlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdDIgPSBbTlNNdXRhYmxlVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlcjIucG9ydCgpXV1dOwpAQCAtNTU4LDcg
KzU1OCw3IEBAIFRFU1QoQXBwUHJpdmFjeVJlcG9ydCwgV2ViUHJvY2Vzc1BsdWdpblRlc3ROb25B
cHBJbml0aWF0ZWQpCiAKICNpZiBXS19IQVZFX0NfU1BJCiAKLXN0YXRpYyBjb25zdCBjaGFyKiBt
YWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIg
YXV0byBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSA9IFIiU1dSRVNPVVJDRSgKIDxzY3JpcHQ+CiAK
IGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC01ODksOSArNTg5LDkgQEAgdHJ5IHsKICAgICBsb2coJ0V4
Y2VwdGlvbjogJyArIGUpOwogfQogPC9zY3JpcHQ+Ci0pU1dSRVNPVVJDRSI7CispU1dSRVNPVVJD
RSJfczsKIAotc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlID0gUiJT
V1JFU09VUkNFKAorc3RhdGljIGNvbnN0ZXhwciBhdXRvIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVl
ID0gUiJTV1JFU09VUkNFKAogc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMg
KGV2ZW50KSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykgewogICAgICAgICBldmVudC5z
b3VyY2UucG9zdE1lc3NhZ2UoJ05vIGludGVybmFscycpOwpAQCAtNjIwLDcgKzYyMCw3IEBAIGFz
eW5jIGZ1bmN0aW9uIHF1ZXJ5QXBwUHJpdmFjeVJlcG9ydFZhbHVlKGV2ZW50LCBoYXZlU2VudElu
aXRpYWxNZXNzYWdlKQogICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgnbm9uIGFwcCBpbml0
aWF0ZWQnKTsKIH0KIAotKVNXUkVTT1VSQ0UiOworKVNXUkVTT1VSQ0UiX3M7CiAKIAogc3RhdGlj
IFN0cmluZyBleHBlY3RlZE1lc3NhZ2U7CkBAIC02NjYsOCArNjY2LDggQEAgVEVTVChBcHBQcml2
YWN5UmVwb3J0LCBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRVcGRhdGVzQXBwSW5pdGlhdGVk
VmFsdWUpCiAgICAgd2ViVmlldzIuZ2V0KCkubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGUu
Z2V0KCk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7Ci0gICAgICAg
IHsgIi9tYWluLmh0bWwiLCB7IG1haW5TV0J5dGVzRGVmYXVsdFZhbHVlIH0gfSwKLSAgICAgICAg
eyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9IH0sIHNjcmlwdEJ5dGVzRGVmYXVsdFZhbHVlIH0gfSwKKyAgICAgICAgeyAiL21haW4uaHRt
bCJfcywgeyBtYWluU1dCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCisgICAgICAgIHsgIi9zdy5qcyJf
cywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiX3MgfSB9
LCBzY3JpcHRCeXRlc0RlZmF1bHRWYWx1ZSB9IH0sCiAgICAgfSk7CiAKICAgICAvLyBMb2FkIFdl
YlZpZXcgd2l0aCBhbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3QuIFdlIGV4cGVjdCB0aGUgU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5IHRvIGJlIGFwcCBpbml0aWF0ZWQuCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EZXZpY2VPcmllbnRhdGlvbi5t
bQppbmRleCBjZGI5MTA0YWViNWZkMDFjYTVlNzE0ODBlYmExOTQ5Njc0N2U2MmVmLi4zMjRiZDAy
NDY4ZWIzZmQyYjBhNWQ5MzgzZWI3MDYxMmI5MTc2ZmUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RldmljZU9yaWVudGF0aW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGV2aWNlT3JpZW50YXRpb24ubW0K
QEAgLTMxNyw3ICszMTcsNyBAQCBURVNUKERldmljZU9yaWVudGF0aW9uLCBGaXJlT3JpZW50YXRp
b25FdmVudHNSaWdodEF3YXlJZlBlcm1pc3Npb25BbHJlYWR5R3JhbnRlZAogICAgIEVYUEVDVF9X
S19TVFJFUShAInJlY2VpdmVkLWV2ZW50IiwgcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVsxXSk7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKK3N0YXRp
YyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKIDxzY3JpcHQ+CiAK
IGZ1bmN0aW9uIGxvZyhtc2cpCkBAIC0zMzIsMTIgKzMzMiwxMiBAQCBmdW5jdGlvbiByZXF1ZXN0
UGVybWlzc2lvbigpIHsKIH0KIAogPC9zY3JpcHQ+Ci0pVEVTVFJFU09VUkNFIjsKKylURVNUUkVT
T1VSQ0UiX3M7CiAKIFRFU1QoRGV2aWNlT3JpZW50YXRpb24sIFBlcm1pc3Npb25TZWN1cmVDb250
ZXh0Q2hlY2spCiB7CiAgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoewotICAg
ICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9CisgICAgICAgIHsgIi8iX3MsIHsgbWFpbkJ5dGVz
IH0gfQogICAgIH0pOwogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS53
ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXTsK
QEAgLTM5NSwyMyArMzk1LDIzIEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyByZXF1ZXN0RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25QZXJtaXNzaW9uCiB9CiBAZW5kCiAK
LXN0YXRpYyBjb25zdCBjaGFyKiBtYWluRnJhbWVUZXh0ID0gUiJET0NET0NET0MoCitzdGF0aWMg
Y29uc3RleHByIGF1dG8gbWFpbkZyYW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+
CiA8aWZyYW1lIHNyYz0naHR0cHM6Ly8xMjcuMC4wLjE6OTA5MS9mcmFtZScgYWxsb3c9J2FjY2Vs
ZXJvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MTtneXJvc2NvcGU6aHR0cHM6Ly8xMjcuMC4w
LjE6OTA5MTttYWduZXRvbWV0ZXI6aHR0cHM6Ly8xMjcuMC4wLjE6OTA5MSc+PC9pZnJhbWU+CiA8
L2JvZHk+PC9odG1sPgotKURPQ0RPQ0RPQyI7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhbWVUZXh0
ID0gUiJET0NET0NET0MoCispRE9DRE9DRE9DIl9zOworc3RhdGljIGNvbnN0ZXhwciBhdXRvIGZy
YW1lVGV4dCA9IFIiRE9DRE9DRE9DKAogPGh0bWw+PGJvZHk+PC9ib2R5PjwvaHRtbD4KLSlET0NE
T0NET0MiOworKURPQ0RPQ0RPQyJfczsKIAogVEVTVChXZWJLaXQsIERldmljZU9yaWVudGF0aW9u
UGVybWlzc2lvbkluSUZyYW1lKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2Vy
dmVyMSh7Ci0gICAgICAgIHsgIi8iLCB7IG1haW5GcmFtZVRleHQgfSB9CisgICAgICAgIHsgIi8i
X3MsIHsgbWFpbkZyYW1lVGV4dCB9IH0KICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
OjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51bGxwdHIsIDkwOTApOwogCiAgICAgVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIyKHsKLSAgICAgICAgeyAiL2ZyYW1lIiwgeyBmcmFt
ZVRleHQgfSB9LAorICAgICAgICB7ICIvZnJhbWUiX3MsIHsgZnJhbWVUZXh0IH0gfSwKICAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIG51bGxwdHIsIG51
bGxwdHIsIDkwOTEpOwogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQpp
bmRleCA4NWY3ZDg5ZGJkODFlNDZmMzUwNmQ0NjZjYzk3YTZkMzJjNGYwMjkwLi5mNmRiMTY3YTVi
ZDFjNzUwZjBhZThhNmVlN2Q1ZjVhOTMyOGZhNWZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1t
CkBAIC0xMzEsMTQgKzEzMSwxNCBAQCBAZW5kCiBzdGF0aWMgdm9pZCBjbGVhblVwSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpCiB7CiAgICAgV2ViQ29yZTo6Y2xlYXJBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSAgICBXZWJDb3JlOjpzZXRBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXIoImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSIp
OworICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigiY29tLmFwcGxl
LldlYktpdC5UZXN0V2ViS2l0QVBJIl9zKTsKIH0KIAogc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUlu
QXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKQogewogICAgIFdURjo6aW5pdGlhbGl6ZU1h
aW5UaHJlYWQoKTsKICAgICBXZWJDb3JlOjpjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmll
clRlc3RpbmdPdmVycmlkZSgpOwotICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uQnVuZGxlSWRl
bnRpZmllcigiaW5BcHBCcm93c2VyUHJpdmFjeVRlc3RJZGVudGlmaWVyIik7CisgICAgV2ViQ29y
ZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCJpbkFwcEJyb3dzZXJQcml2YWN5VGVz
dElkZW50aWZpZXIiX3MpOwogfQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIE5vbkFwcEJv
dW5kRG9tYWluRmFpbGVkVXNlclNjcmlwdEF0U3RhcnQpCkBAIC04MjUsNyArODI1LDcgQEAgLSAo
dm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNl
ckNvbnRlbnRDb250cm9sbGVyIGQKIH0KIEBlbmQKIAotc3RhdGljIGNvbnN0IGNoYXIqIG1haW5C
eXRlcyA9IFIiU1dSRVNPVVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluQnl0ZXMgPSBS
IlNXUkVTT1VSQ0UoCiA8c2NyaXB0PgogCiBmdW5jdGlvbiBsb2cobXNnKQpAQCAtODUwLDkgKzg1
MCw5IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1
bmN0aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNF
Il9zOwogCi1zdGF0aWMgY29uc3QgY2hhciogbWFpblVucmVnaXN0ZXJCeXRlcyA9IFIiU1dSRVNP
VVJDRSgKK3N0YXRpYyBjb25zdGV4cHIgYXV0byBtYWluVW5yZWdpc3RlckJ5dGVzID0gUiJTV1JF
U09VUkNFKAogPHNjcmlwdD4KIAogZnVuY3Rpb24gbG9nKG1zZykKQEAgLTg3NSwxNSArODc1LDE1
IEBAIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGZ1bmN0
aW9uKHJlZykgewogfQogCiA8L3NjcmlwdD4KLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9z
OwogCi1zdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitzdGF0
aWMgY29uc3RleHByIGF1dG8gc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCiAKIHNlbGYuYWRk
RXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewogICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiU2VydmljZVdvcmtlciByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwogfSk7
CiAKLSlTV1JFU09VUkNFIjsKKylTV1JFU09VUkNFIl9zOwogCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFwcEJvdW5kRG9tYWluQWxsb3dzU2VydmljZVdvcmtlcnMpCiB7CkBAIC04OTksOCAr
ODk5LDggQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1Nl
cnZpY2VXb3JrZXJzKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVy
IHNlcnZlcih7Ci0gICAgICAgIHsgIi9tYWluLmh0bWwiLCB7IG1haW5CeXRlcyB9IH0sCi0gICAg
ICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAgICAgIHsgIi9tYWluLmh0bWwiX3MsIHsg
bWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIl9zLCB7IHsgeyAiQ29udGVudC1UeXBl
Il9zLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCJfcyB9IH0sIHNjcmlwdEJ5dGVzIH0gfSwKICAg
ICB9KTsKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRz
Rm9yQWxsT3JpZ2luc107CkBAIC05MTMsNyArOTEzLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2
YWN5LCBBcHBCb3VuZERvbWFpbkFsbG93c1NlcnZpY2VXb3JrZXJzKQogICAgIGlzRG9uZSA9IGZh
bHNlOwogICAgIAogICAgIC8vIEV4cGVjdCB0aGUgc2VydmljZSB3b3JrZXIgbG9hZCB0byBjb21w
bGV0ZSBzdWNjZXNzZnVsbHkuCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3
b3JrZXI6IFNlcnZpY2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRv
bWFpbiI7CisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIk1lc3NhZ2UgZnJvbSB3b3JrZXI6IFNlcnZp
Y2VXb3JrZXIgcmVjZWl2ZWQ6IEhlbGxvIGZyb20gYW4gYXBwLWJvdW5kIGRvbWFpbiJfczsKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdFdpdGhMb2NhbGhvc3QoIi9tYWlu
Lmh0bWwiKV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlz
RG9uZSA9IGZhbHNlOwpAQCAtOTU2LDggKzk1Niw4IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgVW5yZWdpc3RlclNlcnZpY2VXb3JrZXIpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiL21haW4uaHRtbCIsIHsgbWFpblVu
cmVnaXN0ZXJCeXRlcyB9IH0sCi0gICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5
cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9tYWluLmh0bWwiX3MsIHsgbWFpblVucmVnaXN0ZXJCeXRlcyB9IH0sCisgICAgICAg
IHsgIi9zdy5qcyJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgImFwcGxpY2F0aW9uL2phdmFz
Y3JpcHQiX3MgfSB9LCBzY3JpcHRCeXRlcyB9IH0sCiAgICAgfSk7CiAKICAgICBbV0tXZWJzaXRl
RGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwpAQCAtOTY3
LDcgKzk2Nyw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgVW5yZWdpc3RlclNlcnZpY2VX
b3JrZXIpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwogCi0gICAgZXhwZWN0ZWRNZXNzYWdlID0gIlVucmVnaXN0cmF0aW9uIHN1Y2Nl
c3MiOworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJVbnJlZ2lzdHJhdGlvbiBzdWNjZXNzIl9zOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0V2l0aExvY2FsaG9zdCgiL21h
aW4uaHRtbCIpXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGJmNDgyZTNhYjhjYmE1NTg5ZWY0NjRk
ZTRmZWFkZGY0OWU1ZjhlYTguLjViY2VhODEwOTNjZmVlNWY4ODJmZjY5NmY1ODZmOTI2OTg3OGJk
MTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtODMxNyw4ICs4MzE3LDgg
QEAgVEVTVChQcm9jZXNzU3dhcCwgQ29udGVudE1vZGVJbkNhc2VPZkNvb3BQcm9jZXNzU3dhcCkK
ICAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKIAogICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKLSAgICAgICAgeyAiL3NvdXJjZS5odG1sIiwgeyAiZm9vIiB9IH0sCi0gICAgICAgIHsg
Ii9kZXN0aW5hdGlvbi5odG1sIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJ0ZXh0L2h0bWwiIH0s
IHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IiwgInNhbWUtb3JpZ2luIiB9IH0sICJiYXIi
IH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5odG1sIl9zLCB7ICJmb28iX3MgfSB9LAorICAgICAg
ICB7ICIvZGVzdGluYXRpb24uaHRtbCJfcywgeyB7IHsgIkNvbnRlbnQtVHlwZSJfcywgInRleHQv
aHRtbCJfcyB9LCB7ICJDcm9zcy1PcmlnaW4tT3BlbmVyLVBvbGljeSJfcywgInNhbWUtb3JpZ2lu
Il9zIH0gfSwgImJhciJfcyB9IH0sCiAgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBz
KTsKIAogICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gcHNvblByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbigpOwpAQCAtODM4OSwxMSArODM4OSwxMSBAQCBURVNUKFByb2Nlc3NTd2Fw
LCBDb250ZW50TW9kZUluQ2FzZU9mUFNPTlRoZW5Db29wUHJvY2Vzc1N3YXApCiAgICAgdXNpbmcg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjEoewotICAg
ICAgICB7ICIvc291cmNlLmh0bWwiLCB7ICJmb28iIH0gfSwKKyAgICAgICAgeyAiL3NvdXJjZS5o
dG1sIl9zLCB7ICJmb28iX3MgfSB9LAogICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRw
cyk7CiAKICAgICBIVFRQU2VydmVyIHNlcnZlcjIoewotICAgICAgICB7ICIvZGVzdGluYXRpb24u
aHRtbCIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAidGV4dC9odG1sIiB9LCB7ICJDcm9zcy1Pcmln
aW4tT3BlbmVyLVBvbGljeSIsICJzYW1lLW9yaWdpbiIgfSB9LCAiYmFyIiB9IH0sCisgICAgICAg
IHsgIi9kZXN0aW5hdGlvbi5odG1sIl9zLCB7IHsgeyAiQ29udGVudC1UeXBlIl9zLCAidGV4dC9o
dG1sIl9zIH0sIHsgIkNyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5Il9zLCAic2FtZS1vcmlnaW4i
X3MgfSB9LCAiYmFyIl9zIH0gfSwKICAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7
CiAKICAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IHBzb25Qcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24oKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAz
M2M4ZGJjNWI3MWUxYmJmOTIyYzExM2I0Y2M1ZGVjZGVhZWIzMmM5Li5mZGQ2NzA4NjgzZWJjYmVm
MjJlMDg1NjdmNzZiZTU5NmUxODBkZDM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBh
bmVsLm1tCkBAIC0yNDE2LDcgKzI0MTYsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWws
IERlbGV0ZU9uZUNyZWRlbnRpYWwpCiBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFJlY292
ZXJBZnRlckF1dGhOUHJvY2Vzc0NyYXNoKQogewogICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKLSAgICAgICAgeyAiLyIsIHsgIkZPTyJfc3RyIH0gfQorICAgICAgICB7ICIv
Il9zLCB7ICJGT08iX3MgfSB9CiAgICAgfSk7CiAKICAgICBhdXRvICpjb25maWd1cmF0aW9uID0g
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0lu
Q2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0Zv
clRlc3Rpbmc6WUVTXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0R0xpYi9UZXN0QXV0b21hdGlvblNlc3Npb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggOWE2OGU2ZTQ1
MWZlZjEzYmY1MDA3Y2IyZjAzNzY1MGFjMzNmZmRjMi4uMmYxOTUyYzI5ODliNDFmZDcwYWIxN2I5
NGU1ZDBiN2NhNzUwZjRmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTE5Miw3
ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY3JlYXRlV2ViVmlld1dhc0NhbGxlZCA9IGZh
bHNlOwogICAgICAgICBtX21lc3NhZ2UgPSBDU3RyaW5nKCk7CiAgICAgICAgIGF1dG8gc2lnbmFs
SUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fc2Vzc2lvbiwgImNyZWF0ZS13ZWItdmlldyIsIEdfQ0FM
TEJBQ0soY3JlYXRlV2ViVmlld0NhbGxiYWNrKSwgdGhpcyk7Ci0gICAgICAgIHNlbmRDb21tYW5k
VG9CYWNrZW5kKCJjcmVhdGVCcm93c2luZ0NvbnRleHQiKTsKKyAgICAgICAgc2VuZENvbW1hbmRU
b0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCJfcyk7CiAgICAgICAgIGdfbWFpbl9sb29w
X3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVlKG1fY3JlYXRl
V2ViVmlld1dhc0NhbGxlZCk7CkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgICAgICBt
X2NyZWF0ZVdlYlZpZXdJbldpbmRvd1dhc0NhbGxlZCA9IGZhbHNlOwogICAgICAgICBtX21lc3Nh
Z2UgPSB7IH07CiAgICAgICAgIGF1dG8gc2lnbmFsSUQgPSBnX3NpZ25hbF9jb25uZWN0KG1fc2Vz
c2lvbiwgImNyZWF0ZS13ZWItdmlldzo6d2luZG93IiwgR19DQUxMQkFDSyhjcmVhdGVXZWJWaWV3
SW5XaW5kb3dDYWxsYmFjayksIHRoaXMpOwotICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgi
Y3JlYXRlQnJvd3NpbmdDb250ZXh0IiwgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIldpbmRvd1wi
fSIpOworICAgICAgICBzZW5kQ29tbWFuZFRvQmFja2VuZCgiY3JlYXRlQnJvd3NpbmdDb250ZXh0
Il9zLCAie1wicHJlc2VudGF0aW9uSGludFwiOlwiV2luZG93XCJ9Il9zKTsKICAgICAgICAgZ19t
YWluX2xvb3BfcnVuKG1fbWFpbkxvb3AuZ2V0KCkpOwogICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QobV9zZXNzaW9uLCBzaWduYWxJRCk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUo
bV9jcmVhdGVXZWJWaWV3SW5XaW5kb3dXYXNDYWxsZWQpOwpAQCAtMjMwLDcgKzIzMCw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9jcmVhdGVXZWJWaWV3SW5UYWJXYXNDYWxsZWQgPSBmYWxzZTsKICAg
ICAgICAgbV9tZXNzYWdlID0geyB9OwogICAgICAgICBhdXRvIHNpZ25hbElEID0gZ19zaWduYWxf
Y29ubmVjdChtX3Nlc3Npb24sICJjcmVhdGUtd2ViLXZpZXc6OnRhYiIsIEdfQ0FMTEJBQ0soY3Jl
YXRlV2ViVmlld0luVGFiQ2FsbGJhY2spLCB0aGlzKTsKLSAgICAgICAgc2VuZENvbW1hbmRUb0Jh
Y2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29udGV4dCIsICJ7XCJwcmVzZW50YXRpb25IaW50XCI6XCJU
YWJcIn0iKTsKKyAgICAgICAgc2VuZENvbW1hbmRUb0JhY2tlbmQoImNyZWF0ZUJyb3dzaW5nQ29u
dGV4dCJfcywgIntcInByZXNlbnRhdGlvbkhpbnRcIjpcIlRhYlwifSJfcyk7CiAgICAgICAgIGdf
bWFpbl9sb29wX3J1bihtX21haW5Mb29wLmdldCgpKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxl
cl9kaXNjb25uZWN0KG1fc2Vzc2lvbiwgc2lnbmFsSUQpOwogICAgICAgICBnX2Fzc2VydF90cnVl
KG1fY3JlYXRlV2ViVmlld0luVGFiV2FzQ2FsbGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0U1NMLmNwcAppbmRleCA1MWM4MTUxYzkwYWEwZTgxMjVl
NGJhNTlmOWRkZTBiODU2ZWUzMWIzLi4wNTQwNTUzN2E3NTc0OGQwZmVmZjhkZjU4ZDQ2NTA2YjA2
ZDIxNWFlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIv
VGVzdFNTTC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rl
c3RTU0wuY3BwCkBAIC0yMzIsNyArMjMyLDcgQEAgcHVibGljOgogICAgICAgICBhc3NlcnRPYmpl
Y3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKGNlcnRpZmljYXRlKSk7CiAgICAg
ICAgIG1fY2VydGlmaWNhdGUgPSBjZXJ0aWZpY2F0ZTsKICAgICAgICAgbV90bHNFcnJvcnMgPSB0
bHNFcnJvcnM7Ci0gICAgICAgIG1fZmFpbGluZ1VSTCA9IFVSTCh7IH0sIGZhaWxpbmdVUkkpOwor
ICAgICAgICBtX2ZhaWxpbmdVUkwgPSBVUkwoU3RyaW5nIHsgZmFpbGluZ1VSSSB9KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdEdMaWIvVGVzdFVJQ2xpZW50LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0VUlDbGllbnQuY3BwCmluZGV4IDI4NGY4MDRiNjQxMDViODRi
Njc2MjgzNzhjZThjZjBjMTk3MmFjZjguLmI3YzFjYzFjNWM1M2I5NzA2ZWRkNGJjNGY3NzJjYTI5
NjNkMTM0MmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0R0xp
Yi9UZXN0VUlDbGllbnQuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
R0xpYi9UZXN0VUlDbGllbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgd2luZG93UHJvcGVydGllc05vdGlmeUNhbGxiYWNrKEdPYmplY3QqLCBHUGFy
YW1TcGVjKiBwYXJhbVNwZWMsIFVJQ2xpZW50VGVzdCogdGVzdCkKICAgICB7Ci0gICAgICAgIHRl
c3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuYWRkKGdfcGFyYW1fc3BlY19nZXRfbmFtZShw
YXJhbVNwZWMpKTsKKyAgICAgICAgdGVzdC0+bV93aW5kb3dQcm9wZXJ0aWVzQ2hhbmdlZC5hZGQo
U3RyaW5nIHsgZ19wYXJhbV9zcGVjX2dldF9uYW1lKHBhcmFtU3BlYykgfSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIFdlYktpdFdlYlZpZXcqIHZpZXdDcmVhdGVDYWxsYmFjayhXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBXZWJLaXROYXZpZ2F0aW9uQWN0aW9uKiBuYXZpZ2F0aW9uLCBVSUNsaWVudFRl
c3QqIHRlc3QpCkBAIC03NjAsMTEgKzc2MCwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2ViVmlld1dp
bmRvd1Byb3BlcnRpZXMoVUlDbGllbnRUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogICAgIHRl
c3QtPmxvYWRIdG1sKGh0bWxTdHJpbmcuZ2V0KCksIG51bGxwdHIpOwogICAgIHRlc3QtPndhaXRV
bnRpbE1haW5Mb29wRmluaXNoZXMoKTsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcm9wZXJ0
aWVzQ2hhbmdlZFtdID0geworICAgIHN0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb3Bl
cnRpZXNDaGFuZ2VkW10gPSB7CiAjaWYgUExBVEZPUk0oR1RLKQotICAgICAgICAiZ2VvbWV0cnki
LAorICAgICAgICAiZ2VvbWV0cnkiX3MsCiAjZW5kaWYKLSAgICAgICAgImxvY2F0aW9uYmFyLXZp
c2libGUiLCAibWVudWJhci12aXNpYmxlIiwgInN0YXR1c2Jhci12aXNpYmxlIiwgInRvb2xiYXIt
dmlzaWJsZSIsICJzY3JvbGxiYXJzLXZpc2libGUiCisgICAgICAgICJsb2NhdGlvbmJhci12aXNp
YmxlIl9zLCAibWVudWJhci12aXNpYmxlIl9zLCAic3RhdHVzYmFyLXZpc2libGUiX3MsICJ0b29s
YmFyLXZpc2libGUiX3MsICJzY3JvbGxiYXJzLXZpc2libGUiX3MKICAgICB9OwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTKHByb3BlcnRpZXNDaGFuZ2VkKTsgKytpKQog
ICAgICAgICBnX2Fzc2VydF90cnVlKHRlc3QtPm1fd2luZG93UHJvcGVydGllc0NoYW5nZWQuY29u
dGFpbnMocHJvcGVydGllc0NoYW5nZWRbaV0pKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdEdMaWIvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCmluZGV4IDQw
ZWFlYjdiZjI3YTRiODRkNzMwYjQzOWY3MWY2OTZiZWRjZWZiMTEuLmM1NjkwMmEyMjk3MDcyMmQz
Y2MxMTZiYmEzMTBkZGI2YjQzZGU4OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0R0xpYi9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRHTGliL1Rlc3RXZWJFeHRlbnNpb25zLmNwcApAQCAtNDc2LDcg
KzQ3Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25QYWdlSUQoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiAgICAgLy8gUmVnaXN0ZXIgYSBjdXN0b20gVVJJIHNjaGVt
ZSB0byB0ZXN0IGhpc3RvcnkgbmF2aWdhdGlvbi4KICAgICB3ZWJraXRfd2ViX2NvbnRleHRfcmVn
aXN0ZXJfdXJpX3NjaGVtZSh0ZXN0LT5tX3dlYkNvbnRleHQuZ2V0KCksICJmb28iLAogICAgICAg
ICBbXShXZWJLaXRVUklTY2hlbWVSZXF1ZXN0KiByZXF1ZXN0LCBncG9pbnRlcikgewotICAgICAg
ICAgICAgVVJMIHVybCA9IFVSTCh7IH0sIHdlYmtpdF91cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3Vy
aShyZXF1ZXN0KSk7CisgICAgICAgICAgICBVUkwgdXJsID0gVVJMKFN0cmluZyB7IHdlYmtpdF91
cmlfc2NoZW1lX3JlcXVlc3RfZ2V0X3VyaShyZXF1ZXN0KSB9KTsKICAgICAgICAgICAgIEdSZWZQ
dHI8R0lucHV0U3RyZWFtPiBpbnB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX21lbW9yeV9pbnB1dF9z
dHJlYW1fbmV3KCkpOwogICAgICAgICAgICAgY2hhciogaHRtbCA9IGdfc3RyZHVwX3ByaW50Zigi
PGh0bWw+PGhlYWQ+PHRpdGxlPiVzPC90aXRsZT48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4i
LCB1cmwuaG9zdCgpID09ICJob3N0NSIgPyAiVGl0bGU1IiA6ICJUaXRsZTYiKTsKICAgICAgICAg
ICAgIGdfbWVtb3J5X2lucHV0X3N0cmVhbV9hZGRfZGF0YShHX01FTU9SWV9JTlBVVF9TVFJFQU0o
aW5wdXRTdHJlYW0uZ2V0KCkpLCBodG1sLCBzdHJsZW4oaHRtbCksIGdfZnJlZSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2dsaWIvV2ViS2l0R0xpYi9XZWJLaXRUZXN0U2VydmVy
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2
ZXIuY3BwCmluZGV4IGYwYmQ4NjY1ZjcwYTBkNDUxNGYxZDFkMDg5MDVmNWFjMmViOTQxMjkuLjI4
MDM0MTE0MGYwMmY4NGY3OTQ5NGVlYzRiN2UzNmIxMWMwOTlkODMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvZ2xpYi9XZWJLaXRHTGliL1dlYktpdFRlc3RTZXJ2ZXIuY3Bw
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViS2l0VGVzdFNlcnZlcjo6cnVuKFNvdXBTZXJ2ZXJD
YWxsYmFjayBzZXJ2ZXJDYWxsYmFjaykKIAogdm9pZCBXZWJLaXRUZXN0U2VydmVyOjphZGRXZWJT
b2NrZXRIYW5kbGVyKFNvdXBTZXJ2ZXJXZWJzb2NrZXRDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50
ZXIgdXNlckRhdGEpCiB7Ci0gICAgbV9iYXNlV2ViU29ja2V0VVJMID0gVVJMKG1fYmFzZVVSTCwg
Ii93ZWJzb2NrZXQvIik7CisgICAgbV9iYXNlV2ViU29ja2V0VVJMID0gVVJMKG1fYmFzZVVSTCwg
Ii93ZWJzb2NrZXQvIl9zKTsKICAgICBtX2Jhc2VXZWJTb2NrZXRVUkwuc2V0UHJvdG9jb2wobV9i
YXNlV2ViU29ja2V0VVJMLnByb3RvY29sSXMoImh0dHAiKSA/ICJ3cyIgOiAid3NzIik7CiAKICAg
ICBpZiAobV9xdWV1ZSkgewpAQCAtMTAxLDEyICsxMDEsMTIgQEAgQ1N0cmluZyBXZWJLaXRUZXN0
U2VydmVyOjpnZXRXZWJTb2NrZXRVUklGb3JQYXRoKGNvbnN0IGNoYXIqIHBhdGgpIGNvbnN0CiB7
CiAgICAgZ19hc3NlcnRfZmFsc2UobV9iYXNlV2ViU29ja2V0VVJMLmlzTnVsbCgpKTsKICAgICBn
X2Fzc2VydF90cnVlKHBhdGggJiYgKnBhdGggPT0gJy8nKTsKLSAgICByZXR1cm4gVVJMKG1fYmFz
ZVdlYlNvY2tldFVSTCwgcGF0aCArIDEpLnN0cmluZygpLnV0ZjgoKTsgLy8gSWdub3JlIHRoZSBs
ZWFkaW5nIHNsYXNoLgorICAgIHJldHVybiBVUkwobV9iYXNlV2ViU29ja2V0VVJMLCBTdHJpbmcg
eyBwYXRoICsgMSB9KS5zdHJpbmcoKS51dGY4KCk7IC8vIElnbm9yZSB0aGUgbGVhZGluZyBzbGFz
aC4KIH0KIAogQ1N0cmluZyBXZWJLaXRUZXN0U2VydmVyOjpnZXRVUklGb3JQYXRoKGNvbnN0IGNo
YXIqIHBhdGgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFVSTChtX2Jhc2VVUkwsIHBhdGgpLnN0cmlu
ZygpLnV0ZjgoKTsKKyAgICByZXR1cm4gVVJMKG1fYmFzZVVSTCwgU3RyaW5nIHsgcGF0aCB9KS5z
dHJpbmcoKS51dGY4KCk7CiB9CiAKIHVuc2lnbmVkIFdlYktpdFRlc3RTZXJ2ZXI6OnBvcnQoKSBj
b25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVu
dE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5t
bQppbmRleCBmMjJjMzcyMjc5Njk0NGI1NmZhZjQ1YzgwNTBkNzQ0ZGI4NmEyOWY0Li45ODVkNDkx
NWM2YWI5MWYzM2NhOTA0MTc4YzNjNWQ0ZDQxMTQwYjkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQpAQCAtMTY5LDcgKzE2OSw3IEBAIEBl
bmQKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFZpZXdD
bGFzcz4KLVJldGFpblB0cjxWaWV3Q2xhc3M+IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRl
bnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9uRGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0Nv
bnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1Np
emUgc2l6ZSA9IENHU2l6ZU1ha2UoMTAyNCwgNzY4KSkKK1JldGFpblB0cjxWaWV3Q2xhc3M+IHNl
dFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZ1dpdGhvdXROYXZpZ2F0aW9u
RGVsZWdhdGUoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZhdWx0Q29udGVudE1vZGUg
PSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQg
PSB7ICJUZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZSBzaXplID0gQ0dTaXplTWFrZSgxMDI0LCA3
NjgpKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKGRlZmF1bHRDb250ZW50TW9kZSkKQEAg
LTE4Miw3ICsxODIsNyBAQCBSZXRhaW5QdHI8Vmlld0NsYXNzPiBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbgogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVmlld0NsYXNzPgotc3RkOjpwYWlyPFJldGFpblB0cjxWaWV3Q2xhc3M+LCBSZXRh
aW5QdHI8Q29udGVudE1vZGVOYXZpZ2F0aW9uRGVsZWdhdGU+PiBzZXRVcFdlYlZpZXdGb3JQcmVm
ZXJyZWRDb250ZW50TW9kZVRlc3Rpbmcoc3RkOjpvcHRpb25hbDxXS0NvbnRlbnRNb2RlPiBkZWZh
dWx0Q29udGVudE1vZGUgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBhcHBsaWNhdGlvbk5h
bWVGb3JVc2VyQWdlbnQgPSB7ICJUZXN0V2ViS2l0QVBJIiB9LCBDR1NpemUgc2l6ZSA9IENHU2l6
ZU1ha2UoMTAyNCwgNzY4KSkKK3N0ZDo6cGFpcjxSZXRhaW5QdHI8Vmlld0NsYXNzPiwgUmV0YWlu
UHRyPENvbnRlbnRNb2RlTmF2aWdhdGlvbkRlbGVnYXRlPj4gc2V0VXBXZWJWaWV3Rm9yUHJlZmVy
cmVkQ29udGVudE1vZGVUZXN0aW5nKHN0ZDo6b3B0aW9uYWw8V0tDb250ZW50TW9kZT4gZGVmYXVs
dENvbnRlbnRNb2RlID0geyB9LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gYXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50ID0geyAiVGVzdFdlYktpdEFQSSJfcyB9LCBDR1NpemUgc2l6ZSA9IENHU2l6
ZU1ha2UoMTAyNCwgNzY4KSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3RpbmdXaXRob3V0TmF2aWdhdGlvbkRlbGVnYXRlPFZpZXdD
bGFzcz4oZGVmYXVsdENvbnRlbnRNb2RlLCBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQsIHNp
emUpOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0NvbnRlbnRNb2Rl
TmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC0zNzIsNyArMzcyLDcgQEAgVEVT
VChQcmVmZXJyZWRDb250ZW50TW9kZSwgUmVjb21tZW5kZWRDb250ZW50TW9kZUF0VmFyaW91c1Zp
ZXdXaWR0aHMpCiB7CiAgICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlciBpUGFkVXNlckludGVy
ZmFjZTsKIAotICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRlXSA9IHNldFVwV2ViVmlld0ZvclBy
ZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+KHsgfSwgeyAiVGVzdFdlYktpdEFQ
SSIgfSwgQ0dTaXplWmVybyk7CisgICAgYXV0byBbd2ViVmlldywgZGVsZWdhdGVdID0gc2V0VXBX
ZWJWaWV3Rm9yUHJlZmVycmVkQ29udGVudE1vZGVUZXN0aW5nPFdLV2ViVmlldz4oeyB9LCB7ICJU
ZXN0V2ViS2l0QVBJIl9zIH0sIENHU2l6ZVplcm8pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAic2ltcGxlIiBhbmRFeHBlY3RFZmZlY3RpdmVDb250ZW50TW9kZTpXS0NvbnRlbnRN
b2RlRGVza3RvcCB3aXRoUG9saWN5RGVjaXNpb25IYW5kbGVyOm5pbF07CiAgICAgW1t3ZWJWaWV3
IG5hdmlnYXRvclVzZXJBZ2VudF0gc2hvdWxkQ29udGFpblN0cmluZ3M6QCJNb3ppbGxhLzUuMCAo
TWFjaW50b3NoIiwgQCJUZXN0V2ViS2l0QVBJIiwgbmlsXTsKIApAQCAtNDE5LDcgKzQxOSw3IEBA
IFRFU1QoUHJlZmVycmVkQ29udGVudE1vZGUsIEFwcGxpY2F0aW9uTmFtZUZvckRlc2t0b3BVc2Vy
QWdlbnQpCiAgICAgfQogICAgIHsKICAgICAgICAgLy8gTWFudWFsbHkgc2V0IHRoZSBhcHBsaWNh
dGlvbiBuYW1lIGZvciB1c2VyIGFnZW50IHRvIHRoZSBkZWZhdWx0IHZhbHVlLCBNb2JpbGUvMTVF
MTQ4LgotICAgICAgICBhdXRvIFt3ZWJWaWV3LCBkZWxlZ2F0ZV0gPSBzZXRVcFdlYlZpZXdGb3JQ
cmVmZXJyZWRDb250ZW50TW9kZVRlc3Rpbmc8V0tXZWJWaWV3PihXS0NvbnRlbnRNb2RlRGVza3Rv
cCwgeyAiTW9iaWxlLzE1RTE0OCIgfSk7CisgICAgICAgIGF1dG8gW3dlYlZpZXcsIGRlbGVnYXRl
XSA9IHNldFVwV2ViVmlld0ZvclByZWZlcnJlZENvbnRlbnRNb2RlVGVzdGluZzxXS1dlYlZpZXc+
KFdLQ29udGVudE1vZGVEZXNrdG9wLCB7ICJNb2JpbGUvMTVFMTQ4Il9zIH0pOwogICAgICAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSIgd2l0aFBvbGljeURlY2lzaW9uSGFu
ZGxlcjpuaWxdOwogICAgICAgICBOU1N0cmluZyAqdXNlckFnZW50ID0gW3dlYlZpZXcgbmF2aWdh
dG9yVXNlckFnZW50XTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3VzZXJBZ2VudCBjb250YWluc1N0
cmluZzpAIk1vYmlsZSJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0c3BpLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRzcGkvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0c3BpLmNwcAppbmRleCA4Y2QyMmU0ZDM3MmE1OWM2ODczOTYyOGJiZTllYjU4ZjVlYzE3
YzM2Li44OTVmMmU2OTkwMzU3MmM2NzhjN2E2MjU3MmQyMmM3MWVkYTgxNjc5IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0c3BpL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdHNwaS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdHNwaS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRzcGkuY3BwCkBAIC0zOTgsMTgg
KzM5OCwxOCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZQogICAgIG1fZWxlbWVudC0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7CiAgICAgYXV0byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYUGxhY2Vob2xkZXJWYWx1ZSIpCi0g
ICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJw
bGFjZWhvbGRlci10ZXh0IikpLmxlYWtSZWYoKTsKKyAgICAgICAgcmV0dXJuIE9wYXF1ZUpTU3Ry
aW5nOjp0cnlDcmVhdGUoYXR0cmlidXRlcy5nZXQoInBsYWNlaG9sZGVyLXRleHQiX3MpKS5sZWFr
UmVmKCk7CiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYSW52YWxpZCIpIHsKICAgICAgICAg
YXV0byB0ZXh0QXR0cmlidXRlcyA9IG1fZWxlbWVudC0+dGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAg
ICAgYXV0byB2YWx1ZSA9IHRleHRBdHRyaWJ1dGVzLmF0dHJpYnV0ZXMuZ2V0KCJpbnZhbGlkIik7
CisgICAgICAgIGF1dG8gdmFsdWUgPSB0ZXh0QXR0cmlidXRlcy5hdHRyaWJ1dGVzLmdldCgiaW52
YWxpZCJfcyk7CiAgICAgICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICB2YWx1
ZSA9IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudC5nZXQoKSwgV2ViQ29yZTo6QXRzcGk6OlN0
YXRlOjpJbnZhbGlkRW50cnkpID8gInRydWUiIDogImZhbHNlIjsKKyAgICAgICAgICAgIHZhbHVl
ID0gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LmdldCgpLCBXZWJDb3JlOjpBdHNwaTo6U3Rh
dGU6OkludmFsaWRFbnRyeSkgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfczsKICAgICAgICAgcmV0dXJu
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodmFsdWUpLmxlYWtSZWYoKTsKICAgICB9CiAgICAg
aWYgKGF0dHJpYnV0ZU5hbWUgPT0gIkFYQVJJQUxpdmUiKQotICAgICAgICByZXR1cm4gT3BhcXVl
SlNTdHJpbmc6OnRyeUNyZWF0ZShhdHRyaWJ1dGVzLmdldCgibGl2ZSIpKS5sZWFrUmVmKCk7Cisg
ICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJs
aXZlIl9zKSkubGVha1JlZigpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSZWxl
dmFudCIpCi0gICAgICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0
ZXMuZ2V0KCJyZWxldmFudCIpKS5sZWFrUmVmKCk7CisgICAgICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGF0dHJpYnV0ZXMuZ2V0KCJyZWxldmFudCJfcykpLmxlYWtSZWYoKTsK
IAogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwog
fQpAQCAtNDIwLDIxICs0MjAsMjEgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51
bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1lbnQt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVudC0+
YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXplIikK
LSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIikudG9Eb3VibGUoKTsKKyAg
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJzZXRzaXplIl9zKS50b0RvdWJsZSgpOwogICAg
IGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBh
dHRyaWJ1dGVzLmdldCgicG9zaW5zZXQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0
cmlidXRlcy5nZXQoInBvc2luc2V0Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEFSSUFDb2x1bW5Db3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdl
dCgiY29sY291bnQiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQo
ImNvbGNvdW50Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFS
SUFSb3dDb3VudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgicm93Y291bnQiKS50
b0RvdWJsZSgpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoInJvd2NvdW50Il9zKS50
b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFDb2x1bW5JbmRleCIp
Ci0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmdldCgiY29saW5kZXgiKS50b0RvdWJsZSgpOwor
ICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5nZXQoImNvbGluZGV4Il9zKS50b0RvdWJsZSgpOwog
ICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFSb3dJbmRleCIpCi0gICAgICAgIHJldHVy
biBhdHRyaWJ1dGVzLmdldCgicm93aW5kZXgiKS50b0RvdWJsZSgpOworICAgICAgICByZXR1cm4g
YXR0cmlidXRlcy5nZXQoInJvd2luZGV4Il9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1
dGVOYW1lID09ICJBWEFSSUFDb2x1bW5TcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMu
Z2V0KCJjb2xzcGFuIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0
KCJjb2xzcGFuIl9zKS50b0RvdWJsZSgpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFS
SUFSb3dTcGFuIikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIikudG9E
b3VibGUoKTsKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuZ2V0KCJyb3dzcGFuIl9zKS50b0Rv
dWJsZSgpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NDIsOCArNDQyLDggQEAgZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjdXJyZW50U3RhdGVWYWx1ZSgpIGNvbnN0CiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVCYWNr
aW5nU3RvcmUoKTsKLSAgICBhdXRvIHZhbHVlID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0
KCJjdXJyZW50Iik7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVl
LmlzTnVsbCgpID8gdmFsdWUgOiAiZmFsc2UiKS5sZWFrUmVmKCk7CisgICAgYXV0byB2YWx1ZSA9
IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiY3VycmVudCJfcyk7CisgICAgcmV0dXJuIE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoIXZhbHVlLmlzTnVsbCgpID8gdmFsdWUgOiAiZmFsc2Ui
X3MpLmxlYWtSZWYoKTsKIH0KIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QK
QEAgLTUxNCw3ICs1MTQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRy
aWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgaWYgKGF0dHJpYnV0ZU5hbWUg
PT0gIkFYSW50ZXJmYWNlVGFibGVDZWxsIikKICAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+aW50
ZXJmYWNlcygpLmNvbnRhaW5zKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaTo6SW50
ZXJmYWNlOjpUYWJsZUNlbGwpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9t
aWMiKQotICAgICAgICByZXR1cm4gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJhdG9taWMi
KSA9PSAidHJ1ZSI7CisgICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQo
ImF0b21pYyJfcykgPT0gInRydWUiOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtNTM2LDcg
KzUzNiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJs
ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgYXV0
byBhdHRyaWJ1dGVzID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCk7Ci0gICAgU3RyaW5nIGlzUmVh
ZE9ubHkgPSBhdHRyaWJ1dGVzLmdldCgicmVhZG9ubHkiKTsKKyAgICBTdHJpbmcgaXNSZWFkT25s
eSA9IGF0dHJpYnV0ZXMuZ2V0KCJyZWFkb25seSJfcyk7CiAgICAgaWYgKCFpc1JlYWRPbmx5Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGlzUmVhZE9ubHkgPT0gInRydWUiID8gZmFsc2UgOiB0
cnVlOwogCkBAIC01NzMsMTcgKzU3MywxNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzQXR0cmlidXRlU3VwcG9ydGVkKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKICAgICBtX2VsZW1l
bnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gYXR0cmlidXRlcyA9IG1fZWxlbWVu
dC0+YXR0cmlidXRlcygpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFTZXRTaXpl
IikKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUiKTsKKyAgICAg
ICAgcmV0dXJuIGF0dHJpYnV0ZXMuY29udGFpbnMoInNldHNpemUiX3MpOwogICAgIGlmIChhdHRy
aWJ1dGVOYW1lID09ICJBWEFSSUFQb3NJblNldCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVz
LmNvbnRhaW5zKCJwb3NpbnNldCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlu
cygicG9zaW5zZXQiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFMaXZlIikg
ewotICAgICAgICBhdXRvIHZhbHVlID0gYXR0cmlidXRlcy5nZXQoImxpdmUiKTsKKyAgICAgICAg
YXV0byB2YWx1ZSA9IGF0dHJpYnV0ZXMuZ2V0KCJsaXZlIl9zKTsKICAgICAgICAgcmV0dXJuICF2
YWx1ZS5pc0VtcHR5KCkgJiYgdmFsdWUgIT0gIm9mZiI7CiAgICAgfQogICAgIGlmIChhdHRyaWJ1
dGVOYW1lID09ICJBWEFSSUFSZWxldmFudCIpCi0gICAgICAgIHJldHVybiBhdHRyaWJ1dGVzLmNv
bnRhaW5zKCJyZWxldmFudCIpOworICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygi
cmVsZXZhbnQiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVOYW1lID09ICJBWEFSSUFBdG9taWMiKQot
ICAgICAgICByZXR1cm4gYXR0cmlidXRlcy5jb250YWlucygiYXRvbWljIik7CisgICAgICAgIHJl
dHVybiBhdHRyaWJ1dGVzLmNvbnRhaW5zKCJhdG9taWMiX3MpOwogICAgIGlmIChhdHRyaWJ1dGVO
YW1lID09ICJBWEVsZW1lbnRCdXN5IikKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTU5OCwy
NyArNTk4LDI3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQogc3RhdGljIFN0cmluZyB4bWxSb2xl
VmFsdWVTdHJpbmcoY29uc3QgU3RyaW5nJiB4bWxSb2xlcykKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IHJlZ2lv
blJvbGVzID0gSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4oewotICAg
ICAgICAiZG9jLWFja25vd2xlZGdtZW50cyIsCi0gICAgICAgICJkb2MtYWZ0ZXJ3b3JkIiwKLSAg
ICAgICAgImRvYy1hcHBlbmRpeCIsCi0gICAgICAgICJkb2MtYmlibGlvZ3JhcGh5IiwKLSAgICAg
ICAgImRvYy1jaGFwdGVyIiwKLSAgICAgICAgImRvYy1jb25jbHVzaW9uIiwKLSAgICAgICAgImRv
Yy1jcmVkaXRzIiwKLSAgICAgICAgImRvYy1lbmRub3RlcyIsCi0gICAgICAgICJkb2MtZXBpbG9n
dWUiLAotICAgICAgICAiZG9jLWVycmF0YSIsCi0gICAgICAgICJkb2MtZm9yZXdvcmQiLAotICAg
ICAgICAiZG9jLWdsb3NzYXJ5IiwKLSAgICAgICAgImRvYy1nbG9zc3JlZiIsCi0gICAgICAgICJk
b2MtaW5kZXgiLAotICAgICAgICAiZG9jLWludHJvZHVjdGlvbiIsCi0gICAgICAgICJkb2MtcGFn
ZWxpc3QiLAotICAgICAgICAiZG9jLXBhcnQiLAotICAgICAgICAiZG9jLXByZWZhY2UiLAotICAg
ICAgICAiZG9jLXByb2xvZ3VlIiwKLSAgICAgICAgImRvYy10b2MiLAotICAgICAgICAicmVnaW9u
IgorICAgICAgICAiZG9jLWFja25vd2xlZGdtZW50cyJfcywKKyAgICAgICAgImRvYy1hZnRlcndv
cmQiX3MsCisgICAgICAgICJkb2MtYXBwZW5kaXgiX3MsCisgICAgICAgICJkb2MtYmlibGlvZ3Jh
cGh5Il9zLAorICAgICAgICAiZG9jLWNoYXB0ZXIiX3MsCisgICAgICAgICJkb2MtY29uY2x1c2lv
biJfcywKKyAgICAgICAgImRvYy1jcmVkaXRzIl9zLAorICAgICAgICAiZG9jLWVuZG5vdGVzIl9z
LAorICAgICAgICAiZG9jLWVwaWxvZ3VlIl9zLAorICAgICAgICAiZG9jLWVycmF0YSJfcywKKyAg
ICAgICAgImRvYy1mb3Jld29yZCJfcywKKyAgICAgICAgImRvYy1nbG9zc2FyeSJfcywKKyAgICAg
ICAgImRvYy1nbG9zc3JlZiJfcywKKyAgICAgICAgImRvYy1pbmRleCJfcywKKyAgICAgICAgImRv
Yy1pbnRyb2R1Y3Rpb24iX3MsCisgICAgICAgICJkb2MtcGFnZWxpc3QiX3MsCisgICAgICAgICJk
b2MtcGFydCJfcywKKyAgICAgICAgImRvYy1wcmVmYWNlIl9zLAorICAgICAgICAiZG9jLXByb2xv
Z3VlIl9zLAorICAgICAgICAiZG9jLXRvYyJfcywKKyAgICAgICAgInJlZ2lvbiJfcwogICAgIH0p
OwogCiAgICAgaWYgKHJlZ2lvblJvbGVzLT5jb250YWlucyh4bWxSb2xlcykpCkBAIC03NjIsNyAr
NzYyLDcgQEAgc3RhdGljIFN0cmluZyByb2xlVmFsdWVUb1N0cmluZyh1bnNpZ25lZCByb2xlVmFs
dWUpCiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2Nyb2xsQmFyOgogICAgICAgICBy
ZXR1cm4gIkFYU2Nyb2xsQmFyIl9zOwogICAgIGNhc2UgV2ViQ29yZTo6QXRzcGk6OlJvbGU6OlNj
cm9sbFBhbmU6Ci0gICAgICAgIHJldHVybiAiQVhTY3JvbGxBcmVhIjsKKyAgICAgICAgcmV0dXJu
ICJBWFNjcm9sbEFyZWEiX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNwaTo6Um9sZTo6U2VjdGlv
bjoKICAgICAgICAgcmV0dXJuICJBWFNlY3Rpb24iX3M7CiAgICAgY2FzZSBXZWJDb3JlOjpBdHNw
aTo6Um9sZTo6U2VwYXJhdG9yOgpAQCAtODE3LDcgKzgxNyw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKIHsKICAgICBtX2VsZW1lbnQt
PnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIGF1dG8gcm9sZVZhbHVlID0gbV9lbGVtZW50LT5y
b2xlKCk7Ci0gICAgYXV0byByb2xlVmFsdWVTdHJpbmcgPSByb2xlVmFsdWUgPT0gV2ViQ29yZTo6
QXRzcGk6OlJvbGU6OkxhbmRtYXJrID8geG1sUm9sZVZhbHVlU3RyaW5nKG1fZWxlbWVudC0+YXR0
cmlidXRlcygpLmdldCgieG1sLXJvbGVzIikpIDogcm9sZVZhbHVlVG9TdHJpbmcocm9sZVZhbHVl
KTsKKyAgICBhdXRvIHJvbGVWYWx1ZVN0cmluZyA9IHJvbGVWYWx1ZSA9PSBXZWJDb3JlOjpBdHNw
aTo6Um9sZTo6TGFuZG1hcmsgPyB4bWxSb2xlVmFsdWVTdHJpbmcobV9lbGVtZW50LT5hdHRyaWJ1
dGVzKCkuZ2V0KCJ4bWwtcm9sZXMiX3MpKSA6IHJvbGVWYWx1ZVRvU3RyaW5nKHJvbGVWYWx1ZSk7
CiAgICAgaWYgKHJvbGVWYWx1ZVN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKG51bGxwdHIsIDApOwogCkBAIC04MzIsMTQgKzgzMiwx
NCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vi
cm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIGF1dG8gcm9sZURlc2NyaXB0aW9uID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0
KCJyb2xlZGVzY3JpcHRpb24iKTsKKyAgICBhdXRvIHJvbGVEZXNjcmlwdGlvbiA9IG1fZWxlbWVu
dC0+YXR0cmlidXRlcygpLmdldCgicm9sZWRlc2NyaXB0aW9uIl9zKTsKICAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShtYWtlU3RyaW5nKCJBWFJvbGVEZXNjcmlwdGlvbjogIiwg
cm9sZURlc2NyaXB0aW9uKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBt
X2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gY29tcHV0ZWRSb2xlID0g
bV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJjb21wdXRlZC1yb2xlIik7CisgICAgYXV0byBj
b21wdXRlZFJvbGUgPSBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImNvbXB1dGVkLXJvbGUi
X3MpOwogICAgIGlmIChjb21wdXRlZFJvbGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsKIApAQCAtOTcyLDcgKzk3Miw3
IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiAKICAg
ICAvLyBDb25zaWRlciBoZWFkaW5ncyBhcyBhbiBzcGVjaWFsIGNhc2Ugd2hlbiByZXR1cm5pbmcg
dGhlIGludCB2YWx1ZS4KICAgICBpZiAobV9lbGVtZW50LT5yb2xlKCkgPT0gV2ViQ29yZTo6QXRz
cGk6OlJvbGU6OkhlYWRpbmcpCi0gICAgICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMo
KS5nZXQoImxldmVsIikudG9Eb3VibGUoKTsKKyAgICAgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0
cmlidXRlcygpLmdldCgibGV2ZWwiX3MpLnRvRG91YmxlKCk7CiAKICAgICByZXR1cm4gMDsKIH0K
QEAgLTk5OSw3ICs5OTksNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCiB7CiAgICAgbV9lbGVtZW50LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX2VsZW1lbnQtPmF0dHJpYnV0
ZXMoKTsKLSAgICBhdXRvIHZhbHVlID0gbWFrZVN0cmluZygiQVhWYWx1ZURlc2NyaXB0aW9uOiAi
LCBhdHRyaWJ1dGVzLmdldCgidmFsdWV0ZXh0IikpOworICAgIGF1dG8gdmFsdWUgPSBtYWtlU3Ry
aW5nKCJBWFZhbHVlRGVzY3JpcHRpb246ICIsIGF0dHJpYnV0ZXMuZ2V0KCJ2YWx1ZXRleHQiX3Mp
KTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZSh2YWx1ZSkubGVha1JlZigp
OwogfQogCkBAIC0xMDc2LDcgKzEwNzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzSW5kZXRlcm1pbmF0ZSgpIGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGll
cmFyY2hpY2FsTGV2ZWwoKSBjb25zdAogewogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0
b3JlKCk7Ci0gICAgYXV0byBsZXZlbCA9IG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgibGV2
ZWwiKTsKKyAgICBhdXRvIGxldmVsID0gbV9lbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJsZXZl
bCJfcyk7CiAgICAgaWYgKGxldmVsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAg
LTEwOTEsMTMgKzEwOTEsMTMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNwZWFrQXMoKQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojphcmlh
SXNHcmFiYmVkKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVwZGF0ZUJhY2tpbmdTdG9yZSgp
OwotICAgIHJldHVybiBtX2VsZW1lbnQtPmF0dHJpYnV0ZXMoKS5nZXQoImdyYWJiZWQiKSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIG1fZWxlbWVudC0+YXR0cmlidXRlcygpLmdldCgiZ3JhYmJlZCJf
cykgPT0gInRydWUiOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QKIHsKICAgICBtX2VsZW1lbnQtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGF1dG8gZHJvcEVmZmVjdHMgPSBtX2VsZW1lbnQtPmF0
dHJpYnV0ZXMoKS5nZXQoImRyb3BlZmZlY3QiKTsKKyAgICBhdXRvIGRyb3BFZmZlY3RzID0gbV9l
bGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0KCJkcm9wZWZmZWN0Il9zKTsKICAgICBpZiAoZHJvcEVm
ZmVjdHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFj
dGVycyhudWxscHRyLCAwKTsKICAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShk
cm9wRWZmZWN0cykubGVha1JlZigpOwpAQCAtMTQyOSw3ICsxNDI5LDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQog
ICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycyhudWxscHRyLCAwKTsK
IAogICAgIG1fZWxlbWVudC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7Ci0gICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0ZSgiRW5jb2Rp
bmciKSkubGVha1JlZigpOworICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG1f
ZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIkVuY29kaW5nIl9zKSkubGVha1JlZigpOwogfQog
CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1l
bnRVUkkoKQpAQCAtMTQzOCw3ICsxNDM4LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKICAgICAgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMobnVsbHB0ciwgMCk7CiAKICAgICBtX2VsZW1lbnQtPnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KG1fZWxlbWVudC0+ZG9jdW1lbnRBdHRyaWJ1dGUoIlVSSSIpKS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUobV9lbGVtZW50LT5kb2N1bWVudEF0dHJpYnV0
ZSgiVVJJIl9zKSkubGVha1JlZigpOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvZ3RrL1VJU2NyaXB0Q29udHJvbGxlckd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9VSVNjcmlwdENvbnRyb2xsZXJHdGsuY3BwCmluZGV4IDAzNjY1MmVjMzg5OTlmNWYx
M2JhZjAwZTZjNWM5MGFhOTQ2NjI3M2EuLjJhODg1MjcxNGFlZmYxYTIxOWQxN2RhNTJmOGU1N2U3
ZWI2NWU5MTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvZ3RrL1VJU2NyaXB0
Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9ndGsvVUlTY3Jp
cHRDb250cm9sbGVyR3RrLmNwcApAQCAtMTg1LDExICsxODUsMTEgQEAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IHRvSlNPTk9iamVjdChHVmFyaWFudCogdmFyaWFudCkKICAgICB3aGlsZSAoZ192
YXJpYW50X2l0ZXJfbG9vcCgmaXRlciwgInsmc3Z9IiwgJmtleSwgJnZhbHVlKSkgewogICAgICAg
ICBjb25zdCBHVmFyaWFudFR5cGUqIHR5cGUgPSBnX3ZhcmlhbnRfZ2V0X3R5cGUodmFsdWUpOwog
ICAgICAgICBpZiAodHlwZSAmJiBnX3ZhcmlhbnRfdHlwZV9lcXVhbCh0eXBlLCBHX1ZBUklBTlRf
VFlQRV9WQVJESUNUKSkKLSAgICAgICAgICAgIGpzb25PYmplY3QtPnNldE9iamVjdChrZXksIHRv
SlNPTk9iamVjdCh2YWx1ZSkpOworICAgICAgICAgICAganNvbk9iamVjdC0+c2V0T2JqZWN0KFN0
cmluZyB7IGtleSB9LCB0b0pTT05PYmplY3QodmFsdWUpKTsKICAgICAgICAgZWxzZSBpZiAodHlw
ZSAmJiBnX3ZhcmlhbnRfdHlwZV9lcXVhbCh0eXBlLCBHX1ZBUklBTlRfVFlQRV9TVFJJTkcpKQot
ICAgICAgICAgICAganNvbk9iamVjdC0+c2V0U3RyaW5nKGtleSwgZ192YXJpYW50X2dldF9zdHJp
bmcodmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgICAgIGpzb25PYmplY3QtPnNldFN0cmluZyhT
dHJpbmcgeyBrZXkgfSwgU3RyaW5nIHsgZ192YXJpYW50X2dldF9zdHJpbmcodmFsdWUsIG51bGxw
dHIpIH0pOwogICAgICAgICBlbHNlIGlmICh0eXBlICYmIGdfdmFyaWFudF90eXBlX2VxdWFsKHR5
cGUsIEdfVkFSSUFOVF9UWVBFX0RPVUJMRSkpCi0gICAgICAgICAgICBqc29uT2JqZWN0LT5zZXRE
b3VibGUoa2V5LCBnX3ZhcmlhbnRfZ2V0X2RvdWJsZSh2YWx1ZSkpOworICAgICAgICAgICAganNv
bk9iamVjdC0+c2V0RG91YmxlKFN0cmluZyB7IGtleSB9LCBnX3ZhcmlhbnRfZ2V0X2RvdWJsZSh2
YWx1ZSkpOwogICAgIH0KICAgICByZXR1cm4ganNvbk9iamVjdDsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcAppbmRleCAxMjA0Y2I1MjhiYzZhODMxMGIyZWZjN2I2ZWQyMDVhYjhm
MWIyNDBiLi5jZjEzMWFlYmEwYWUzODY4OTM3ODM4NjBlZGZjODQxNTI0ZTE3ODhjIDEwMDY0NAot
LS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBDb21wYWN0UG9pbnRlclR1cGxlPFN0cmluZyos
IHVpbnQ4X3Q+IGV4YW1wbGVDb21wYWN0UG9pbnRlclR1cGxlTWF4VHlwZVZhbHVlIHsgJmFuOEJp
dFN0cmluZywgMjU1IH07CiAgICAgQ29tcGFjdFBvaW50ZXJUdXBsZTxTdHJpbmcqLCBib29sPiBl
eGFtcGxlQ29tcGFjdFBvaW50ZXJUdXBsZVNpbXBsZUJvb2wgeyAmYW44Qml0U3RyaW5nLCB0cnVl
IH07CiAgICAgCi0gICAgVVJMIGFVUkwoeyB9LCAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iKTsK
KyAgICBVUkwgYVVSTCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20iX3MpOwogCiAgICAgYnJlYWtG
b3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>